diff --git a/data/hindi/cpsAssets/india-60426858.json b/data/hindi/cpsAssets/india-60426858.json new file mode 100644 index 00000000000..8c89298162a --- /dev/null +++ b/data/hindi/cpsAssets/india-60426858.json @@ -0,0 +1,906 @@ +{ + "metadata": { + "id": "urn:bbc:ares::asset:hindi/india-60426858", + "locators": { + "assetUri": "/hindi/india-60426858", + "cpsUrn": "urn:bbc:content:assetUri:hindi/india-60426858", + "curie": "http://www.bbc.co.uk/asset/0a0b809a-4895-4895-97a0-9f41c8990b46", + "assetId": "60426858" + }, + "type": "STY", + "createdBy": "hindi-v6", + "language": "hi", + "lastUpdated": 1645190267868, + "firstPublished": 1645188671000, + "lastPublished": 1645188846000, + "timestamp": 1645188846000, + "options": { + "isIgorSeoTagsEnabled": false, + "includeComments": false, + "allowRightHandSide": true, + "isFactCheck": false, + "allowDateStamp": true, + "suitableForSyndication": true, + "hasNewsTracker": false, + "allowRelatedStoriesBox": true, + "isKeyContent": false, + "allowHeadline": true, + "allowAdvertising": true, + "hasContentWarning": false, + "isBreakingNews": false, + "allowPrintingSharingLinks": true + }, + "analyticsLabels": { + "ldp_tags": "Uttar+Pradesh+Legislative+Assembly+election+2022~Uttar+Pradesh~Gorakhpur+", + "cps_asset_id": "60426858", + "ldp_ids": "59f28e6e-ec4d-424f-84f0-94f832e0fbd4~7c657c38-57a4-4d98-b283-f3b6a8b16bd9~cc3c6abf-d22c-499a-bf69-1dfb9c86a828", + "contentId": "urn:bbc:cps:curie:asset:0a0b809a-4895-4895-97a0-9f41c8990b46", + "counterName": "hindi.india.story.60426858.page", + "cps_asset_type": "sty" + }, + "passport": { + "language": "hi", + "home": "http://www.bbc.co.uk/ontologies/passport/home/Hindi", + "locator": "urn:bbc:cps:curie:asset:0a0b809a-4895-4895-97a0-9f41c8990b46", + "availability": "AVAILABLE", + "taggings": [ + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/contributor", + "value": "http://www.bbc.co.uk/things/e91b614e-d7c9-419e-9525-58038966d285#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/editorialSensitivity", + "value": "http://www.bbc.co.uk/things/c6979033-cb72-4d07-9897-adc348a4332e#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/assetType", + "value": "http://www.bbc.co.uk/things/22ea958e-2004-4f34-80a7-bf5acad52f6f#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/59f28e6e-ec4d-424f-84f0-94f832e0fbd4#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/audience/motivation", + "value": "http://www.bbc.co.uk/things/bf928ac3-b3bd-4d47-924e-cca1bdc29174#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/cc3c6abf-d22c-499a-bf69-1dfb9c86a828#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/7c657c38-57a4-4d98-b283-f3b6a8b16bd9#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/format", + "value": "http://www.bbc.co.uk/things/46c0517d-9927-4d1a-9954-8c63a3f7a888#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/primaryMediaType", + "value": "http://www.bbc.co.uk/things/5566b81b-8509-44c1-8503-018a0eab317d#id" + } + ], + "schemaVersion": "1.4.0", + "publishedState": "PUBLISHED", + "predicates": { + "about": [ + { + "value": "http://www.bbc.co.uk/things/59f28e6e-ec4d-424f-84f0-94f832e0fbd4#id", + "thingLabel": "उत्तर प्रदेश चुनाव 2022", + "thingUri": "http://www.bbc.co.uk/things/59f28e6e-ec4d-424f-84f0-94f832e0fbd4#id", + "thingId": "59f28e6e-ec4d-424f-84f0-94f832e0fbd4", + "thingType": ["tagging:TagConcept", "core:Thing", "core:Event"], + "thingSameAs": [ + "http://www.wikidata.org/entity/Q85738025", + "http://dbpedia.org/resource/2022_Uttar_Pradesh_Legislative_Assembly_election" + ], + "thingEnglishLabel": "Uttar Pradesh Legislative Assembly election 2022", + "type": "about" + }, + { + "value": "http://www.bbc.co.uk/things/7c657c38-57a4-4d98-b283-f3b6a8b16bd9#id", + "thingLabel": "उत्तर प्रदेश", + "thingUri": "http://www.bbc.co.uk/things/7c657c38-57a4-4d98-b283-f3b6a8b16bd9#id", + "thingId": "7c657c38-57a4-4d98-b283-f3b6a8b16bd9", + "thingType": ["tagging:TagConcept", "core:Thing", "core:Place"], + "thingSameAs": ["http://dbpedia.org/resource/Uttar_Pradesh"], + "thingEnglishLabel": "Uttar Pradesh", + "type": "about" + }, + { + "value": "http://www.bbc.co.uk/things/cc3c6abf-d22c-499a-bf69-1dfb9c86a828#id", + "thingLabel": "गोरखपुर", + "thingUri": "http://www.bbc.co.uk/things/cc3c6abf-d22c-499a-bf69-1dfb9c86a828#id", + "thingId": "cc3c6abf-d22c-499a-bf69-1dfb9c86a828", + "thingType": ["core:Place", "core:Thing", "tagging:TagConcept"], + "thingSameAs": [ + "http://sws.geonames.org/1270927/", + "http://dbpedia.org/resource/Gorakhpur", + "http://www.wikidata.org/entity/Q5584396" + ], + "thingEnglishLabel": "Gorakhpur ", + "type": "about" + } + ], + "formats": [ + { + "value": "http://www.bbc.co.uk/things/46c0517d-9927-4d1a-9954-8c63a3f7a888#id", + "thingLabel": "News report", + "thingUri": "http://www.bbc.co.uk/things/46c0517d-9927-4d1a-9954-8c63a3f7a888#id", + "thingId": "46c0517d-9927-4d1a-9954-8c63a3f7a888", + "thingType": ["tagging:TagConcept", "tagging:Format"], + "thingSameAs": [], + "thingEnglishLabel": "Report", + "thingPreferredLabel": "Report", + "thingLabelLanguage": "hi", + "type": "formats" + } + ] + } + }, + "tags": { + "about": [ + { + "thingLabel": "उत्तर प्रदेश चुनाव 2022", + "thingUri": "http://www.bbc.co.uk/things/59f28e6e-ec4d-424f-84f0-94f832e0fbd4#id", + "thingId": "59f28e6e-ec4d-424f-84f0-94f832e0fbd4", + "thingType": ["tagging:TagConcept", "core:Thing", "core:Event"], + "thingSameAs": [ + "http://www.wikidata.org/entity/Q85738025", + "http://dbpedia.org/resource/2022_Uttar_Pradesh_Legislative_Assembly_election" + ], + "topicName": "उत्तर प्रदेश चुनाव 2022", + "topicId": "cv85zqzm07wt", + "curationList": [ + { + "curationId": "7ee5a7b3-12ae-4ce1-8b7f-2efa05da5318", + "curationType": "vivo-stream" + } + ], + "thingEnglishLabel": "Uttar Pradesh Legislative Assembly election 2022", + "thingLabelLanguage": "hi", + "thingPreferredLabel": "Uttar Pradesh Legislative Assembly election 2022" + }, + { + "thingLabel": "उत्तर प्रदेश", + "thingUri": "http://www.bbc.co.uk/things/7c657c38-57a4-4d98-b283-f3b6a8b16bd9#id", + "thingId": "7c657c38-57a4-4d98-b283-f3b6a8b16bd9", + "thingType": ["tagging:TagConcept", "core:Thing", "core:Place"], + "thingSameAs": ["http://dbpedia.org/resource/Uttar_Pradesh"], + "topicName": "उत्तर प्रदेश", + "topicId": "c7zp510pgv8t", + "curationList": [ + { + "curationId": "fa661c7c-0fd3-4a84-8c93-3e7c3e5908a5", + "curationType": "vivo-stream" + } + ], + "thingEnglishLabel": "Uttar Pradesh", + "thingLabelLanguage": "hi", + "thingPreferredLabel": "Uttar Pradesh" + }, + { + "thingLabel": "गोरखपुर", + "thingUri": "http://www.bbc.co.uk/things/cc3c6abf-d22c-499a-bf69-1dfb9c86a828#id", + "thingId": "cc3c6abf-d22c-499a-bf69-1dfb9c86a828", + "thingType": ["core:Place", "core:Thing", "tagging:TagConcept"], + "thingSameAs": [ + "http://sws.geonames.org/1270927/", + "http://dbpedia.org/resource/Gorakhpur", + "http://www.wikidata.org/entity/Q5584396" + ], + "topicName": "गोरखपुर", + "topicId": "cp3z5l5rmnxt", + "curationList": [ + { + "curationId": "417e7cd6-8a48-4b6a-9a70-19946918d4e5", + "curationType": "vivo-stream" + } + ], + "thingEnglishLabel": "Gorakhpur ", + "thingLabelLanguage": "hi", + "thingPreferredLabel": "Gorakhpur " + } + ] + }, + "version": "v1.3.17", + "blockTypes": [ + "image", + "include", + "paragraph", + "media", + "heading", + "list", + "crosshead" + ], + "includeComments": false, + "atiAnalytics": { + "producerName": "HINDI", + "producerId": "52" + }, + "readTime": 6, + "siteUri": "/hindi", + "topics": [ + { + "topicName": "उत्तर प्रदेश", + "topicId": "c7zp510pgv8t", + "subjectList": [ + { + "subjectId": "http://www.bbc.co.uk/things/7c657c38-57a4-4d98-b283-f3b6a8b16bd9#id", + "subjectType": "tag" + } + ], + "curationList": [ + { + "curationId": "fa661c7c-0fd3-4a84-8c93-3e7c3e5908a5", + "curationType": "vivo-stream", + "visualProminence": "NORMAL" + } + ], + "types": ["tagging:TagConcept", "core:Thing", "core:Place"], + "home": "http://www.bbc.co.uk/ontologies/passport/home/Hindi" + }, + { + "topicName": "गोरखपुर", + "topicId": "cp3z5l5rmnxt", + "subjectList": [ + { + "subjectId": "http://www.bbc.co.uk/things/cc3c6abf-d22c-499a-bf69-1dfb9c86a828#id", + "subjectType": "tag" + } + ], + "curationList": [ + { + "curationId": "417e7cd6-8a48-4b6a-9a70-19946918d4e5", + "curationType": "vivo-stream", + "position": 0, + "visualProminence": "NORMAL" + } + ], + "types": ["core:Place", "core:Thing", "tagging:TagConcept"], + "home": "http://www.bbc.co.uk/ontologies/passport/home/Hindi" + }, + { + "topicName": "उत्तर प्रदेश चुनाव 2022", + "topicId": "cv85zqzm07wt", + "subjectList": [ + { + "subjectId": "http://www.bbc.co.uk/things/59f28e6e-ec4d-424f-84f0-94f832e0fbd4#id", + "subjectType": "tag" + } + ], + "curationList": [ + { + "curationId": "7ee5a7b3-12ae-4ce1-8b7f-2efa05da5318", + "curationType": "vivo-stream", + "position": 0, + "visualProminence": "NORMAL" + } + ], + "types": ["tagging:TagConcept", "core:Thing", "core:Event"], + "home": "http://www.bbc.co.uk/ontologies/passport/home/Hindi" + } + ] + }, + "content": { + "blocks": [ + { + "id": "123300865", + "subType": "body", + "href": "http://c.files.bbci.co.uk/DDE0/production/_123300865_3a0605fc-8809-4ed7-8d87-c22b6cd4b816.jpg", + "path": "/cpsprodpb/DDE0/production/_123300865_3a0605fc-8809-4ed7-8d87-c22b6cd4b816.jpg", + "height": 549, + "width": 976, + "altText": "कुशीनगर", + "copyrightHolder": "चंद्रकांत मिश्र", + "positionHint": "full-width", + "originCode": "cpsprodpb", + "type": "image" + }, + { + "required": false, + "title": "ISWOTY", + "href": "/include/vjsthasia/1240-iswoty-2021-banner/hindi/vote?responsive=true&newsapps=true&app-image=https://news.files.bbci.co.uk/include/vjassets/img/app-launcher.png&app-clickable=true&-clickable=true&-image-height=360&-image-width=640&-image=https://news.files.bbci.co.uk/include/vjassets/img/app-launcher.png&app-image-alt-text=Click%20or%20tap%20here%20to%20see%20interactive%20content", + "platform": "highweb", + "type": "include" + }, + { + "text": "जिस गाँव से 17 फ़रवरी को दो बरातें जानी थीं, ढोल-नगाड़े बजने थे आज उस गाँव के एक मोहल्ले से 13 शव महिलाओं और लड़कियों के उठे हैं. इन शवों में एक साल की परी भी शामिल है. अभी पिछले हफ़्ते ही तो उसका पहला जन्मदिन मनाया गया था. रह-रहकर लोगों की चीखें गाँव में पसरे सन्नाटे को तोड़ रही थीं. हर आँख नम थी, इन मौतों का किसी के पास कोई जवाब नहीं था.", + "role": "introduction", + "markupType": "plain_text", + "type": "paragraph" + }, + { + "text": "नौरंगिया गाँव के एक ही मोहल्ले से अमित कुशवाहा और नारद कुशवाहा की 17 फ़रवरी को बारात जानी थी. दोनों घरों के बीच की दूरी क़रीब 300 मीटर है. इस हादसे के बाद बारात के नाम पर अमित के यहाँ से उनका एक भाई और भतीजा गया है जबकि नारद के यहाँ से बारात ही नहीं गयी.", + "markupType": "plain_text", + "type": "paragraph" + }, + { + "id": "p0bpnll7", + "subType": "clip", + "format": "video", + "title": "कुशीनगर का वो हादसा जिसमें 13 लोगों की जान चली गई", + "synopses": { + "short": "कुशीनगर का वो हादसा जिसमें 13 लोगों की जान चली गई", + "long": "उत्तर प्रदेश के कुशीनगर ज़िले में एक बड़ा हादसा हुआ है. यहां एक कुएं पर रखे स्लैब के टूटने से 13 लोगों की मौत हो गई. मरने वालों में 2 महिलाएं और 11 बच्चियां शामिल हैं. \n\nये सभी कुशीनगर के नौरंगिया में शादी से जुड़ी एक रस्म के लिए इकट्ठा हुई थीं. महिलाएं कुएं पर रखे हुए स्लैब पर बैठी थीं और स्लैब टूटने की वजह से सभी कुएं में गिर गईं. \n\nघटना की जानकारी मिलते ही स्थानीय पुलिस और प्रशासन मौके पर पहुंचे.\n\n प्रधानमंत्री नरेंद्र मोदी ने ट्वीट करके मरने वालों के परिवार के प्रति संवेदना प्रकट की है. पीएम मोदी ने मरने वालों के परिजनों को मुआवज़े की घोषणा की है.", + "medium": "उत्तर प्रदेश के कुशीनगर ज़िले में एक बड़ा हादसा हुआ है. यहां एक कुएं पर रखे स्लैब के टूटने से 13 लोगों की मौत हो गई." + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p0bpnmtp.jpg", + "embedding": true, + "advertising": true, + "caption": "कुशीनगर का वो हादसा जिसमें 13 लोगों की जान चली गई", + "versions": [ + { + "versionId": "p0bpnllm", + "types": ["Original"], + "duration": 151, + "durationISO8601": "PT2M31S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true + }, + "availableFrom": 1645098154000 + } + ], + "imageCopyright": "BBC", + "smpKind": "programme", + "type": "media" + }, + { + "text": "जिस गुरुवार के दिन गाँव से धूमधाम से बारात जानी थी उसी दिन 17 फ़रवरी को सभी मृतकों का कुशीनगर से 20 किलोमीटर दूर नारायणी पनियहवा घाट पर अंतिम संस्कार किया गया. ऐसा पहली बार था जब ज़िले में किसी गाँव की इतनी चिताएं एक साथ जल रही थीं.", + "markupType": "plain_text", + "type": "paragraph" + }, + { + "text": "अंतिम संस्कार करके लौट रहे नौरंगिया गाँव के 65 वर्षीय लक्ष्मी यादव कहते हैं, "ऐसा खौफ़नाक मंजर इस उमर में पहली बार देखा. गाँव में आज किसी के घर चूल्हे नहीं जले. एक अनहोनी थी जिस पर किसी का बस नहीं चला."", + "markupType": "plain_text", + "type": "paragraph" + }, + { + "text": "गांव के रहने वाले अभिषेक यादव ने भारी मन से कहा, "अब गांव जाने की ही इच्छा नहीं हो रही है. समझ नहीं आ रहा है कि अब गाँव में कैसे क़दम रखा जाए."", + "markupType": "plain_text", + "type": "paragraph" + }, + { + "text": "जिस वक़्त कुएं से महिलाओं और लड़कियों को रस्सी और सीढ़ी के सहारे निकाला जा रहा था उस वक़्त वहां पर मौजूद प्रिंस यादव ने बताया, "हमने एम्बुलेंस को उसी वक़्त फ़ोन किया था. उन्हें बताया भी कि लोग निकाले जा रहे हैं उन्हें तुरंत अस्पताल भेजना है. लेकिन फ़ोन करने के एक डेढ़ घंटे तक कोई एम्बुलेंस नहीं आयी. मुझे लगता है अगर समय से एम्बुलेंस आ जाती तो हो सकता है कुछ और जानें बच जातीं."", + "markupType": "plain_text", + "type": "paragraph" + }, + { + "text": "प्रशासन की लापरवाही?", + "markupType": "plain_text", + "type": "heading" + }, + { + "text": "ग्रामीणों ने आरोप लगाया कि अगर वक़्त से एम्बुलेंस पहुंच जाती तो और कई जानें बच जातीं. प्रशासन की लापरवाही की वजह से कई ज़िंदगियां ख़त्म हो गईं.", + "markupType": "plain_text", + "type": "paragraph" + }, + { + "text": "वहां मौजूद विजय यादव बताते हैं, "घटना की सूचना के बाद पुलिस तो तुरंत आ गई थी लेकिन जिसकी सबसे अधिक ज़रूरत थी उस एम्बुलेंस को पहुंचने में डेढ़ घंटे लग गए. कुएं में गिरी बहुत-सी महिलाओं को जब बाहर निकाला गया तब उनकी सांसें उखड़ रही थी, उन्हें ऑक्सीजन की कमी महसूस हो रही थी. अगर समय पर उन्हें ऑक्सीजन और इलाज मिल गया होता तो शायद वो बच जातीं."", + "markupType": "plain_text", + "type": "paragraph" + }, + { + "numbered": false, + "items": [ + { + "text": "hindi/india-59671293", + "meta": [ + { + "headlines": { + "shortHeadline": "भोपाल में सीवर में मज़दूर के साथ साथ कैसे हुई सुपरवाइज़र की मौत- क्या है पूरा हादसा", + "headline": "भोपाल में सीवर में मज़दूर के साथ साथ कैसे हुई सुपरवाइज़र की मौत- क्या है पूरा हादसा", + "overtyped": "भोपाल में सीवर में मज़दूर के साथ साथ कैसे हुई सुपरवाइज़र की मौत- क्या है पूरा हादसा" + }, + "locators": { + "href": "https://www.bbc.com/hindi/india-59671293" + }, + "summary": "मध्यप्रदेश की राजधानी भोपाल में सीवर के अंदर काम करने गए दो लोगों की दर्दनाक मौत हो गई है. पढ़ें क्या है पूरा मामला?", + "timestamp": 1639615200000, + "language": "hi", + "passport": { + "category": { + "categoryId": "", + "categoryName": "" + }, + "taggings": [] + }, + "id": "urn:bbc:ares::asset:hindi/india-59671293", + "type": "cps" + } + ], + "markupType": "candy_xml", + "type": "listItem" + }, + { + "text": "hindi/india-59795816", + "meta": [ + { + "headlines": { + "shortHeadline": "बिहार के मुज़फ़्फ़रपुर में बॉयलर फटने से 7 लोगों की मौत, 7 घायल", + "headline": "बिहार के मुज़फ़्फ़रपुर में बॉयलर फटने से 7 लोगों की मौत, 7 घायल", + "overtyped": "बिहार के मुज़फ़्फ़रपुर में बॉयलर फटने से 7 लोगों की मौत, 7 घायल" + }, + "locators": { + "href": "https://www.bbc.com/hindi/india-59795816" + }, + "summary": "ब्लास्ट की तीव्रता का अंदाजा इसी बात से लगाया जा सकता है कि बॉयलर फटने के बाद स्थानीय लोगों ने सोशल मीडिया पर ये लिखना शुरू कर दिया कि मुज़फ़्फ़रपुर में भूकंप आया है.", + "timestamp": 1640565627000, + "language": "hi", + "passport": { + "category": { + "categoryId": "", + "categoryName": "" + }, + "taggings": [] + }, + "id": "urn:bbc:ares::asset:hindi/india-59795816", + "type": "cps" + } + ], + "markupType": "candy_xml", + "type": "listItem" + } + ], + "type": "list" + }, + { + "id": "123302092", + "subType": "body", + "href": "http://c.files.bbci.co.uk/715C/production/_123302092_6b7fce78-1a8e-4fcb-887f-f0c4165b87d5-1.jpg", + "path": "/cpsprodpb/715C/production/_123302092_6b7fce78-1a8e-4fcb-887f-f0c4165b87d5-1.jpg", + "height": 549, + "width": 976, + "altText": "कुशीनगर", + "copyrightHolder": "चंद्रकांत मिश्र", + "positionHint": "full-width", + "originCode": "cpsprodpb", + "type": "image" + }, + { + "text": "कुएं से लोगों को बाहर निकालने में राकेश भी शामिल थे. राकेश ने बताया, "रस्सी के सहारे कुएं में उतरा था. लोग दर्द के मारे चीख रहे थे. कुछ की सांसे तो कुएं के अन्दर ही थम गई थीं."", + "markupType": "plain_text", + "type": "paragraph" + }, + { + "text": "नौरंगिया गाँव में गुरुवार को सैकड़ों की संख्या में आसपास गाँव के लोगों और रिश्तेदारों का अवागमन लगा था. हर कोई उस कुएं में झांककर देख रहा था जिसकी स्लैब टूटने से 16 फ़रवरी की रात को 13 मौतें हुई थीं. जिसमें सात नाबालिग बच्चियां थीं.", + "markupType": "plain_text", + "type": "paragraph" + }, + { + "id": "123302095", + "subType": "body", + "href": "http://c.files.bbci.co.uk/E68C/production/_123302095_03977b1a-8bad-405b-8ee7-920e8984772f.jpg", + "path": "/cpsprodpb/E68C/production/_123302095_03977b1a-8bad-405b-8ee7-920e8984772f.jpg", + "height": 549, + "width": 976, + "altText": "कुशीनगर", + "copyrightHolder": "चंद्रकांत मिश्र", + "positionHint": "full-width", + "originCode": "cpsprodpb", + "type": "image" + }, + { + "text": "ये वही कुआं है जहाँ सालों से इस गाँव के लोग हर शुभ काम में पूजा करने आते थे. गाँव के लोगों के मुताबिक कुआं 100 साल पुराना है पर इस पर जो स्लैब डाली गयी थी वो दो साल पहले ही बनवाई गयी थी.", + "markupType": "plain_text", + "type": "paragraph" + }, + { + "text": "प्रिंस यादव बताते हैं, "गाँव के दो लोग अमित और नारद की शादी थी. दोनों की माटी कड़वा कार्यक्रम कुएं पर एक साथ हो रहा था इस वजह से महिलाओं की संख्या ज़्यादा थी. क़रीब 50 से 70 महिलाएं वहां थी."", + "markupType": "plain_text", + "type": "paragraph" + }, + { + "text": "कुशीनगर ज़िला मुख्यालय से क़रीब 20 किलोमीटर दूर नौरंगिया गाँव में घुसते ही 100 कदम चलने पर दाहिने तरफ़ क़रीब 70 फ़ीट गहरा श्रवण कुमार के दरवाज़े एक कुआं बना है. अभी कुएं को चारो तरफ़ से गाँव के लोगों ने दो तीन टूटी पड़ी लकड़ी की सीढ़ियों से ढक दिया है. वहां बिखरी हुई कई चप्पलें, सैंडल उस हादसे की गवाही दे रहे हैं.", + "markupType": "plain_text", + "type": "paragraph" + }, + { + "text": "गाँव में हर आने वाला थोड़ी दूर से झाँककर इस कुएं की गहराई समझने की कोशिश कर रहा है. लोग इस कुएं से कई सालों से पानी नहीं भर रहे थे. कुआं खुला था इसलिए श्रवण कुमार ने दो साल पहले इसपर स्लैब डलवाई थी ताकि उनके घर के बच्चे और जानवर उसमें न गिरें. कोई उस स्लैब पर बैठेगा भी ऐसा उन्हें अंदेशा ही नहीं था इसलिए उन्होंने स्लैब बहुत मजबूत नहीं बनवाई थी.", + "markupType": "plain_text", + "type": "paragraph" + }, + { + "text": "श्रवण कुमार को अंदेशा भी नहीं था कि जिस स्लैब को उन्होंने अनहोनी से रोकने के लिए बनवाया था वही स्लैब किसी दिन एक दर्जन से ज्यादा लोगों की मौत का कारण बनेगा. कुएं के आसपास और इसकी स्लैब पर 16 फरवरी की रात करीब आठ-नौ बजे के बीच एक ही मोहल्ले की 30-40 महिलाएं और लड़कियाँ दोनों शादियों की एक रस्म की अदायगी गाना बजाना कर रहीं थीं. ", + "markupType": "plain_text", + "type": "paragraph" + }, + { + "text": "एक साथ रस्म होने की वजह से भीड़ ज्यादा बढ़ गयी थी. स्लैब बहुत मजबूत नहीं थी इसलिए ज्यादा लोगों के बैठने से अचानक टूट गयी और फिर एक के बाद एक 23 महिलाएं और लड़कियाँ उस 70 फीट गहरे कुएं में गिरती गईं. कुछ ही देर पहले जहाँ लोकगीत गाये जा रहे थे. ढोलक की थाप थी वहीं देखते ही देखते हर तरफ से बचाओ-बचाओ की आवाजें आने लगीं. खुशी का माहौल अचानक से मातम में तब्दील हो गया. ", + "markupType": "plain_text", + "type": "paragraph" + }, + { + "numbered": false, + "items": [ + { + "text": "hindi/india-60412387", + "meta": [ + { + "headlines": { + "shortHeadline": "कुशीनगर में कुंए में गिरने से 13 की मौत, पीएम ने दो लाख के मुआवज़े का किया एलान", + "headline": "उत्तर प्रदेश: कुशीनगर में कुंए में गिरने से 13 की मौत, पीएम ने दो लाख के मुआवज़े का किया एलान", + "overtyped": "कुशीनगर में कुंए में गिरने से 13 की मौत, पीएम ने दो लाख के मुआवज़े का किया एलान" + }, + "locators": { + "href": "https://www.bbc.com/hindi/india-60412387" + }, + "summary": "महिलाएं और लड़कियां शादी से जुड़ी एक रस्म के लिए जमा हुई थीं. मरने वालों की संख्या बढ़ने की आशंका जताई जा रही है.", + "timestamp": 1645080298000, + "language": "hi", + "passport": { + "category": { + "categoryId": "", + "categoryName": "" + }, + "taggings": [] + }, + "id": "urn:bbc:ares::asset:hindi/india-60412387", + "type": "cps" + } + ], + "markupType": "candy_xml", + "type": "listItem" + }, + { + "text": "hindi/india-59844834", + "meta": [ + { + "headlines": { + "shortHeadline": "माता वैष्णो देवी मंदिर परिसर में भगदड़, 12 की मौत और 20 ज़ख़्मी", + "headline": "माता वैष्णो देवी मंदिर परिसर में भगदड़, 12 की मौत और 20 ज़ख़्मी", + "overtyped": "माता वैष्णो देवी मंदिर परिसर में भगदड़, 12 की मौत और 20 ज़ख़्मी" + }, + "locators": { + "href": "https://www.bbc.com/hindi/india-59844834" + }, + "summary": "माता वैष्णो देवी मंदिर में नए साल के दिन श्रद्धालुओं की भारी भीड़ के कारण भगदड़ में 12 लोगों की मौत.", + "timestamp": 1641004546000, + "language": "hi", + "passport": { + "category": { + "categoryId": "", + "categoryName": "" + }, + "taggings": [] + }, + "id": "urn:bbc:ares::asset:hindi/india-59844834", + "type": "cps" + } + ], + "markupType": "candy_xml", + "type": "listItem" + } + ], + "type": "list" + }, + { + "id": "123302171", + "subType": "body", + "href": "http://c.files.bbci.co.uk/42E0/production/_123302171_kushinagar.jpg", + "path": "/cpsprodpb/42E0/production/_123302171_kushinagar.jpg", + "height": 549, + "width": 976, + "altText": "कुशीनगर:", + "caption": "सुमित्रा देवी", + "copyrightHolder": "चन्द्रकांत मिश्रा", + "positionHint": "full-width", + "originCode": "cpsprodpb", + "type": "image" + }, + { + "text": "खुशी का माहौल मातम में तब्दील", + "markupType": "plain_text", + "type": "crosshead" + }, + { + "text": "जहां यह हादसा हुआ उस कुएं से चंद कदमों की दूरी पर सुमित्रा देवी का घर है. हर कोई सुमित्रा को ढाढस बंधा रहा था क्योंकि मृतकों में इनकी 22 वर्षीय बेटी मीरा भी शामिल है. वो रो-रोकर कहें जा रही थीं, "कहकर गयी थी जल्दी आ जाऊंगी. अगर मैं जानती तो उसे जाने ही न देती."", + "markupType": "plain_text", + "type": "paragraph" + }, + { + "text": "सुमित्रा देवी की आँखे रोते-रोते पथरा गईं थीं. हाथों में मीरा की तस्वीर लिए कह रहीं थीं, "अभी तो इसकी शादी के लिए लड़का खोज रही थी. सोच रही थी आख़िरी शादी है धूमधाम से करूंगी. भगवान मुझे उठा लेते उसकी जाने की उम्र थी क्या?" ये कहते हुए वो देर तक सुबकती रहीं. मीरा तीन बहनों में सबसे छोटी थी, दो बड़ी बहनों की शादी हो चुकी है. ", + "markupType": "plain_text", + "type": "paragraph" + }, + { + "text": "कुएं में गिरने वाली कुछ ऐसे भी थे घायल लगभग 10 लोगों को अस्पताल पहुंचाया गया. ", + "markupType": "plain_text", + "type": "paragraph" + }, + { + "text": "जिस अमित कुशवाहा की शादी थी उनका सात वर्षीय भांजा उपेंद्र भी इस कुएं में गिर गया था लेकिन उसे वक़्त रहते कुएं से निकाल लिया गया. उसके सर और हाथ में हल्की-फुल्की चोटें आयीं हैं. उपेन्द्र के 40 भाई वर्षीय राजेन्द्र कुशवाहा ने बताया, "मुझे सुबह फोन करके बताया गया कि बेटा कुएं में गिर गया था, हल्की-फुल्की चोटें आयीं हैं लेकिन वो ठीक है." ", + "markupType": "plain_text", + "type": "paragraph" + }, + { + "text": "पूर्वांचल में लड़के की बारात जाने के एक दिन पहले एक रस्म होती है जिसका नाम है माटी कुडवा. इस रस्म में पुरुषों में दूल्हे के अलावा महिलाएं ही शामिल होतीं हैं. रस्म के दौरान महिलाएं और लड़कियाँ नाच-गाना करती हैं.", + "markupType": "plain_text", + "type": "paragraph" + }, + { + "id": "123302097", + "subType": "body", + "href": "http://c.files.bbci.co.uk/134AC/production/_123302097_cfe6ded6-b527-4a38-bb18-c1166ef0d1ab.jpg", + "path": "/cpsprodpb/134AC/production/_123302097_cfe6ded6-b527-4a38-bb18-c1166ef0d1ab.jpg", + "height": 549, + "width": 976, + "altText": "कुशीनगर", + "caption": "पूजा यादव (20 वर्ष) लखनऊ शहर में रहकर पुलिस की तैयारी कर रही थी.", + "copyrightHolder": "चन्द्रकांत मिश्रा ", + "positionHint": "full-width", + "originCode": "cpsprodpb", + "type": "image" + }, + { + "text": "पूजा यादव (20 वर्ष) लखनऊ शहर में रहकर पुलिस की तैयारी कर रही थी. वो पिछले हफ्ते ही गाँव आयी थी और इस हादसे में मरने वालों में एक हैं. पूजा की माँ का रो-रोकर बुरा हाल था. वो कह रहीं थीं, "मेरी बेटी पुलिस की तैयारी कर रही थी वो पुलिस में भर्ती होना चाहती थी. कह रही थी कि पड़ोस की शादी निपटाकर लखनऊ वापस जाउंगी." ", + "markupType": "plain_text", + "type": "paragraph" + }, + { + "text": "ज़िलाधिकारी एस. राजलिंगम ने बताया कि इस हादसे में करीब 10 अन्य लोग ज़ख्मी हुए हैं, जिन्हें अस्पताल में भर्ती कराया गया है, मृतकों के परिजन को चार-चार लाख रुपये की सहायता दी जाएगी.", + "markupType": "plain_text", + "type": "paragraph" + }, + { + "text": "प्रधानमंत्री नरेंद्र मोदी ने इस घटना पर शोक जताया है. प्रशासन ने मृतकों को चार लाख रुपए देने की घोषणा की है. साथ ही घायलों को 50-50 हज़ार रुपये की मदद की बात कही है.", + "markupType": "plain_text", + "type": "paragraph" + }, + { + "text": "इस घटना में कुल 13 लोगों की मौत हुई है. जिनमें परी (एक वर्ष), आरती ( 07 वर्ष), शशि कला चौरसिया (15 वर्ष), ज्योति चौरसिया (16 वर्ष), पूजा चौरसिया (17 वर्ष), सुन्दरी कुशवाहा (09 वर्ष), राधिका कुशवाहा (20 वर्ष), मन्नू (12 वर्ष), पूजा यादव (20 वर्ष), वृंदा यादव (20 वर्ष), मीरा विश्वकर्मा (22 वर्ष), शकुंतला (34 वर्ष) और ममता चौरसिया (35 वर्ष) शामिल हैं.", + "markupType": "plain_text", + "type": "paragraph" + }, + { + "text": "जिस वक़्त ये घटना हुई उससे कुछ देर पहले ही चालीस वर्षीय सरिता जायसवाल अपने दरवाजे तक पहुंची ही थीं तबतक उन्हें कुएं के पास से चीखने की आवाज़ें सुनाई दीं. ", + "markupType": "plain_text", + "type": "paragraph" + }, + { + "text": "सरिता बताती हैं, "मैं भी मटकोड़ में गयी थी. लेकिन तबियत कुछ ठीक नहीं लगी तो लौट आयी. जिनके साथ कुछ देर पहले खड़े होकर बातें कर रही थीं लेकिन हादसे के बाद बारी-बारी से उनकी मिट्टी (लाशें) देख घबरा गयी. अगर मैं घर न गयी होती तो मैं भी न बचती."", + "markupType": "plain_text", + "type": "paragraph" + }, + { + "id": "123173033", + "subType": "body", + "href": "http://c.files.bbci.co.uk/810D/production/_123173033_iswoty_branding_footer_cps-002.png", + "path": "/cpsprodpb/810D/production/_123173033_iswoty_branding_footer_cps-002.png", + "height": 281, + "width": 976, + "altText": "ISOWTY", + "copyrightHolder": "BBC", + "positionHint": "full-width", + "originCode": "cpsprodpb", + "type": "image" + }, + { + "text": "(बीबीसी हिन्दी के एंड्रॉएड ऐप के लिए आप यहां क्लिकयहां क्लिक कर सकते हैं. आप हमें फ़ेसबुकफ़ेसबुक, ट्विटरट्विटर, इंस्टाग्राम और यूट्यूब पर फ़ॉलो भी कर सकते हैं.)", + "markupType": "candy_xml", + "type": "paragraph" + } + ] + }, + "promo": { + "headlines": { + "shortHeadline": "कुशीनगर के जिस गांव से बारातें निकलनी थीं वहां ये 13 अर्थियां निकलीं- ग्राउंड रिपोर्ट", + "headline": "कुशीनगर के जिस गांव से बारातें निकलनी थीं वहां ये 13 अर्थियां निकलीं- ग्राउंड रिपोर्ट" + }, + "locators": { + "assetUri": "/hindi/india-60426858", + "cpsUrn": "urn:bbc:content:assetUri:hindi/india-60426858", + "curie": "http://www.bbc.co.uk/asset/0a0b809a-4895-4895-97a0-9f41c8990b46", + "assetId": "60426858" + }, + "summary": "जिस गुरुवार के दिन गाँव से धूमधाम से बारात जानी थी उसी दिन अंतिम संस्कार किया गया. ऐसा पहली बार था जब ज़िले के किसी गाँव में इतनी चिताएं एक साथ जल रही थीं.", + "timestamp": 1645188846000, + "language": "hi", + "byline": { + "name": "चन्द्रकांत मिश्रा ", + "title": "कुशीनगर से, बीबीसी हिंदी के लिए ", + "persons": [ + { + "name": "Léa Surugue", + "function": "BBC Future" + } + ] + }, + "passport": { + "language": "hi", + "home": "http://www.bbc.co.uk/ontologies/passport/home/Hindi", + "locator": "urn:bbc:cps:curie:asset:0a0b809a-4895-4895-97a0-9f41c8990b46", + "availability": "AVAILABLE", + "taggings": [ + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/contributor", + "value": "http://www.bbc.co.uk/things/e91b614e-d7c9-419e-9525-58038966d285#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/editorialSensitivity", + "value": "http://www.bbc.co.uk/things/c6979033-cb72-4d07-9897-adc348a4332e#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/assetType", + "value": "http://www.bbc.co.uk/things/22ea958e-2004-4f34-80a7-bf5acad52f6f#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/59f28e6e-ec4d-424f-84f0-94f832e0fbd4#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/audience/motivation", + "value": "http://www.bbc.co.uk/things/bf928ac3-b3bd-4d47-924e-cca1bdc29174#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/cc3c6abf-d22c-499a-bf69-1dfb9c86a828#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/7c657c38-57a4-4d98-b283-f3b6a8b16bd9#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/format", + "value": "http://www.bbc.co.uk/things/46c0517d-9927-4d1a-9954-8c63a3f7a888#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/primaryMediaType", + "value": "http://www.bbc.co.uk/things/5566b81b-8509-44c1-8503-018a0eab317d#id" + } + ], + "schemaVersion": "1.4.0", + "publishedState": "PUBLISHED", + "predicates": { + "about": [ + { + "value": "http://www.bbc.co.uk/things/59f28e6e-ec4d-424f-84f0-94f832e0fbd4#id", + "thingLabel": "उत्तर प्रदेश चुनाव 2022", + "thingUri": "http://www.bbc.co.uk/things/59f28e6e-ec4d-424f-84f0-94f832e0fbd4#id", + "thingId": "59f28e6e-ec4d-424f-84f0-94f832e0fbd4", + "thingType": ["tagging:TagConcept", "core:Thing", "core:Event"], + "thingSameAs": [ + "http://www.wikidata.org/entity/Q85738025", + "http://dbpedia.org/resource/2022_Uttar_Pradesh_Legislative_Assembly_election" + ], + "thingEnglishLabel": "Uttar Pradesh Legislative Assembly election 2022", + "type": "about" + }, + { + "value": "http://www.bbc.co.uk/things/7c657c38-57a4-4d98-b283-f3b6a8b16bd9#id", + "thingLabel": "उत्तर प्रदेश", + "thingUri": "http://www.bbc.co.uk/things/7c657c38-57a4-4d98-b283-f3b6a8b16bd9#id", + "thingId": "7c657c38-57a4-4d98-b283-f3b6a8b16bd9", + "thingType": ["tagging:TagConcept", "core:Thing", "core:Place"], + "thingSameAs": ["http://dbpedia.org/resource/Uttar_Pradesh"], + "thingEnglishLabel": "Uttar Pradesh", + "type": "about" + }, + { + "value": "http://www.bbc.co.uk/things/cc3c6abf-d22c-499a-bf69-1dfb9c86a828#id", + "thingLabel": "गोरखपुर", + "thingUri": "http://www.bbc.co.uk/things/cc3c6abf-d22c-499a-bf69-1dfb9c86a828#id", + "thingId": "cc3c6abf-d22c-499a-bf69-1dfb9c86a828", + "thingType": ["core:Place", "core:Thing", "tagging:TagConcept"], + "thingSameAs": [ + "http://sws.geonames.org/1270927/", + "http://dbpedia.org/resource/Gorakhpur", + "http://www.wikidata.org/entity/Q5584396" + ], + "thingEnglishLabel": "Gorakhpur ", + "type": "about" + } + ], + "formats": [ + { + "value": "http://www.bbc.co.uk/things/46c0517d-9927-4d1a-9954-8c63a3f7a888#id", + "thingLabel": "News report", + "thingUri": "http://www.bbc.co.uk/things/46c0517d-9927-4d1a-9954-8c63a3f7a888#id", + "thingId": "46c0517d-9927-4d1a-9954-8c63a3f7a888", + "thingType": ["tagging:TagConcept", "tagging:Format"], + "thingSameAs": [], + "thingEnglishLabel": "Report", + "thingPreferredLabel": "Report", + "thingLabelLanguage": "hi", + "type": "formats" + } + ] + } + }, + "indexImage": { + "id": "123302097", + "subType": "index", + "href": "http://c.files.bbci.co.uk/134AC/production/_123302097_cfe6ded6-b527-4a38-bb18-c1166ef0d1ab.jpg", + "path": "/cpsprodpb/134AC/production/_123302097_cfe6ded6-b527-4a38-bb18-c1166ef0d1ab.jpg", + "height": 549, + "width": 976, + "altText": "कुशीनगर", + "caption": "पूजा यादव (20 वर्ष) लखनऊ शहर में रहकर पुलिस की तैयारी कर रही थी.", + "copyrightHolder": "चन्द्रकांत मिश्रा ", + "originCode": "cpsprodpb", + "type": "image" + }, + "id": "urn:bbc:ares::asset:hindi/india-60426858", + "type": "cps" + }, + "relatedContent": { + "section": { + "subType": "index", + "name": "भारत", + "uri": "/hindi/india", + "urlIdentifier": "/hindi/india", + "type": "simple" + }, + "site": { + "subType": "site", + "name": "BBC Hindi", + "uri": "/hindi", + "urlIdentifier": "/hindi", + "type": "simple" + }, + "groups": [ + { + "type": "see-alsos", + "promos": [ + { + "headlines": { + "shortHeadline": "25 साल पहले हरियाणा में कैसे टकरा गए थे सऊदी और कज़ाख़ विमान?", + "headline": "25 साल पहले हरियाणा में कैसे टकरा गए थे सऊदी और कज़ाख़ विमान?" + }, + "locators": { + "assetUri": "/hindi/india-59264046", + "cpsUrn": "urn:bbc:content:assetUri:/hindi/india-59264046" + }, + "summary": "बैंगलोर में दो विमानों के टकराने का एक बड़ा हादसा होते-होते बचा. लेकिन 25 साल पहले हरियाणा के चरखी दादरी में दो विमानों के टकराने को रोका नहीं जा सका था. क्या हुआ था तब.", + "timestamp": 1642664945000, + "language": "hi", + "cpsType": "STY", + "indexImage": { + "id": "122906708", + "subType": "index", + "href": "http://c.files.bbci.co.uk/13B78/production/_122906708_wide.jpg", + "path": "/cpsprodpb/13B78/production/_122906708_wide.jpg", + "height": 549, + "width": 976, + "altText": "विमान हादसा", + "copyrightHolder": "Getty Images", + "type": "image" + }, + "id": "urn:bbc:ares::asset:hindi/india-59264046", + "type": "cps" + }, + { + "headlines": { + "shortHeadline": "बिहार के मुज़फ़्फ़रपुर में बॉयलर फटने से 7 लोगों की मौत, 7 घायल", + "headline": "बिहार के मुज़फ़्फ़रपुर में बॉयलर फटने से 7 लोगों की मौत, 7 घायल" + }, + "locators": { + "assetUri": "/hindi/india-59795816", + "cpsUrn": "urn:bbc:content:assetUri:/hindi/india-59795816" + }, + "summary": "ब्लास्ट की तीव्रता का अंदाजा इसी बात से लगाया जा सकता है कि बॉयलर फटने के बाद स्थानीय लोगों ने सोशल मीडिया पर ये लिखना शुरू कर दिया कि मुज़फ़्फ़रपुर में भूकंप आया है.", + "timestamp": 1640565627000, + "language": "hi", + "cpsType": "STY", + "indexImage": { + "id": "122509583", + "subType": "index", + "href": "http://c.files.bbci.co.uk/96BE/production/_122509583_6.jpg", + "path": "/cpsprodpb/96BE/production/_122509583_6.jpg", + "height": 549, + "width": 976, + "altText": "बिहार, मुज़फ़्फ़रपुर", + "copyrightHolder": "ABHISHEK/BBC", + "type": "image" + }, + "id": "urn:bbc:ares::asset:hindi/india-59795816", + "type": "cps" + } + ] + } + ] + } +} diff --git a/src/app/lib/config/optimizely/experimentIds.js b/src/app/lib/config/optimizely/experimentIds.js new file mode 100644 index 00000000000..09e66045766 --- /dev/null +++ b/src/app/lib/config/optimizely/experimentIds.js @@ -0,0 +1,3 @@ +export default { + hindiRecommendations: '003_hindi_experiment', +}; diff --git a/src/app/lib/config/services/russian.js b/src/app/lib/config/services/russian.js index 575ef76f2ca..3dfc4915293 100644 --- a/src/app/lib/config/services/russian.js +++ b/src/app/lib/config/services/russian.js @@ -366,6 +366,10 @@ export const service = { title: 'Главная', url: '/russian', }, + { + title: 'Украина', + url: '/russian/topics/cez0n29ggrdt', + }, { title: 'Коронавирус', url: '/russian/in-depth-51962199', diff --git a/src/app/pages/StoryPage/StoryPage.jsx b/src/app/pages/StoryPage/StoryPage.jsx index ff0501d2ce2..09d0fc75d26 100644 --- a/src/app/pages/StoryPage/StoryPage.jsx +++ b/src/app/pages/StoryPage/StoryPage.jsx @@ -54,6 +54,8 @@ import { RequestContext } from '#contexts/RequestContext'; import useToggle from '#hooks/useToggle'; import RelatedTopics from '#containers/RelatedTopics'; import NielsenAnalytics from '#containers/NielsenAnalytics'; +import useOptimizelyVariation from '#hooks/useOptimizelyVariation'; +import OPTIMIZELY_EXPERIMENT_IDS from '#lib/config/optimizely/experimentIds'; import categoryType from './categoryMap/index'; import cpsAssetPagePropTypes from '../../models/propTypes/cpsAssetPage'; @@ -71,6 +73,11 @@ const StoryPage = ({ pageData, mostReadEndpointOverride }) => { lang, showRelatedTopics, } = useContext(ServiceContext); + + const experimentVariation = useOptimizelyVariation( + OPTIMIZELY_EXPERIMENT_IDS.hindiRecommendations, + ); + const { enabled: preloadLeadImageToggle } = useToggle('preloadLeadImage'); const title = path(['promo', 'headlines', 'headline'], pageData); const shortHeadline = path(['promo', 'headlines', 'shortHeadline'], pageData); @@ -204,6 +211,43 @@ const StoryPage = ({ pageData, mostReadEndpointOverride }) => { ), podcastPromo: podcastPromoEnabled && InlinePodcastPromo, + experimentBlock: props => { + const { showForVariation, part } = props; + // Return 'control' variation if 'control' is returned from Optimizely or experiment is not enabled + if ( + showForVariation === 'control' && + (experimentVariation === 'control' || !experimentVariation) + ) { + return ( + + ); + } + + if ( + showForVariation === 'variation_1' && + experimentVariation === 'variation_1' + ) { + if (part === 1) { + return
Recs with 2 items, first 2 recs
; + } + if (part === 2) { + return
Recs with 2 items, last 2 recs
; + } + } + + if ( + showForVariation === 'variation_3' && + experimentVariation === 'variation_3' + ) { + return
scrolling recs
; + } + + return null; + }, }; const StyledTimestamp = styled(Timestamp)` diff --git a/src/app/routes/cpsAsset/getInitialData/addExperimentPlaceholderBlocks/index.js b/src/app/routes/cpsAsset/getInitialData/addExperimentPlaceholderBlocks/index.js new file mode 100644 index 00000000000..936ae1077f4 --- /dev/null +++ b/src/app/routes/cpsAsset/getInitialData/addExperimentPlaceholderBlocks/index.js @@ -0,0 +1,110 @@ +import path from 'ramda/src/path'; +import splitAt from 'ramda/src/splitAt'; +import { STORY_PAGE } from '#app/routes/utils/pageTypes'; +import { getNthCpsParagraphIndex } from '../helpers'; +import deepClone from '../../../utils/jsonClone'; + +const insertExperimentBlock = (experimentBlock, blocks, insertIndex) => { + const paragraphIndex = getNthCpsParagraphIndex(blocks, insertIndex); + + if (!paragraphIndex) { + return blocks; + } + + const parts = splitAt(paragraphIndex + 1, blocks); + + return [...parts[0], { ...experimentBlock }, ...parts[1]]; +}; + +const addExperimentPlaceholderBlocks = service => originalJson => { + const json = deepClone(originalJson); + const pageType = path(['metadata', 'type'], json); + const { allowAdvertising } = path(['metadata', 'options'], json); + let blocks = path(['content', 'model', 'blocks'], json); + + if (pageType !== STORY_PAGE || !blocks || !allowAdvertising) { + return json; + } + + /** + * Default recommendations for services outside of the experiment + */ + + if (service !== 'hindi') { + const { assetUri } = path(['metadata', 'locators'], json); + + const defaultRecommendationsBlock = { + type: 'wsoj', + model: { + type: 'recommendations', + path: `/api/recommend?recSys=2&limit=4&assetUri=${assetUri}`, + }, + }; + + json.content.model.blocks = insertExperimentBlock( + defaultRecommendationsBlock, + blocks, + 5, + ); + + return json; + } + + /** + * For the Hindi service, we need to insert the experiment blocks into the pageData + */ + + const experimentBlocks = [ + // Control recs block + { + block: { + type: 'experimentBlock', + model: { + showForVariation: 'control', + }, + }, + insertIndex: 5, + }, + // Split recs blocks + { + block: { + type: 'experimentBlock', + model: { + showForVariation: 'variation_1', + part: 1, + }, + }, + insertIndex: 5, + }, + { + block: { + type: 'experimentBlock', + model: { + showForVariation: 'variation_1', + part: 2, + }, + }, + insertIndex: 10, + }, + // Scrollable recs block + { + block: { + type: 'experimentBlock', + model: { + showForVariation: 'variation_3', + }, + }, + insertIndex: 5, + }, + ]; + + experimentBlocks.forEach(({ block, insertIndex }) => { + blocks = insertExperimentBlock(block, blocks, insertIndex); + }); + + json.content.model.blocks = blocks; + + return json; +}; + +export default addExperimentPlaceholderBlocks; diff --git a/src/app/routes/cpsAsset/getInitialData/addExperimentPlaceholderBlocks/index.test.js b/src/app/routes/cpsAsset/getInitialData/addExperimentPlaceholderBlocks/index.test.js new file mode 100644 index 00000000000..5eb22978e9c --- /dev/null +++ b/src/app/routes/cpsAsset/getInitialData/addExperimentPlaceholderBlocks/index.test.js @@ -0,0 +1,740 @@ +import deepClone from 'ramda/src/clone'; +import addExperimentPlaceholderBlocks from '.'; + +const styInput = { + metadata: { + type: 'STY', + options: { + allowAdvertising: true, + }, + locators: { + assetUri: '/news/media-333256', + }, + }, + content: { + model: { + blocks: [ + { + type: 'headline', + }, + { + type: 'timestamp', + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'image', + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'unorderedList', + }, + ], + }, + }, + { + type: 'image', + }, + { + type: 'audio', + }, + { + type: 'video', + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'subheadline', + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'unorderedList', + }, + ], + }, + }, + { + type: 'image', + }, + { + type: 'audio', + }, + { + type: 'video', + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + ], + }, + }, +}; + +describe('addExperimentPlaceholderBlocks', () => { + it('should add a block of type wsoj after the first 5 paragraph blocks', async () => { + const input = deepClone(styInput); + const expected = { + metadata: { + type: 'STY', + options: { + allowAdvertising: true, + }, + locators: { + assetUri: '/news/media-333256', + }, + }, + content: { + model: { + blocks: [ + { + type: 'headline', + }, + { + type: 'timestamp', + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'image', + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'unorderedList', + }, + ], + }, + }, + { + type: 'image', + }, + { + type: 'audio', + }, + { + type: 'video', + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'subheadline', + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'wsoj', + model: { + type: 'recommendations', + path: '/api/recommend?recSys=2&limit=4&assetUri=/news/media-333256', + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'unorderedList', + }, + ], + }, + }, + { + type: 'image', + }, + { + type: 'audio', + }, + { + type: 'video', + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + ], + }, + }, + }; + + expect(addExperimentPlaceholderBlocks()(input)).toEqual(expected); + }); + it('should return input if allowAdvertising is false', async () => { + const input = deepClone(styInput); + input.metadata.options.allowAdvertising = false; + + expect(addExperimentPlaceholderBlocks()(input)).toEqual(input); + }); + it('should return input if page ype is not STY', async () => { + const input = deepClone(styInput); + input.metadata.type = 'PGL'; + + expect(addExperimentPlaceholderBlocks()(input)).toEqual(input); + }); + it('should return input if blocks is empty', async () => { + const input = deepClone(styInput); + delete input.content.model.blocks; + + expect(addExperimentPlaceholderBlocks()(input)).toEqual(input); + }); + it('should return input if there are not up to 5 paragraph blocks', async () => { + const input = deepClone(styInput); + input.content.model.blocks = [ + { + type: 'headline', + }, + { + type: 'timestamp', + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + ]; + + expect(addExperimentPlaceholderBlocks()(input)).toEqual(input); + }); + it('should return input with all experiment placeholder blocks if on the Hindi service', async () => { + const input = deepClone(styInput); + input.content.model.blocks = [ + { + type: 'headline', + }, + { + type: 'timestamp', + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + ]; + const expected = { + metadata: { + type: 'STY', + options: { + allowAdvertising: true, + }, + locators: { + assetUri: '/news/media-333256', + }, + }, + content: { + model: { + blocks: [ + { + type: 'headline', + }, + { + type: 'timestamp', + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'experimentBlock', + model: { + showForVariation: 'variation_3', + }, + }, + { + type: 'experimentBlock', + model: { + showForVariation: 'variation_1', + part: 1, + }, + }, + { + type: 'experimentBlock', + model: { + showForVariation: 'control', + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'experimentBlock', + model: { + showForVariation: 'variation_1', + part: 2, + }, + }, + ], + }, + }, + }; + + expect(addExperimentPlaceholderBlocks('hindi')(input)).toEqual(expected); + }); + it('should return only the first half of the split recommendations if there are less than 10 paragraphs', async () => { + const input = deepClone(styInput); + input.content.model.blocks = [ + { + type: 'headline', + }, + { + type: 'timestamp', + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + ]; + const expected = { + metadata: { + type: 'STY', + options: { + allowAdvertising: true, + }, + locators: { + assetUri: '/news/media-333256', + }, + }, + content: { + model: { + blocks: [ + { + type: 'headline', + }, + { + type: 'timestamp', + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'text', + model: { + blocks: [ + { + type: 'paragraph', + }, + ], + }, + }, + { + type: 'experimentBlock', + model: { + showForVariation: 'variation_3', + }, + }, + { + type: 'experimentBlock', + model: { + showForVariation: 'variation_1', + part: 1, + }, + }, + { + type: 'experimentBlock', + model: { + showForVariation: 'control', + }, + }, + ], + }, + }, + }; + + expect(addExperimentPlaceholderBlocks('hindi')(input)).toEqual(expected); + }); +}); diff --git a/src/app/routes/cpsAsset/getInitialData/index.js b/src/app/routes/cpsAsset/getInitialData/index.js index 0d172b9afae..16e2da35a78 100644 --- a/src/app/routes/cpsAsset/getInitialData/index.js +++ b/src/app/routes/cpsAsset/getInitialData/index.js @@ -29,6 +29,7 @@ import getAdditionalPageData from '../utils/getAdditionalPageData'; import getErrorStatusCode from '../../utils/fetchPageData/utils/getErrorStatusCode'; import isListWithLink from '../../utils/isListWithLink'; import addIndexToBlockGroups from '../../utils/sharedDataTransformers/addIndexToBlockGroups'; +// import addExperimentPlaceholderBlocks from './addExperimentPlaceholderBlocks'; export const only = (pageTypes, transformer) => @@ -46,7 +47,8 @@ const formatPageData = pipe( only([STORY_PAGE], insertPodcastPromo), ); -const processOptimoBlocks = toggles => +// eslint-disable-next-line no-unused-vars +const processOptimoBlocks = toggles => service => pipe( only([MEDIA_ASSET_PAGE], processUnavailableMedia), addHeadlineBlock, @@ -61,6 +63,7 @@ const processOptimoBlocks = toggles => addMpuBlock, addIdsToBlocks, applyBlockPositioning, + // addExperimentPlaceholderBlocks(service), cpsOnlyOnwardJourneys, addIndexToBlockGroups(isListWithLink, { blockGroupType: 'listWithLink', @@ -70,14 +73,14 @@ const processOptimoBlocks = toggles => // Here pathname is passed as a prop specifically for CPS includes // This will most likely change in issue #6784 so it is temporary for now -const transformJson = async (json, pathname, toggles) => { +const transformJson = async (json, pathname, toggles, service) => { try { const formattedPageData = formatPageData(json); const optimoBlocks = await convertToOptimoBlocks( formattedPageData, pathname, ); - return processOptimoBlocks(toggles)(optimoBlocks); + return processOptimoBlocks(toggles)(service)(optimoBlocks); } catch (e) { // We can arrive here if the CPS asset is a FIX page // TODO: consider checking if FIX then don't transform JSON @@ -120,7 +123,7 @@ export default async ({ return { status, pageData: { - ...(await transformJson(json, pathname, toggles)), + ...(await transformJson(json, pathname, toggles, service)), ...processedAdditionalData, }, };