From fc0814f01c9129edd999ec1e9d275c8625d02572 Mon Sep 17 00:00:00 2001 From: Nabeel Khan Date: Fri, 20 Sep 2024 16:45:19 +0100 Subject: [PATCH 01/49] changed value for title to match morph --- src/app/components/MediaLoader/configs/audio.ts | 4 +++- src/app/components/MediaLoader/configs/tv.ts | 1 + src/app/components/MediaLoader/fixture.ts | 10 ++++++++++ .../MediaLoader/utils/buildSettings.test.ts | 14 +++++++++++++- 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/app/components/MediaLoader/configs/audio.ts b/src/app/components/MediaLoader/configs/audio.ts index a94080d4bc3..666a4cbe7c7 100644 --- a/src/app/components/MediaLoader/configs/audio.ts +++ b/src/app/components/MediaLoader/configs/audio.ts @@ -6,6 +6,8 @@ export default ({ basePlayerConfig, }: ConfigBuilderProps): ConfigBuilderReturnProps => { const { model: audioMediaBlock } = filterForBlockType(blocks, 'audio'); + const { model: mediaOverrides } = + filterForBlockType(blocks, 'mediaOverrides') || {}; const audio = audioMediaBlock?.versions?.[0] || {}; const holdingImageURL = `https://${audioMediaBlock.imageUrl}`; @@ -18,7 +20,7 @@ export default ({ episodePID: audioMediaBlock.id, }, playlistObject: { - title: audioMediaBlock.episodeTitle, + title: mediaOverrides?.pageTitleOverride, holdingImageURL, items: [ { diff --git a/src/app/components/MediaLoader/configs/tv.ts b/src/app/components/MediaLoader/configs/tv.ts index ea78fec7016..402a8ecd580 100644 --- a/src/app/components/MediaLoader/configs/tv.ts +++ b/src/app/components/MediaLoader/configs/tv.ts @@ -12,6 +12,7 @@ export default ({ filterForBlockType(blocks, 'mediaOverrides') || {}; const video = tvMediaBlock?.versions?.[0] || {}; const holdingImageURL = `https://${tvMediaBlock.imageUrl}`; + console.log(mediaOverrides.pageTitleOverride); const placeholderConfig = buildPlaceholderConfig({ title: tvMediaBlock.episodeTitle, diff --git a/src/app/components/MediaLoader/fixture.ts b/src/app/components/MediaLoader/fixture.ts index 52696431e02..698ca84c191 100644 --- a/src/app/components/MediaLoader/fixture.ts +++ b/src/app/components/MediaLoader/fixture.ts @@ -320,6 +320,15 @@ export const mediaOverridesBlock = { type: 'mediaOverrides', }; +export const afriqueMediaOverridesBlock = { + model: { + language: 'fr', + pageIdentifierOverride: 'afrique.bbc_afrique_radio.w172zn0kxd65h3g.page', + pageTitleOverride: "Bulletin D'informations", + }, + type: 'mediaOverrides', +}; + export const aresMediaLiveStreamBlocks = [ { id: '3e29a5f5', @@ -367,4 +376,5 @@ export const onDemandTvBlocks = [onDemandTvBlock]; export const onDemandTvBlocksWithOverrides = [ onDemandTvBlock, mediaOverridesBlock, + afriqueMediaOverridesBlock, ]; diff --git a/src/app/components/MediaLoader/utils/buildSettings.test.ts b/src/app/components/MediaLoader/utils/buildSettings.test.ts index ae6931b7b4f..add7149e495 100644 --- a/src/app/components/MediaLoader/utils/buildSettings.test.ts +++ b/src/app/components/MediaLoader/utils/buildSettings.test.ts @@ -842,9 +842,21 @@ describe('buildSettings', () => { ); it('Should process an On Demand Audio block into a valid playlist item.', () => { + const afriqueAudioMediaOverrides = { + model: { + language: 'fr', + pageIdentifierOverride: + 'afrique.bbc_afrique_radio.w172zn0kxd65h3g.page', + pageTitleOverride: "Bulletin D'informations", + }, + type: 'mediaOverrides', + }; const result = buildSettings({ ...afriqueAudioBaseSettings, - blocks: afriqueAudioMediaBlocks as MediaBlock[], + blocks: [ + ...afriqueAudioMediaBlocks, + afriqueAudioMediaOverrides, + ] as MediaBlock[], pageType: MEDIA_PAGE, }); From 108287fced51212acfffb44e32791c1649ecf96f Mon Sep 17 00:00:00 2001 From: chrish01 Date: Mon, 23 Sep 2024 14:58:26 +0100 Subject: [PATCH 02/49] replace AVPlayer with MediaLoader for audio --- .../OnDemandAudioPage/OnDemandAudioPage.tsx | 42 +++++++------------ 1 file changed, 15 insertions(+), 27 deletions(-) diff --git a/src/app/pages/OnDemandAudioPage/OnDemandAudioPage.tsx b/src/app/pages/OnDemandAudioPage/OnDemandAudioPage.tsx index da13a26ad74..1472bdf492e 100644 --- a/src/app/pages/OnDemandAudioPage/OnDemandAudioPage.tsx +++ b/src/app/pages/OnDemandAudioPage/OnDemandAudioPage.tsx @@ -1,13 +1,11 @@ import React, { useContext } from 'react'; import path from 'ramda/src/path'; import is from 'ramda/src/is'; -import pathOr from 'ramda/src/pathOr'; import useLocation from '#hooks/useLocation'; import ComscoreAnalytics from '#containers/ComscoreAnalytics'; import Grid, { GelPageGrid } from '#components/Grid'; import StyledRadioHeadingContainer from '#containers/OnDemandHeading/StyledRadioHeadingContainer'; import OnDemandParagraphContainer from '#containers/OnDemandParagraph'; -import AVPlayer from '#containers/AVPlayer'; import EpisodeImage from '#containers/OnDemandImage'; import getMediaId from '#lib/utilities/getMediaId'; import getMasterbrand from '#lib/utilities/getMasterbrand'; @@ -18,26 +16,20 @@ import RadioScheduleContainer from '#containers/RadioSchedule'; import RecentAudioEpisodes from '#containers/EpisodeList/RecentAudioEpisodes'; import FooterTimestamp from '#containers/OnDemandFooterTimestamp'; import PodcastExternalLinks from '#containers/PodcastExternalLinks'; -import { getEnvConfig } from '#app/lib/utilities/getEnvConfig'; import { PageTypes } from '#app/models/types/global'; import { RadioScheduleData } from '#app/models/types/radioSchedule'; import { ContentType } from '#app/components/ChartbeatAnalytics/types'; -import { OnDemandAudioBlock } from '#app/models/types/media'; +import { OnDemandAudioBlock, MediaOverrides } from '#app/models/types/media'; import styles from './index.styles'; import ATIAnalytics from '../../components/ATIAnalytics'; import ChartbeatAnalytics from '../../components/ChartbeatAnalytics'; import MetadataContainer from '../../components/Metadata'; import LinkedData from '../../components/LinkedData'; import { ServiceContext } from '../../contexts/ServiceContext'; +import MediaLoader from '#app/components/MediaLoader'; const SKIP_LINK_ANCHOR_ID = 'content'; -const staticAssetsPath = `${ - getEnvConfig().SIMORGH_PUBLIC_STATIC_ASSETS_ORIGIN -}${getEnvConfig().SIMORGH_PUBLIC_STATIC_ASSETS_PATH}`; - -const audioPlaceholderImageSrc = `${staticAssetsPath}images/amp_audio_placeholder.png`; - const getGroups = ( zero: number | boolean, one: number | boolean, @@ -104,7 +96,6 @@ export interface OnDemandAudioProps { const OnDemandAudioPage = ({ pageData, mediaIsAvailable, - MediaError, }: OnDemandAudioProps) => { const idAttr = SKIP_LINK_ANCHOR_ID; const { @@ -132,7 +123,7 @@ const OnDemandAudioPage = ({ const pageType = path(['metadata', 'type'], pageData); const location = useLocation(); - const { dir, liveRadioOverrides, lang, service, translations, serviceName } = + const { dir, liveRadioOverrides, lang, service, serviceName } = useContext(ServiceContext); const oppDir = dir === 'rtl' ? 'ltr' : 'rtl'; @@ -149,12 +140,6 @@ const OnDemandAudioPage = ({ queryString: location.search, }); - const iframeTitle = pathOr( - 'Audio player', - ['mediaAssetPage', 'audioPlayer'], - translations, - ); - const hasRecentEpisodes = recentEpisodes && Boolean(recentEpisodes.length); const metadataTitle = episodeTitle ? `${episodeTitle} - ${brandTitle} - ${serviceName}` @@ -168,6 +153,17 @@ const OnDemandAudioPage = ({ } : {}; + const mediaOverrides: MediaOverrides = { + model: { + language, + pageIdentifierOverride: `${service}.bbc_${service}_radio.${episodeId}.page`, + pageTitleOverride: promoBrandTitle, + }, + type: 'mediaOverrides', + }; + + const mediaBlocksWithOverrides = [...pageData?.mediaBlocks?, mediaOverrides]; + return ( <> @@ -238,15 +234,7 @@ const OnDemandAudioPage = ({ {mediaIsAvailable ? ( - + ) : ( // @ts-expect-error allow rendering of MediaError component when media is not available From ff274ed68ac0958c0ab3d145ff7eb91cf92a13cd Mon Sep 17 00:00:00 2001 From: Nabeel Khan Date: Mon, 23 Sep 2024 16:16:40 +0100 Subject: [PATCH 03/49] fixed typescript erros --- src/app/pages/OnDemandAudioPage/OnDemandAudioPage.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/pages/OnDemandAudioPage/OnDemandAudioPage.tsx b/src/app/pages/OnDemandAudioPage/OnDemandAudioPage.tsx index 1472bdf492e..246e46387ba 100644 --- a/src/app/pages/OnDemandAudioPage/OnDemandAudioPage.tsx +++ b/src/app/pages/OnDemandAudioPage/OnDemandAudioPage.tsx @@ -64,6 +64,7 @@ const PageGrid = ({ children }: any) => ( export interface OnDemandAudioProps { pageData: { + mediaBlocks: OnDemandAudioBlock[]; metadata: { type: PageTypes; }; @@ -87,7 +88,6 @@ export interface OnDemandAudioProps { episodeTitle: string; externalLinks: string[]; contentType: ContentType; - mediaBlocks?: OnDemandAudioBlock[]; }; mediaIsAvailable?: boolean; MediaError: React.Component; @@ -162,7 +162,7 @@ const OnDemandAudioPage = ({ type: 'mediaOverrides', }; - const mediaBlocksWithOverrides = [...pageData?.mediaBlocks?, mediaOverrides]; + const mediaBlocksWithOverrides = [...pageData?.mediaBlocks, mediaOverrides]; return ( <> From e606d4a9777a331fe5c0853e15819009a03e0233 Mon Sep 17 00:00:00 2001 From: chrish01 Date: Mon, 23 Sep 2024 17:56:53 +0100 Subject: [PATCH 04/49] reorder imports --- src/app/pages/OnDemandAudioPage/OnDemandAudioPage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/pages/OnDemandAudioPage/OnDemandAudioPage.tsx b/src/app/pages/OnDemandAudioPage/OnDemandAudioPage.tsx index 246e46387ba..4025d496e97 100644 --- a/src/app/pages/OnDemandAudioPage/OnDemandAudioPage.tsx +++ b/src/app/pages/OnDemandAudioPage/OnDemandAudioPage.tsx @@ -16,6 +16,7 @@ import RadioScheduleContainer from '#containers/RadioSchedule'; import RecentAudioEpisodes from '#containers/EpisodeList/RecentAudioEpisodes'; import FooterTimestamp from '#containers/OnDemandFooterTimestamp'; import PodcastExternalLinks from '#containers/PodcastExternalLinks'; +import MediaLoader from '#app/components/MediaLoader'; import { PageTypes } from '#app/models/types/global'; import { RadioScheduleData } from '#app/models/types/radioSchedule'; import { ContentType } from '#app/components/ChartbeatAnalytics/types'; @@ -26,7 +27,6 @@ import ChartbeatAnalytics from '../../components/ChartbeatAnalytics'; import MetadataContainer from '../../components/Metadata'; import LinkedData from '../../components/LinkedData'; import { ServiceContext } from '../../contexts/ServiceContext'; -import MediaLoader from '#app/components/MediaLoader'; const SKIP_LINK_ANCHOR_ID = 'content'; From 242f9a681276760ea1fadaf14e3107d5f62ce779 Mon Sep 17 00:00:00 2001 From: chrish01 Date: Tue, 24 Sep 2024 12:53:02 +0100 Subject: [PATCH 05/49] refactor error logging for unit tests --- src/testHelpers/setupTests.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/testHelpers/setupTests.js b/src/testHelpers/setupTests.js index 30f4b1eeabf..6df005d5319 100644 --- a/src/testHelpers/setupTests.js +++ b/src/testHelpers/setupTests.js @@ -1,5 +1,6 @@ import colours from 'colors'; import '@testing-library/jest-dom'; +import themes from '#app/components/ThemeProvider/themes/loadableConfig'; // Errors const FAILED_PROP = 'Failed prop'; @@ -27,7 +28,9 @@ const getFormattedMessage = (message, rest) => { let theMessage = message; if (typeof message === 'object') { - theMessage = JSON.stringify(message); + if (message?.stack) { + theMessage = message?.stack.toString(); + } else theMessage = JSON.stringify(message); } return theMessage.replace('%s', rest); From 6990f905f90660434fe4c2f189c9cdd04461fb44 Mon Sep 17 00:00:00 2001 From: chrish01 Date: Tue, 24 Sep 2024 12:53:36 +0100 Subject: [PATCH 06/49] undo deletion --- src/app/pages/OnDemandAudioPage/OnDemandAudioPage.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/app/pages/OnDemandAudioPage/OnDemandAudioPage.tsx b/src/app/pages/OnDemandAudioPage/OnDemandAudioPage.tsx index 4025d496e97..59abab001ee 100644 --- a/src/app/pages/OnDemandAudioPage/OnDemandAudioPage.tsx +++ b/src/app/pages/OnDemandAudioPage/OnDemandAudioPage.tsx @@ -96,6 +96,7 @@ export interface OnDemandAudioProps { const OnDemandAudioPage = ({ pageData, mediaIsAvailable, + MediaError, }: OnDemandAudioProps) => { const idAttr = SKIP_LINK_ANCHOR_ID; const { @@ -153,10 +154,14 @@ const OnDemandAudioPage = ({ } : {}; + const pageIdentifierOverride = isPodcast + ? `${service}.bbc_${service}_radio.podcasts.${episodeId}.page` + : `${service}.bbc_${service}_radio.${episodeId}.page`; + const mediaOverrides: MediaOverrides = { model: { language, - pageIdentifierOverride: `${service}.bbc_${service}_radio.${episodeId}.page`, + pageIdentifierOverride, pageTitleOverride: promoBrandTitle, }, type: 'mediaOverrides', From d204935ffb879ec3556509428fbfe46c9d3eec37 Mon Sep 17 00:00:00 2001 From: chrish01 Date: Tue, 24 Sep 2024 12:53:53 +0100 Subject: [PATCH 07/49] remove console log --- src/app/components/MediaLoader/configs/tv.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/app/components/MediaLoader/configs/tv.ts b/src/app/components/MediaLoader/configs/tv.ts index 402a8ecd580..ea78fec7016 100644 --- a/src/app/components/MediaLoader/configs/tv.ts +++ b/src/app/components/MediaLoader/configs/tv.ts @@ -12,7 +12,6 @@ export default ({ filterForBlockType(blocks, 'mediaOverrides') || {}; const video = tvMediaBlock?.versions?.[0] || {}; const holdingImageURL = `https://${tvMediaBlock.imageUrl}`; - console.log(mediaOverrides.pageTitleOverride); const placeholderConfig = buildPlaceholderConfig({ title: tvMediaBlock.episodeTitle, From 44a804a845cd666c5c1341b57e64e7981c782a02 Mon Sep 17 00:00:00 2001 From: chrish01 Date: Tue, 24 Sep 2024 15:49:36 +0100 Subject: [PATCH 08/49] adds persian podcast fixture data --- data/persian/bbc_persian_radio/p02pc9wf.json | 1377 ++++++++++++++++++ 1 file changed, 1377 insertions(+) create mode 100644 data/persian/bbc_persian_radio/p02pc9wf.json diff --git a/data/persian/bbc_persian_radio/p02pc9wf.json b/data/persian/bbc_persian_radio/p02pc9wf.json new file mode 100644 index 00000000000..5e6f6ec1f44 --- /dev/null +++ b/data/persian/bbc_persian_radio/p02pc9wf.json @@ -0,0 +1,1377 @@ +{ + "metadata": { + "id": "urn:bbc:ares:ws_media:brand:bbc_persian_radio/p02pc9wf", + "locators": { + "pid": "p0jrz542", + "brandPid": "p02pc9wf" + }, + "type": "WSRADIO", + "createdBy": "bbc_persian_radio", + "language": "fa", + "lastUpdated": 1727188926000, + "firstPublished": 1726914980000, + "lastPublished": 1726914980000, + "timestamp": 1726914980000, + "options": {}, + "analyticsLabels": { + "pageTitle": "پرگار - BBC News فارسی", + "pageIdentifier": "persian.bbc_persian_radio.podcasts.programmes.p02pc9wf.page", + "producerId": "69", + "contentType": "player-episode", + "producer": "PERSIAN" + }, + "passport": { + "home": "", + "taggings": [] + }, + "tags": {}, + "version": "v1.4.48", + "blockTypes": ["media"], + "title": "پرگار", + "releaseDateTimeStamp": 1726876800000, + "useSensitiveOnwardJourneys": false + }, + "content": { + "blocks": [ + { + "id": "p0jrz542", + "subType": "episode", + "format": "Audio", + "title": "", + "synopses": { + "short": "حیوان آزاری رایج در ایران ناشی از چیست؟", + "medium": "حیوان آزاری رایج در ایران ناشی از چیست؟ می توان حیوان را واجد حقوق اولیه ای چون حق حیات دانست و می توان حیوان دوستی را معیاری برای سلامت جوامع بشری نامید؟", + "long": "حیوان آزاری رایج در ایران ناشی از چیست؟ می توان حیوان را واجد حقوق اولیه ای چون حق حیات دانست و می توان حیوان دوستی را معیاری برای سلامت جوامع بشری نامید؟ مهمان‌ها: حسن یوسفی اشکوری؛ پژوهشگر مطالعات اسلامی، جلال ایجادی؛ زیست بوم شناس و عضو حزب سبزهای فرانسه و پژمان اکبرزاده؛ فعال مدنی و مدافع حقوق حیوانات." + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "embedding": true, + "advertising": false, + "versions": [ + { + "versionId": "p0jrz4d5", + "types": ["Podcast"], + "duration": 3270, + "durationISO8601": "PT54M30S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableFrom": 1726920000000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "رفتار با حیوانات", + "type": "media" + } + ] + }, + "promo": { + "headlines": { + "headline": "پرگار" + }, + "locators": { + "pid": "p0jrz542", + "brandPid": "p02pc9wf" + }, + "media": { + "id": "p0jrz542", + "subType": "episode", + "format": "Audio", + "title": "", + "synopses": { + "short": "حیوان آزاری رایج در ایران ناشی از چیست؟", + "medium": "حیوان آزاری رایج در ایران ناشی از چیست؟ می توان حیوان را واجد حقوق اولیه ای چون حق حیات دانست و می توان حیوان دوستی را معیاری برای سلامت جوامع بشری نامید؟", + "long": "حیوان آزاری رایج در ایران ناشی از چیست؟ می توان حیوان را واجد حقوق اولیه ای چون حق حیات دانست و می توان حیوان دوستی را معیاری برای سلامت جوامع بشری نامید؟ مهمان‌ها: حسن یوسفی اشکوری؛ پژوهشگر مطالعات اسلامی، جلال ایجادی؛ زیست بوم شناس و عضو حزب سبزهای فرانسه و پژمان اکبرزاده؛ فعال مدنی و مدافع حقوق حیوانات." + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "embedding": true, + "advertising": false, + "versions": [ + { + "versionId": "p0jrz4d5", + "types": ["Podcast"], + "duration": 3270, + "durationISO8601": "PT54M30S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableFrom": 1726920000000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "رفتار با حیوانات", + "type": "media" + }, + "indexImage": { + "id": "p02swnpg", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "height": 1080, + "width": 1920, + "altText": "Pargar Podcast", + "caption": "Roundtable in which our guests try to answer the challenging questions in modern society.", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1726876800000, + "brand": { + "pid": "p02pc9wf", + "title": "پرگار" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_persian_radio/p0jrz542", + "type": "ws_radio" + }, + "relatedContent": { + "site": { + "subType": "site", + "name": "Persian", + "uri": "/persian", + "type": "simple" + }, + "groups": [ + { + "type": "other-episode", + "promos": [ + { + "headlines": { + "headline": "پرگار" + }, + "locators": { + "pid": "p0jqk3lg", + "brandPid": "p02pc9wf" + }, + "media": { + "id": "p0jqk3lg", + "subType": "episode", + "format": "Audio", + "title": "", + "synopses": { + "short": "مهمان‌های برنامه: رزا پرتو؛ تحلیل‌گر مسائل سیاسی و حمیدرضا عزیزی؛ پژوهشگر روابط بین‌الملل", + "medium": "ترور فخری‌زاده و هنیه و ضربه‌های امنیتی دیگر به جمهوری اسلامی نه فقط به تاسیسات و عوامل و متحدان بلکه به غرور آن هم آسیب جدی رسانده. ........؟", + "long": "ترور فخری‌زاده و هنیه و ضربه‌های امنیتی دیگر به جمهوری اسلامی نه فقط به تاسیسات و عوامل و متحدان بلکه به غرور آن هم آسیب جدی رسانده. چنین وضعیتی به چه پاسخی علیه اسراییل خواهد انجامید؟ مهمان‌های برنامه: رزا پرتو؛ تحلیل‌گر مسائل سیاسی و حمیدرضا عزیزی؛ پژوهشگر روابط بین‌الملل." + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "embedding": true, + "advertising": false, + "versions": [ + { + "versionId": "p0jqjznv", + "types": ["Podcast"], + "duration": 3427, + "durationISO8601": "PT57M7S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableFrom": 1726315200000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "ایران، اسرائیل، کارت هسته‌ای", + "type": "media" + }, + "indexImage": { + "id": "p02swnpg", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "height": 1080, + "width": 1920, + "altText": "Pargar Podcast", + "caption": "Roundtable in which our guests try to answer the challenging questions in modern society.", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1726272000000, + "brand": { + "pid": "p02pc9wf", + "title": "پرگار" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_persian_radio/p0jqk3lg", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "پرگار" + }, + "locators": { + "pid": "p0jp4h0d", + "brandPid": "p02pc9wf" + }, + "media": { + "id": "p0jp4h0d", + "subType": "episode", + "format": "Audio", + "title": "", + "synopses": { + "short": "هنر و ادبیات در عصر هوش مصنوعی", + "long": "عاقبت هنر و ادبیات در دنیایی که بازیگر همه‌فن حریف در آن هوش مصنوعی باشد چه خواهد بود؟\nآیا حیطه خلاقیت هنری انسان می‌تواند از هجوم سیل‌آسای هوش مصنوعی جان به در برد؟\nمیهمان‌ها:\nعلیرضا آبیز، شاعر\nوحید وحدت، استاد دانشگاه" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "embedding": true, + "advertising": false, + "versions": [ + { + "versionId": "p0jp4fmf", + "types": ["Podcast"], + "duration": 3472, + "durationISO8601": "PT57M52S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableFrom": 1725717600000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "هنر و ادبیات در عصر هوش مصنوعی", + "type": "media" + }, + "indexImage": { + "id": "p02swnpg", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "height": 1080, + "width": 1920, + "altText": "Pargar Podcast", + "caption": "Roundtable in which our guests try to answer the challenging questions in modern society.", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1725667200000, + "brand": { + "pid": "p02pc9wf", + "title": "پرگار" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_persian_radio/p0jp4h0d", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "پرگار" + }, + "locators": { + "pid": "p0jmrnsb", + "brandPid": "p02pc9wf" + }, + "media": { + "id": "p0jmrnsb", + "subType": "episode", + "format": "Audio", + "title": "", + "synopses": { + "short": "آیا نفت و گاز در آینده اهمیت خود را حفظ خواهد کرد و...", + "medium": "آیا نفت و گاز در آینده اهمیت خود را حفظ خواهد کرد و کشورهای صادرکننده‌ی آن خواهند توانست جایگاه ژئوپولیتیک خود را نگه دارند؟", + "long": "آیا نفت و گاز در آینده اهمیت خود را حفظ خواهد کرد و کشورهای صادرکننده‌ی آن خواهند توانست جایگاه ژئوپولیتیک خود را نگه دارند؟ مهمان‌های برنامه: جواد کی‌پور؛ کارشناس انرژی و علم صالح؛ استاد دانشگاه." + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "embedding": true, + "advertising": false, + "versions": [ + { + "versionId": "p0jmrlx2", + "types": ["Podcast"], + "duration": 3420, + "durationISO8601": "PT57M", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableFrom": 1725105600000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "سیاست‌گذاری نفت و گاز، شرق یا غرب؟", + "type": "media" + }, + "indexImage": { + "id": "p02swnpg", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "height": 1080, + "width": 1920, + "altText": "Pargar Podcast", + "caption": "Roundtable in which our guests try to answer the challenging questions in modern society.", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1725062400000, + "brand": { + "pid": "p02pc9wf", + "title": "پرگار" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_persian_radio/p0jmrnsb", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "پرگار" + }, + "locators": { + "pid": "p0jldj5f", + "brandPid": "p02pc9wf" + }, + "media": { + "id": "p0jldj5f", + "subType": "episode", + "format": "Audio", + "title": "", + "synopses": { + "short": "مشروعیت مفهومی‌ست که در ادوار انتخاباتی در ایران مرتب به آن ارجاع داده می‌شود.", + "medium": "مشروعیت مفهومی‌ست که در ادوار انتخاباتی در ایران مرتب به آن ارجاع داده می‌شود.", + "long": "مشروعیت مفهومی‌ست که در ادوار انتخاباتی در ایران مرتب به آن ارجاع داده می‌شود. ولی آیا فهم واضحی از مشروعیت و حداقلی از توافق بر سر آن وجود دارد تا این حد از ارجاع به آن را موجه سازد؟ مهمان‌های برنامه: جمشید فاروقی؛ پژوهشگر فلسفه سیاسی و امیریحیی آیت اللهی؛ پژوهشگر فلسفه سیاسی." + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "embedding": true, + "advertising": false, + "versions": [ + { + "versionId": "p0jldhv9", + "types": ["Podcast"], + "duration": 3525, + "durationISO8601": "PT58M45S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableFrom": 1724500800000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "مشروعیت یعنی چه؟", + "type": "media" + }, + "indexImage": { + "id": "p02swnpg", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "height": 1080, + "width": 1920, + "altText": "Pargar Podcast", + "caption": "Roundtable in which our guests try to answer the challenging questions in modern society.", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1724457600000, + "brand": { + "pid": "p02pc9wf", + "title": "پرگار" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_persian_radio/p0jldj5f", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "پرگار" + }, + "locators": { + "pid": "p0jk0lgt", + "brandPid": "p02pc9wf" + }, + "media": { + "id": "p0jk0lgt", + "subType": "episode", + "format": "Audio", + "title": "", + "synopses": { + "short": "روانشناسی تا قرن نوزده یک حیطه‌ی دانش مستقل نبود .......", + "medium": "روانشناسی تا قرن نوزده یک حیطه‌ی دانش مستقل نبود و اغلب فیلسوف‌ها بودند که حرف‌های روانشناسانه می‌زدند.", + "long": "روانشناسی تا قرن نوزده یک حیطه‌ی دانش مستقل نبود و اغلب فیلسوف‌ها بودند که حرف‌های روانشناسانه می‌زدند. از آن زمان نظریه‌‌پردازان روانشناس با پی‌ریزی مرزهای روانشناسی با دانش‌های، دیگر همواره در پی دفاع از رشته و حرفه‌ی خود بوده‌اند. چرا؟ مهمان‌های برنامه: رضا کاظم‌زاده؛ روانشناس و امانوئل شکریان؛ منتقد فرهنگی." + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "embedding": true, + "advertising": false, + "versions": [ + { + "versionId": "p0jk0jnp", + "types": ["Podcast"], + "duration": 3592, + "durationISO8601": "PT59M52S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableFrom": 1723896000000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "روانشناسی، در بحران دائمی؟", + "type": "media" + }, + "indexImage": { + "id": "p02swnpg", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "height": 1080, + "width": 1920, + "altText": "Pargar Podcast", + "caption": "Roundtable in which our guests try to answer the challenging questions in modern society.", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1723852800000, + "brand": { + "pid": "p02pc9wf", + "title": "پرگار" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_persian_radio/p0jk0lgt", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "پرگار" + }, + "locators": { + "pid": "p0jhp6ld", + "brandPid": "p02pc9wf" + }, + "media": { + "id": "p0jhp6ld", + "subType": "episode", + "format": "Audio", + "title": "", + "synopses": { + "short": "بالا گرفتن تنش با اسراییل چه تاثیری بر سمت و سوی سیاست در ایران خواهد داشت؟ ف", + "medium": "بالا گرفتن تنش با اسراییل چه تاثیری بر سمت و سوی سیاست در ایران خواهد داشت؟ فضای داخل امنیتی‌تر و سیاست خارجی شرق‌گراتر می‌شود یا مسیر متفاوتی در پیش گرفته می‌شود؟", + "long": "بالا گرفتن تنش با اسراییل چه تاثیری بر سمت و سوی سیاست در ایران خواهد داشت؟ فضای داخل امنیتی‌تر و سیاست خارجی شرق‌گراتر می‌شود یا مسیر متفاوتی در پیش گرفته می‌شود؟ میهمان‌ها: بابک دربیکی؛ تحلیل‌گر سیاسی و امیرمصدق کاتوزیان؛ تحلیل‌گر سیاسی." + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "embedding": true, + "advertising": false, + "versions": [ + { + "versionId": "p0jhp5wx", + "types": ["Podcast"], + "duration": 3529, + "durationISO8601": "PT58M49S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableFrom": 1723291200000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "سایه‌ی جنگ، تاثیر آن بر اصلاحات", + "type": "media" + }, + "indexImage": { + "id": "p02swnpg", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "height": 1080, + "width": 1920, + "altText": "Pargar Podcast", + "caption": "Roundtable in which our guests try to answer the challenging questions in modern society.", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1723248000000, + "brand": { + "pid": "p02pc9wf", + "title": "پرگار" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_persian_radio/p0jhp6ld", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "پرگار" + }, + "locators": { + "pid": "p0jg96ps", + "brandPid": "p02pc9wf" + }, + "media": { + "id": "p0jg96ps", + "subType": "episode", + "format": "Audio", + "title": "", + "synopses": { + "short": "آیا عمر‌بن خطاب مبدع نهی از منکر به شکلی خشک و بنیادگرایانه بود؟", + "medium": "آیا عمر‌بن خطاب مبدع نهی از منکر به شکلی خشک و بنیادگرایانه بود؟ از سوی دیگر، آیا او نبود که دیوان‌سالاری و نظم ونسق امپراتوری اسلامی را بنیاد گذاشت؟", + "long": "آیا عمر‌بن خطاب مبدع نهی از منکر به شکلی خشک و بنیادگرایانه بود؟ از سوی دیگر، آیا او نبود که دیوان‌سالاری و نظم ونسق امپراتوری اسلامی را بنیاد گذاشت؟ میهمان‌ها: مجیب الرحمان رحیمی؛ پژوهشگر تاریخ اسلام، حسن یوسفی اشکوری؛ پژوهشگر تاریخ اسلام و داریوش محمدپور؛ استاد دانشگاه." + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "embedding": true, + "advertising": false, + "versions": [ + { + "versionId": "p0jg9652", + "types": ["Podcast"], + "duration": 3137, + "durationISO8601": "PT52M17S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableFrom": 1722686400000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "عمربن خطاب، قسمت دوم", + "type": "media" + }, + "indexImage": { + "id": "p02swnpg", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "height": 1080, + "width": 1920, + "altText": "Pargar Podcast", + "caption": "Roundtable in which our guests try to answer the challenging questions in modern society.", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1722643200000, + "brand": { + "pid": "p02pc9wf", + "title": "پرگار" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_persian_radio/p0jg96ps", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "پرگار" + }, + "locators": { + "pid": "p0jdy02r", + "brandPid": "p02pc9wf" + }, + "media": { + "id": "p0jdy02r", + "subType": "episode", + "format": "Audio", + "title": "", + "synopses": { + "short": "عمر‌بن‌خطاب چگونه خلیفه‌ای بود؟", + "medium": "ساده‌زیست بود و پسرانش را وادار کرد در معیشت به او‌ که خلیفه‌ی یک امپراتوری ثروتمند شده بود اتکا نکنند. عمر‌بن‌خطاب چگونه خلیفه‌ای بود؟", + "long": "ساده‌زیست بود و پسرانش را وادار کرد در معیشت به او‌ که خلیفه‌ی یک امپراتوری ثروتمند شده بود اتکا نکنند. عمر‌بن‌خطاب چگونه خلیفه‌ای بود؟ میهمان‌ها: مجیب الرحمان رحیمی؛ پژوهشگر تاریخ اسلام، حسن یوسفی اشکوری؛ پژوهشگر تاریخ اسلام و داریوش محمدپور؛ استاد دانشگاه." + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "embedding": true, + "advertising": false, + "versions": [ + { + "versionId": "p0jdxzpy", + "types": ["Podcast"], + "duration": 3211, + "durationISO8601": "PT53M31S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableFrom": 1722081600000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "عمربن خطاب، قسمت اول", + "type": "media" + }, + "indexImage": { + "id": "p02swnpg", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "height": 1080, + "width": 1920, + "altText": "Pargar Podcast", + "caption": "Roundtable in which our guests try to answer the challenging questions in modern society.", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1722038400000, + "brand": { + "pid": "p02pc9wf", + "title": "پرگار" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_persian_radio/p0jdy02r", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "پرگار" + }, + "locators": { + "pid": "p0jcm18c", + "brandPid": "p02pc9wf" + }, + "media": { + "id": "p0jcm18c", + "subType": "episode", + "format": "Audio", + "title": "", + "synopses": { + "short": "لیبرالیسم را اگر بخواهیم بفهمیم باید به آرای جان لاک فیلسوف سده‌ی هفده انگلیس رجوع کنیم.", + "medium": "لیبرالیسم را اگر بخواهیم بفهمیم باید به آرای جان لاک فیلسوف سده‌ی هفده انگلیس رجوع کنیم. جان لاک چه گفت و اهمیت او در چیست؟ مهمان‌های برنامه: ایقان شهیدی وعباس ولی.", + "long": "لیبرالیسم را اگر بخواهیم بفهمیم باید به آرای جان لاک فیلسوف سده‌ی هفده انگلیس رجوع کنیم. جان لاک چه گفت و اهمیت او در چیست؟ مهمان‌های برنامه: ایقان شهیدی، پژوهشگر اندیشه سیاسی و عباس ولی، استاد علوم سیاسی." + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "embedding": true, + "advertising": false, + "versions": [ + { + "versionId": "p0jclvyn", + "types": ["Podcast"], + "duration": 3413, + "durationISO8601": "PT56M53S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableFrom": 1721476800000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "جان لاک، از پدران لیبرالیسم", + "type": "media" + }, + "indexImage": { + "id": "p02swnpg", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "height": 1080, + "width": 1920, + "altText": "Pargar Podcast", + "caption": "Roundtable in which our guests try to answer the challenging questions in modern society.", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1721433600000, + "brand": { + "pid": "p02pc9wf", + "title": "پرگار" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_persian_radio/p0jcm18c", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "پرگار" + }, + "locators": { + "pid": "p0jb6sxs", + "brandPid": "p02pc9wf" + }, + "media": { + "id": "p0jb6sxs", + "subType": "episode", + "format": "Audio", + "title": "", + "synopses": { + "short": "جمهوری اسلامی به آرمان فلسطین کمک کرده یا به آن ضربه زده؟", + "medium": "جمهوری اسلامی ایران آرمان فلسطین را آرمان خود می‌داند و می‌گوید تالش برای تحقق آن از اهداف بنیادی‌اش است. ولی جمهوری اسلامی به آرمان فلسطین کمک کرده یا به آن ضربه زده؟", + "long": "جمهوری اسلامی ایران آرمان فلسطین را آرمان خود می‌داند و می‌گوید تالش برای تحقق آن از اهداف بنیادی‌اش است. ولی جمهوری اسلامی به آرمان فلسطین کمک کرده یا به آن ضربه زده؟ \nمهمان‌های برنامه: کاملیا انتخابی‌فرد؛ سردبیر ایندیپندنت فارسی و تحلیل‌گر مسائل خاورمیانه و قیس قریشی؛ تحلیل‌گر جهان عرب." + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "embedding": true, + "advertising": false, + "versions": [ + { + "versionId": "p0jb6sn2", + "types": ["Podcast"], + "duration": 3452, + "durationISO8601": "PT57M32S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableFrom": 1720875540000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "ایران به آرمان فلسطین کمک کرده؟", + "type": "media" + }, + "indexImage": { + "id": "p02swnpg", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "height": 1080, + "width": 1920, + "altText": "Pargar Podcast", + "caption": "Roundtable in which our guests try to answer the challenging questions in modern society.", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1720828800000, + "brand": { + "pid": "p02pc9wf", + "title": "پرگار" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_persian_radio/p0jb6sxs", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "پرگار" + }, + "locators": { + "pid": "p0j8sk5l", + "brandPid": "p02pc9wf" + }, + "media": { + "id": "p0j8sk5l", + "subType": "episode", + "format": "Audio", + "title": "", + "synopses": { + "short": "آنارشیسم چیست؟ حرکت آنارشیستی چه مختصاتی دارد؟", + "medium": "آنارشیسم چیست؟ حرکت آنارشیستی چه مختصاتی دارد؟ چرا در تاریخ سیاسی ایران به رغم شناخت کم از آنارشیسم، از آن به عنوان ناسزای سیاسی استفاده شده است؟" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "embedding": true, + "advertising": false, + "versions": [ + { + "versionId": "p0j8sjkp", + "types": ["Podcast"], + "duration": 3273, + "durationISO8601": "PT54M33S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableFrom": 1720267200000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "آنارشیسم", + "type": "media" + }, + "indexImage": { + "id": "p02swnpg", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "height": 1080, + "width": 1920, + "altText": "Pargar Podcast", + "caption": "Roundtable in which our guests try to answer the challenging questions in modern society.", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1720224000000, + "brand": { + "pid": "p02pc9wf", + "title": "پرگار" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_persian_radio/p0j8sk5l", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "پرگار" + }, + "locators": { + "pid": "p0j5w684", + "brandPid": "p02pc9wf" + }, + "media": { + "id": "p0j5w684", + "subType": "episode", + "format": "Audio", + "title": "", + "synopses": { + "short": "اصلاح‌طلب‌ها در تلاشند تا مردم را به پای صندوق‌های رای بکشانند. آیا موفق می‌شوند؟", + "long": "در فاصله‌ای کوتاه از اعتراضات زن، زندگی، آزادی که به سرکوب شدید معترضان انجامید، اصلاح‌طلب‌ها در تلاشند تا مردم را به پای صندوق‌های رای بکشانند. آیا موفق می‌شوند؟\n\nمیهمان‌ها:\nشیوا محبوبی، فعال سیاسی\nفرهاد گوهردانی، پژوهشگر مطالعات توسعه" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "embedding": true, + "advertising": false, + "versions": [ + { + "versionId": "p0j5w5hq", + "types": ["Podcast"], + "duration": 3402, + "durationISO8601": "PT56M42S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableFrom": 1719070680000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "رادیکالیسم، بی‌تفاوتی، مشارکت؟", + "type": "media" + }, + "indexImage": { + "id": "p02swnpg", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "height": 1080, + "width": 1920, + "altText": "Pargar Podcast", + "caption": "Roundtable in which our guests try to answer the challenging questions in modern society.", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1719014400000, + "brand": { + "pid": "p02pc9wf", + "title": "پرگار" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_persian_radio/p0j5w684", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "پرگار" + }, + "locators": { + "pid": "p0j4g58r", + "brandPid": "p02pc9wf" + }, + "media": { + "id": "p0j4g58r", + "subType": "episode", + "format": "Audio", + "title": "", + "synopses": { + "short": "اخلاق انتخاباتی چیست و چه تفاوتی با اخلاق فردی دارد؟ عقل و احساس چه نقشی دارند؟", + "medium": "اخلاق انتخاباتی چیست و چه تفاوتی با اخلاق فردی دارد؟ عقل و احساس چه نقشی دارند؟\nمیهمان‌ها:\nحسین دباغ، مدرس فلسفه اخلاق\nپیمان عارف، تحلیلگر سیاسی" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "embedding": true, + "advertising": false, + "versions": [ + { + "versionId": "p0j4g4ns", + "types": ["Podcast"], + "duration": 3488, + "durationISO8601": "PT58M8S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableFrom": 1718460000000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "اخلاق انتخاباتی در انتخابات غیر اخلاقی", + "type": "media" + }, + "indexImage": { + "id": "p02swnpg", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "height": 1080, + "width": 1920, + "altText": "Pargar Podcast", + "caption": "Roundtable in which our guests try to answer the challenging questions in modern society.", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1718409600000, + "brand": { + "pid": "p02pc9wf", + "title": "پرگار" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_persian_radio/p0j4g58r", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "پرگار" + }, + "locators": { + "pid": "p0j30sk0", + "brandPid": "p02pc9wf" + }, + "media": { + "id": "p0j30sk0", + "subType": "episode", + "format": "Audio", + "title": "", + "synopses": { + "short": "دهه‌ی چهل در ایران", + "medium": "دهه‌ی چهل خورشیدی در ایران سال‌های صنعتی شدن و تغییرات بنیادی در بافت اجتماعی و دهه‌ی شکوفایی هنر و ادبیات ایران بود.", + "long": "دهه‌ی چهل خورشیدی در ایران سال‌های صنعتی شدن و تغییرات بنیادی در بافت اجتماعی و دهه‌ی شکوفایی هنر و ادبیات ایران بود. ولی آیا روندهای این دهه نبود که به انقلاب سال پنجاه و هفت انجامید؟" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "embedding": true, + "advertising": false, + "versions": [ + { + "versionId": "p0j30r68", + "types": ["Podcast"], + "duration": 3407, + "durationISO8601": "PT56M47S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableFrom": 1717848000000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "دهه‌ی چهل در ایران", + "type": "media" + }, + "indexImage": { + "id": "p02swnpg", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "height": 1080, + "width": 1920, + "altText": "Pargar Podcast", + "caption": "Roundtable in which our guests try to answer the challenging questions in modern society.", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1717804800000, + "brand": { + "pid": "p02pc9wf", + "title": "پرگار" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_persian_radio/p0j30sk0", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "پرگار" + }, + "locators": { + "pid": "p0j1n6dc", + "brandPid": "p02pc9wf" + }, + "media": { + "id": "p0j1n6dc", + "subType": "episode", + "format": "Audio", + "title": "", + "synopses": { + "short": "اگزیستانسیالیسم صاحب یک دستگاه اخلاقی منسجم هست؟", + "medium": "اگزیستانسیالیسم صاحب یک دستگاه اخلاقی منسجم هست؟ مرام اگزیستانسیالیستی مرامی نخبه‌گرایانه نیست؟ اگزیستانسیالیسم چگونه وارد ایران شد و چه جاذبه‌ای برای روشنفکران ایرانی داشت؟", + "long": "اگزیستانسیالیسم صاحب یک دستگاه اخلاقی منسجم هست؟ مرام اگزیستانسیالیستی مرامی نخبه‌گرایانه نیست؟ اگزیستانسیالیسم چگونه وارد ایران شد و چه جاذبه‌ای برای روشنفکران ایرانی داشت؟ مهمان‌ها منوچهر حقیقی‌راد و فرهاد سلمانیان." + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "embedding": true, + "advertising": false, + "versions": [ + { + "versionId": "p0j1n3x6", + "types": ["Podcast"], + "duration": 3029, + "durationISO8601": "PT50M29S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableFrom": 1717243200000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "اگزیستانسیالیسم، قسمت دوم", + "type": "media" + }, + "indexImage": { + "id": "p02swnpg", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "height": 1080, + "width": 1920, + "altText": "Pargar Podcast", + "caption": "Roundtable in which our guests try to answer the challenging questions in modern society.", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1717200000000, + "brand": { + "pid": "p02pc9wf", + "title": "پرگار" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_persian_radio/p0j1n6dc", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "پرگار" + }, + "locators": { + "pid": "p0j09d2y", + "brandPid": "p02pc9wf" + }, + "media": { + "id": "p0j09d2y", + "subType": "episode", + "format": "Audio", + "title": "", + "synopses": { + "short": "چه عواملی منجر به شکل‌گیری مضامین اگزیستانسیالیستی در اوایل قرن بیستم شدند؟", + "long": "چه عواملی منجر به شکل‌گیری مضامین اگزیستانسیالیستی در اوایل قرن بیستم شدند؟ آیا می‌توان از آرای متفکرانی چون کی‌یر کگور، هایدگر و سارتر برداشت واحدی در خصوص اگزیستانسیالیسم داشت؟ \n\nمیهمان‌ها:\nمنوچهر حقیقی‌راد، پژوهشگر فلسفه\nفرهاد سلمانیان، پژوهشگر فلسفه" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "embedding": true, + "advertising": false, + "versions": [ + { + "versionId": "p0j09cgv", + "types": ["Podcast"], + "duration": 3035, + "durationISO8601": "PT50M35S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableFrom": 1716646740000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "اگزیستانسیالیسم، قسمت اول", + "type": "media" + }, + "indexImage": { + "id": "p02swnpg", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "height": 1080, + "width": 1920, + "altText": "Pargar Podcast", + "caption": "Roundtable in which our guests try to answer the challenging questions in modern society.", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1716595200000, + "brand": { + "pid": "p02pc9wf", + "title": "پرگار" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_persian_radio/p0j09d2y", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "پرگار" + }, + "locators": { + "pid": "p0hyvsw1", + "brandPid": "p02pc9wf" + }, + "media": { + "id": "p0hyvsw1", + "subType": "episode", + "format": "Audio", + "title": "", + "synopses": { + "short": "آیا موقعیت دین در ایران امروز، برای دینداران نگران‌کننده است؟", + "long": "آیا موقعیت دین در ایران امروز، برای دینداران نگران‌کننده است؟ مناسبت دین و دینداری با سبک زندگی امروزی در ایران چیست و آیا ایران وارد دوران پسا دینی شده است؟ چه تفاوتی میان «دین مدنی» و دینی که از آن به عنوان «دینِ توده‌ای» یاد می‌شود وجود دارد؟" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "embedding": true, + "advertising": false, + "versions": [ + { + "versionId": "p0hyvnq4", + "types": ["Podcast"], + "duration": 3540, + "durationISO8601": "PT59M", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableFrom": 1716042120000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "نقد باورهای دینی، چگونه؟", + "type": "media" + }, + "indexImage": { + "id": "p02swnpg", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "height": 1080, + "width": 1920, + "altText": "Pargar Podcast", + "caption": "Roundtable in which our guests try to answer the challenging questions in modern society.", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1715990400000, + "brand": { + "pid": "p02pc9wf", + "title": "پرگار" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_persian_radio/p0hyvsw1", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "پرگار" + }, + "locators": { + "pid": "p0hxg3f5", + "brandPid": "p02pc9wf" + }, + "media": { + "id": "p0hxg3f5", + "subType": "episode", + "format": "Audio", + "title": "", + "synopses": { + "short": "آیا جریان پادشاهی‌خواه توانسته مخالفان جمهوری اسلامی را با خود همسو کند؟" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "embedding": true, + "advertising": false, + "versions": [ + { + "versionId": "p0hxg360", + "types": ["Podcast"], + "duration": 3418, + "durationISO8601": "PT56M58S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableFrom": 1715437680000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "آیا افراطی‌ها بر جریان پادشاهی غالب شده‌اند؟", + "type": "media" + }, + "indexImage": { + "id": "p02swnpg", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "height": 1080, + "width": 1920, + "altText": "Pargar Podcast", + "caption": "Roundtable in which our guests try to answer the challenging questions in modern society.", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1715385600000, + "brand": { + "pid": "p02pc9wf", + "title": "پرگار" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_persian_radio/p0hxg3f5", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "پرگار" + }, + "locators": { + "pid": "p0hw36h2", + "brandPid": "p02pc9wf" + }, + "media": { + "id": "p0hw36h2", + "subType": "episode", + "format": "Audio", + "title": "", + "synopses": { + "short": "نگرانی‌ها از نفوذ کلمات و عبارات انگلیسی در زبان فارسی تا چه حد بجاست؟" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "embedding": true, + "advertising": false, + "versions": [ + { + "versionId": "p0hw2yh4", + "types": ["Podcast"], + "duration": 3662, + "durationISO8601": "PT1H1M2S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableFrom": 1714833900000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "ترکیب فارسی و انگلیسی، نگران کننده؟", + "type": "media" + }, + "indexImage": { + "id": "p02swnpg", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "height": 1080, + "width": 1920, + "altText": "Pargar Podcast", + "caption": "Roundtable in which our guests try to answer the challenging questions in modern society.", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1714780800000, + "brand": { + "pid": "p02pc9wf", + "title": "پرگار" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_persian_radio/p0hw36h2", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "پرگار" + }, + "locators": { + "pid": "p0htl02q", + "brandPid": "p02pc9wf" + }, + "media": { + "id": "p0htl02q", + "subType": "episode", + "format": "Audio", + "title": "", + "synopses": { + "short": "چه کسی رستگار می‌شود؟ گوش سپردن به یک پیامبر است که مایه‌ی رستگاری می‌شود یا نیک بودن؟" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "embedding": true, + "advertising": false, + "versions": [ + { + "versionId": "p0htkn1g", + "types": ["Podcast"], + "duration": 3164, + "durationISO8601": "PT52M44S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableFrom": 1714219740000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "رستگاری", + "type": "media" + }, + "indexImage": { + "id": "p02swnpg", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p02swnpg.jpg", + "height": 1080, + "width": 1920, + "altText": "Pargar Podcast", + "caption": "Roundtable in which our guests try to answer the challenging questions in modern society.", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1714176000000, + "brand": { + "pid": "p02pc9wf", + "title": "پرگار" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_persian_radio/p0htl02q", + "type": "ws_radio" + } + ] + } + ] + } +} From 61ece32d342dc4462a593344ae4029696de80143 Mon Sep 17 00:00:00 2001 From: chrish01 Date: Tue, 24 Sep 2024 15:50:31 +0100 Subject: [PATCH 09/49] tests for persian podcast overrides --- .../pages/OnDemandAudioPage/index.test.tsx | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src/app/pages/OnDemandAudioPage/index.test.tsx b/src/app/pages/OnDemandAudioPage/index.test.tsx index 20d65ad5fdc..b7dfa198a7b 100644 --- a/src/app/pages/OnDemandAudioPage/index.test.tsx +++ b/src/app/pages/OnDemandAudioPage/index.test.tsx @@ -8,6 +8,7 @@ import zhongwenPageData from '#data/zhongwen/bbc_cantonese_radio/w172xf3r5x8hw4v import indonesiaPageData from '#data/indonesia/bbc_indonesian_radio/w172xh267fpn19l.json'; import afaanoromooPageData from '#data/afaanoromoo/bbc_afaanoromoo_radio/w13xttnw.json'; import arabicPodcastPageData from '#data/arabic/podcasts/p02pc9qc/p08wtg4d.json'; +import persianPodcastPageData from '#data/persian/bbc_persian_radio/p02pc9wf.json'; import * as analyticsUtils from '#lib/analyticsUtils'; import { ToggleContextProvider } from '#contexts/ToggleContext'; import getInitialData from '#app/routes/onDemandAudio/getInitialData'; @@ -23,6 +24,7 @@ import { import { ServiceContextProvider } from '../../contexts/ServiceContext'; import koreanPageWithScheduleData from './fixtureData/korean.json'; import _OnDemandAudioPage, { OnDemandAudioProps } from './OnDemandAudioPage'; +import * as MediaLoader from '#app/components/MediaLoader'; const OnDemandAudioPage = withMediaError(_OnDemandAudioPage); @@ -486,4 +488,45 @@ describe('OnDemand Radio Page ', () => { expect(scheduleWrapper).not.toBeInTheDocument(); }); + + describe('Page identifier overrides ', () => { + it('should use the derived page identifier to render the audio player for Persian Podcast', async () => { + const mediaLoaderSpy = jest.spyOn(MediaLoader, 'default'); + + fetchMock.mockResponse(JSON.stringify(persianPodcastPageData)); + // @ts-expect-error partial data required for testing purposes + const { pageData } = await getInitialData({ + path: 'some-ondemand-radio-path', + pageType: MEDIA_PAGE, + toggles, + }); + // @ts-expect-error react testing library returns the required query + const { container, getByText } = await renderPage({ + // @ts-expect-error partial data required for testing purposes + pageData, + service: 'persian', + }); + const expectedMediaOverrides = { + model: { + language: 'ps', + pageIdentifierOverride: + 'pashto.bbc_pashto_tv.tv.w172zmsln64zg23.page', + pageTitleOverride: ' د بي بي سي خبرونه ', + }, + type: 'mediaOverrides', + }; + + await renderPage({ + // @ts-expect-error partial data required for testing purposes + pageData, + service: 'pashto', + }); + + const mediaLoaderProps = mediaLoaderSpy.mock.calls[0][0]; + const { blocks } = mediaLoaderProps; + + expect(mediaLoaderSpy).toHaveBeenCalled(); + expect(blocks).toEqual(expect.arrayContaining([expectedMediaOverrides])); + }); + }); }); From a904c13c5d692a9548f3fb88947a9f2aab6f5d69 Mon Sep 17 00:00:00 2001 From: Nabeel Khan Date: Tue, 24 Sep 2024 16:02:41 +0100 Subject: [PATCH 10/49] finished creating test for persian podcast --- src/app/pages/OnDemandAudioPage/index.test.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/app/pages/OnDemandAudioPage/index.test.tsx b/src/app/pages/OnDemandAudioPage/index.test.tsx index b7dfa198a7b..9c027c0a7fc 100644 --- a/src/app/pages/OnDemandAudioPage/index.test.tsx +++ b/src/app/pages/OnDemandAudioPage/index.test.tsx @@ -16,6 +16,7 @@ import withMediaError from '#lib/utilities/episodeAvailability/withMediaError'; import { MEDIA_PAGE } from '#app/routes/utils/pageTypes'; import { Services, Variants } from '#app/models/types/global'; import { FetchMock } from 'jest-fetch-mock'; +import * as MediaLoader from '#app/components/MediaLoader'; import { render, act, @@ -24,7 +25,6 @@ import { import { ServiceContextProvider } from '../../contexts/ServiceContext'; import koreanPageWithScheduleData from './fixtureData/korean.json'; import _OnDemandAudioPage, { OnDemandAudioProps } from './OnDemandAudioPage'; -import * as MediaLoader from '#app/components/MediaLoader'; const OnDemandAudioPage = withMediaError(_OnDemandAudioPage); @@ -508,10 +508,10 @@ describe('OnDemand Radio Page ', () => { }); const expectedMediaOverrides = { model: { - language: 'ps', + language: 'fa', pageIdentifierOverride: - 'pashto.bbc_pashto_tv.tv.w172zmsln64zg23.page', - pageTitleOverride: ' د بي بي سي خبرونه ', + 'persian.bbc_persian_radio.podcasts.p0jrz542.page', + pageTitleOverride: 'پرگار', }, type: 'mediaOverrides', }; @@ -519,7 +519,7 @@ describe('OnDemand Radio Page ', () => { await renderPage({ // @ts-expect-error partial data required for testing purposes pageData, - service: 'pashto', + service: 'persian', }); const mediaLoaderProps = mediaLoaderSpy.mock.calls[0][0]; From 71658e63f5d7ebf24fbf2051f6c346b8c98c6356 Mon Sep 17 00:00:00 2001 From: Nabeel Khan Date: Tue, 24 Sep 2024 16:43:07 +0100 Subject: [PATCH 11/49] attempted to add fixture data and add tests for bengali brand --- data/bengali/bbc_bangla_radio/p030vjwg.json | 118 ++++++++++++++++++ .../pages/OnDemandAudioPage/index.test.tsx | 38 ++++++ 2 files changed, 156 insertions(+) create mode 100644 data/bengali/bbc_bangla_radio/p030vjwg.json diff --git a/data/bengali/bbc_bangla_radio/p030vjwg.json b/data/bengali/bbc_bangla_radio/p030vjwg.json new file mode 100644 index 00000000000..cf91323892f --- /dev/null +++ b/data/bengali/bbc_bangla_radio/p030vjwg.json @@ -0,0 +1,118 @@ +{ + "metadata": { + "id": "urn:bbc:ares:ws_media:brand:bbc_bangla_radio/p030vjwg", + "locators": { + "pid": "w172yylmc0c11jh", + "brandPid": "p030vjwg" + }, + "type": "WSRADIO", + "createdBy": "bbc_bangla_radio", + "language": "bn", + "lastUpdated": 1727190718000, + "firstPublished": 1670857206000, + "lastPublished": 1670857206000, + "timestamp": 1670857206000, + "options": {}, + "analyticsLabels": { + "pageTitle": "প্রবাহ - BBC News বাংলা", + "pageIdentifier": "bengali.bbc_bangla_radio.programmes.p030vjwg.page", + "producerId": "31", + "contentType": "player-episode", + "producer": "BENGALI" + }, + "passport": { + "home": "", + "taggings": [] + }, + "tags": {}, + "version": "v1.4.48", + "blockTypes": [ + "media" + ], + "title": "প্রবাহ", + "releaseDateTimeStamp": 1673827200000, + "useSensitiveOnwardJourneys": false + }, + "content": { + "blocks": [ + { + "id": "w172yylmc0c11jh", + "subType": "episode", + "format": "Audio", + "title": "16/01/2023 GMT", + "synopses": { + "short": "বিবিসি বাংলা থেকে সংবাদ, সমসাময়িক ঘটনা, বিশেষ প্রতিবেদন, খেলা-ধুলা, ফোন-ইন আর বিতর্ক", + "medium": "বিবিসি বাংলা থেকে সংবাদ, সমসাময়িক ঘটনা, বিশেষ প্রতিবেদন, খেলা-ধুলা, ফোন-ইন আর বিতর্ক" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b2kb7.png", + "embedding": false, + "advertising": false, + "versions": [], + "availability": "notAvailable", + "smpKind": "radioProgramme", + "episodeTitle": "প্রবাহ", + "type": "media" + } + ] + }, + "promo": { + "headlines": { + "headline": "প্রবাহ" + }, + "locators": { + "pid": "w172yylmc0c11jh", + "brandPid": "p030vjwg" + }, + "media": { + "id": "w172yylmc0c11jh", + "subType": "episode", + "format": "Audio", + "title": "16/01/2023 GMT", + "synopses": { + "short": "বিবিসি বাংলা থেকে সংবাদ, সমসাময়িক ঘটনা, বিশেষ প্রতিবেদন, খেলা-ধুলা, ফোন-ইন আর বিতর্ক", + "medium": "বিবিসি বাংলা থেকে সংবাদ, সমসাময়িক ঘটনা, বিশেষ প্রতিবেদন, খেলা-ধুলা, ফোন-ইন আর বিতর্ক" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b2kb7.png", + "embedding": false, + "advertising": false, + "versions": [], + "availability": "notAvailable", + "smpKind": "radioProgramme", + "episodeTitle": "প্রবাহ", + "type": "media" + }, + "indexImage": { + "id": "p08b2kb7", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p08b2kb7.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p08b2kb7.png", + "height": 576, + "width": 1025, + "altText": "পরিক্রমা", + "caption": "সংবাদ বুলেটিনসহ সমসাময়িক ঘটনা নিয়ে দৈনিক অনুষ্ঠান, সাথে সাপ্তাহিক ফোন-ইন, বিতর্ক ও ফিচার", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1673827200000, + "brand": { + "pid": "p030vjwg", + "title": "প্রবাহ" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_bangla_radio/w172yylmc0c11jh", + "type": "ws_radio" + }, + "relatedContent": { + "site": { + "subType": "site", + "name": "Bengali", + "uri": "/bengali", + "type": "simple" + }, + "groups": [ + { + "type": "other-episode", + "promos": [] + } + ] + } +} \ No newline at end of file diff --git a/src/app/pages/OnDemandAudioPage/index.test.tsx b/src/app/pages/OnDemandAudioPage/index.test.tsx index 9c027c0a7fc..fc727583a1b 100644 --- a/src/app/pages/OnDemandAudioPage/index.test.tsx +++ b/src/app/pages/OnDemandAudioPage/index.test.tsx @@ -528,5 +528,43 @@ describe('OnDemand Radio Page ', () => { expect(mediaLoaderSpy).toHaveBeenCalled(); expect(blocks).toEqual(expect.arrayContaining([expectedMediaOverrides])); }); + + it('should use the derived page identifier to render the audio player for Bengali Brand', async () => { + const mediaLoaderSpy = jest.spyOn(MediaLoader, 'default'); + + fetchMock.mockResponse(JSON.stringify(persianPodcastPageData)); + // @ts-expect-error partial data required for testing purposes + const { pageData } = await getInitialData({ + path: 'some-ondemand-radio-path', + pageType: MEDIA_PAGE, + toggles, + }); + // @ts-expect-error react testing library returns the required query + const { container, getByText } = await renderPage({ + // @ts-expect-error partial data required for testing purposes + pageData, + service: 'bengali', + }); + const expectedMediaOverrides = { + model: { + language: 'bn', + pageIdentifierOverride: 'bengali.bbc_bangla_radio.p030vjwg.page', + pageTitleOverride: 'প্রবাহ', + }, + type: 'mediaOverrides', + }; + + await renderPage({ + // @ts-expect-error partial data required for testing purposes + pageData, + service: 'bengali', + }); + + const mediaLoaderProps = mediaLoaderSpy.mock.calls[0][0]; + const { blocks } = mediaLoaderProps; + + expect(mediaLoaderSpy).toHaveBeenCalled(); + expect(blocks).toEqual(expect.arrayContaining([expectedMediaOverrides])); + }); }); }); From 281e94b1eade892cd4762471d925b5cd1890e6e5 Mon Sep 17 00:00:00 2001 From: Nabeel Khan Date: Tue, 24 Sep 2024 16:55:53 +0100 Subject: [PATCH 12/49] fixed errors in test and added bengali data for mock response --- src/app/pages/OnDemandAudioPage/index.test.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/app/pages/OnDemandAudioPage/index.test.tsx b/src/app/pages/OnDemandAudioPage/index.test.tsx index fc727583a1b..a86503be2ed 100644 --- a/src/app/pages/OnDemandAudioPage/index.test.tsx +++ b/src/app/pages/OnDemandAudioPage/index.test.tsx @@ -9,6 +9,7 @@ import indonesiaPageData from '#data/indonesia/bbc_indonesian_radio/w172xh267fpn import afaanoromooPageData from '#data/afaanoromoo/bbc_afaanoromoo_radio/w13xttnw.json'; import arabicPodcastPageData from '#data/arabic/podcasts/p02pc9qc/p08wtg4d.json'; import persianPodcastPageData from '#data/persian/bbc_persian_radio/p02pc9wf.json'; +import bengaliPodcastPageData from '#data/bengali/bbc_bangla_radio/p030vjwg.json'; import * as analyticsUtils from '#lib/analyticsUtils'; import { ToggleContextProvider } from '#contexts/ToggleContext'; import getInitialData from '#app/routes/onDemandAudio/getInitialData'; @@ -532,7 +533,7 @@ describe('OnDemand Radio Page ', () => { it('should use the derived page identifier to render the audio player for Bengali Brand', async () => { const mediaLoaderSpy = jest.spyOn(MediaLoader, 'default'); - fetchMock.mockResponse(JSON.stringify(persianPodcastPageData)); + fetchMock.mockResponse(JSON.stringify(bengaliPodcastPageData)); // @ts-expect-error partial data required for testing purposes const { pageData } = await getInitialData({ path: 'some-ondemand-radio-path', @@ -548,7 +549,8 @@ describe('OnDemand Radio Page ', () => { const expectedMediaOverrides = { model: { language: 'bn', - pageIdentifierOverride: 'bengali.bbc_bangla_radio.p030vjwg.page', + pageIdentifierOverride: + 'bengali.bbc_bangla_radio.w172yylmc0c11jh.page', pageTitleOverride: 'প্রবাহ', }, type: 'mediaOverrides', From d6d81210fcc55207e9158554aee69957e3c60ec6 Mon Sep 17 00:00:00 2001 From: Nabeel Khan Date: Wed, 25 Sep 2024 11:50:59 +0100 Subject: [PATCH 13/49] updated indonesian radio fixture data --- .../bbc_indonesian_radio/w13xtt0s.json | 1583 ++++++++++++----- 1 file changed, 1187 insertions(+), 396 deletions(-) diff --git a/data/indonesia/bbc_indonesian_radio/w13xtt0s.json b/data/indonesia/bbc_indonesian_radio/w13xtt0s.json index 05df4a44868..b098c61d53e 100644 --- a/data/indonesia/bbc_indonesian_radio/w13xtt0s.json +++ b/data/indonesia/bbc_indonesian_radio/w13xtt0s.json @@ -1,622 +1,1413 @@ { + "metadata": { + "id": "urn:bbc:ares:ws_media:brand:bbc_indonesian_radio/w13xtt0s", + "locators": { + "pid": "w172ywztppckjfb", + "brandPid": "w13xtt0s" + }, + "type": "WSRADIO", + "createdBy": "bbc_indonesian_radio", + "language": "id", + "lastUpdated": 1727260432000, + "firstPublished": 1671407761000, + "lastPublished": 1671407761000, + "timestamp": 1671407761000, + "options": {}, + "analyticsLabels": { + "pageTitle": "Dunia Pagi Ini - BBC News Indonesia", + "pageIdentifier": "indonesia.bbc_indonesian_radio.programmes.w13xtt0s.page", + "producerId": "54", + "contentType": "player-episode", + "producer": "INDONESIAN" + }, + "passport": { + "home": "", + "taggings": [] + }, + "tags": {}, + "version": "v1.4.48", + "blockTypes": [ + "media" + ], + "title": "Dunia Pagi Ini", + "releaseDateTimeStamp": 1674345600000, + "useSensitiveOnwardJourneys": false + }, "content": { "blocks": [ { - "advertising": false, - "availability": "available", - "embedding": false, - "format": "Audio", - "id": "w172xnm8j4tzb0b", - "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", - "smpKind": "radioProgramme", + "id": "w172ywztppckjfb", "subType": "episode", + "format": "Audio", + "title": "22/01/2023 GMT", "synopses": { - "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia. Juga berita olahraga terbaru dan berbeda setiap harinya.", - "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia. Juga berita olahraga terbaru dan berbeda setiap harinya." + "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia.", + "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia." }, - "title": "16/11/2020 GMT", - "type": "media", + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "embedding": false, + "advertising": false, "versions": [ { - "availabilityStatus": "available", - "availableFrom": 1605568500000, + "versionId": "w1msk6hrsr7yfpl", + "types": [ + "Original" + ], + "duration": 930, + "durationISO8601": "PT15M30S", + "warnings": {}, "availableTerritories": { - "nonUk": false, "uk": false, + "nonUk": false, "world": true }, - "availableUntil": 1608160500000, - "duration": 930, - "durationISO8601": "PT15M30S", - "types": ["Original"], - "versionId": "w1mshvpphfrwdh8", - "warnings": {} + "availableFrom": 1674429300000, + "availabilityStatus": "available" } - ] + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "Dunia Pagi Ini", + "type": "media" } ] }, - "metadata": { - "analyticsLabels": { - "contentType": "player-episode", - "pageIdentifier": "indonesia.bbc_indonesian_radio.programmes.w13xtt0s.page", - "pageTitle": "Dunia Pagi Ini - BBC News Indonesia", - "producer": "INDONESIAN", - "producerId": "54" - }, - "atiAnalytics": {}, - "blockTypes": ["media"], - "createdBy": "bbc_indonesian_radio", - "firstPublished": 1603710474000, - "id": "urn:bbc:ares:ws_media:brand:bbc_indonesian_radio/w13xtt0s", - "language": "id", - "lastPublished": 1603710474000, - "lastUpdated": 1605626873238, - "locators": { - "brandPid": "w13xtt0s", - "pid": "w172xnm8j4tzb0b" - }, - "options": {}, - "releaseDateTimeStamp": 1605484800000, - "tags": {}, - "timestamp": 1603710474000, - "title": "Dunia Pagi Ini", - "type": "WSRADIO", - "version": "v1.3.8" - }, "promo": { - "brand": { - "pid": "w13xtt0s", - "title": "Dunia Pagi Ini" - }, "headlines": { "headline": "Dunia Pagi Ini" }, - "id": "urn:bbc:ares:ws_media:page:bbc_indonesian_radio/w172xnm8j4tzb0b", - "indexImage": { - "altText": null, - "copyrightHolder": null, - "height": 0, - "href": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", - "id": "", - "path": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", - "subType": "index", - "type": "image", - "width": 0 - }, "locators": { - "brandPid": "w13xtt0s", - "pid": "w172xnm8j4tzb0b" + "pid": "w172ywztppckjfb", + "brandPid": "w13xtt0s" }, "media": { - "advertising": false, - "availability": "available", - "embedding": false, - "format": "Audio", - "id": "w172xnm8j4tzb0b", - "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", - "smpKind": "radioProgramme", + "id": "w172ywztppckjfb", "subType": "episode", + "format": "Audio", + "title": "22/01/2023 GMT", "synopses": { - "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia. Juga berita olahraga terbaru dan berbeda setiap harinya.", - "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia. Juga berita olahraga terbaru dan berbeda setiap harinya." + "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia.", + "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia." }, - "title": "16/11/2020 GMT", - "type": "media", + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "embedding": false, + "advertising": false, "versions": [ { - "availabilityStatus": "available", - "availableFrom": 1605568500000, + "versionId": "w1msk6hrsr7yfpl", + "types": [ + "Original" + ], + "duration": 930, + "durationISO8601": "PT15M30S", + "warnings": {}, "availableTerritories": { - "nonUk": false, "uk": false, + "nonUk": false, "world": true }, - "availableUntil": 1608160500000, - "duration": 930, - "durationISO8601": "PT15M30S", - "types": ["Original"], - "versionId": "w1mshvpphfrwdh8", - "warnings": {} + "availableFrom": 1674429300000, + "availabilityStatus": "available" } - ] + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "Dunia Pagi Ini", + "type": "media" + }, + "indexImage": { + "id": "p08b4828", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "height": 1080, + "width": 1920, + "altText": "Indonesia 16 9 Updated", + "caption": "Indonesia 16 9 Updated", + "copyrightHolder": null, + "type": "image" }, - "releaseDateTimestamp": 1605484800000, + "releaseDateTimestamp": 1674345600000, + "brand": { + "pid": "w13xtt0s", + "title": "Dunia Pagi Ini" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_indonesian_radio/w172ywztppckjfb", "type": "ws_radio" }, "relatedContent": { + "site": { + "subType": "site", + "name": "Indonesia", + "uri": "/indonesia", + "type": "simple" + }, "groups": [ { + "type": "other-episode", "promos": [ { + "headlines": { + "headline": "Dunia Pagi Ini" + }, + "locators": { + "pid": "w172ywztppckdp6", + "brandPid": "w13xtt0s" + }, + "media": { + "id": "w172ywztppckdp6", + "subType": "episode", + "format": "Audio", + "title": "22/01/2023 GMT", + "synopses": { + "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia.", + "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia." + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w1msk6hrsr7y9yg", + "types": [ + "Original" + ], + "duration": 930, + "durationISO8601": "PT15M30S", + "warnings": {}, + "availableTerritories": { + "uk": false, + "nonUk": false, + "world": true + }, + "availableFrom": 1674425700000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "Dunia Pagi Ini", + "type": "media" + }, + "indexImage": { + "id": "p08b4828", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "height": 1080, + "width": 1920, + "altText": "Indonesia 16 9 Updated", + "caption": "Indonesia 16 9 Updated", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1674345600000, "brand": { "pid": "w13xtt0s", "title": "Dunia Pagi Ini" }, + "id": "urn:bbc:ares:ws_media:page:bbc_indonesian_radio/w172ywztppckdp6", + "type": "ws_radio" + }, + { "headlines": { "headline": "Dunia Pagi Ini" }, - "id": "urn:bbc:ares:ws_media:page:bbc_indonesian_radio/w172xnm8j4tz686", + "locators": { + "pid": "w172ywztppc8tq1", + "brandPid": "w13xtt0s" + }, + "media": { + "id": "w172ywztppc8tq1", + "subType": "episode", + "format": "Audio", + "title": "19/01/2023 GMT", + "synopses": { + "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia.", + "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia." + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w1msk6hrsr7nqz9", + "types": [ + "Original" + ], + "duration": 930, + "durationISO8601": "PT15M30S", + "warnings": {}, + "availableTerritories": { + "uk": false, + "nonUk": false, + "world": true + }, + "availableFrom": 1674170100000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "Dunia Pagi Ini", + "type": "media" + }, "indexImage": { - "altText": null, - "copyrightHolder": null, - "height": 0, + "id": "p08b4828", + "subType": "index", "href": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", - "id": "", "path": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", - "subType": "index", - "type": "image", - "width": 0 + "height": 1080, + "width": 1920, + "altText": "Indonesia 16 9 Updated", + "caption": "Indonesia 16 9 Updated", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1674086400000, + "brand": { + "pid": "w13xtt0s", + "title": "Dunia Pagi Ini" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_indonesian_radio/w172ywztppc8tq1", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "Dunia Pagi Ini" }, "locators": { - "brandPid": "w13xtt0s", - "pid": "w172xnm8j4tz686" + "pid": "w172ywztppc8pyx", + "brandPid": "w13xtt0s" }, "media": { - "advertising": false, - "availability": "available", - "embedding": false, - "format": "Audio", - "id": "w172xnm8j4tz686", - "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", - "smpKind": "radioProgramme", + "id": "w172ywztppc8pyx", "subType": "episode", + "format": "Audio", + "title": "19/01/2023 GMT", "synopses": { - "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia. Juga berita olahraga terbaru dan berbeda setiap harinya.", - "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia. Juga berita olahraga terbaru dan berbeda setiap harinya." + "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia.", + "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia." }, - "title": "16/11/2020 GMT", - "type": "media", + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "embedding": false, + "advertising": false, "versions": [ { - "availabilityStatus": "available", - "availableFrom": 1605564900000, + "versionId": "w1msk6hrsr7nm75", + "types": [ + "Original" + ], + "duration": 930, + "durationISO8601": "PT15M30S", + "warnings": {}, "availableTerritories": { - "nonUk": false, "uk": false, + "nonUk": false, "world": true }, - "availableUntil": 1608156900000, - "duration": 930, - "durationISO8601": "PT15M30S", - "types": ["Original"], - "versionId": "w1mshvpphfrw8r4", - "warnings": {} + "availableFrom": 1674166500000, + "availabilityStatus": "available" } - ] + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "Dunia Pagi Ini", + "type": "media" + }, + "indexImage": { + "id": "p08b4828", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "height": 1080, + "width": 1920, + "altText": "Indonesia 16 9 Updated", + "caption": "Indonesia 16 9 Updated", + "copyrightHolder": null, + "type": "image" }, - "releaseDateTimestamp": 1605484800000, + "releaseDateTimestamp": 1674086400000, + "brand": { + "pid": "w13xtt0s", + "title": "Dunia Pagi Ini" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_indonesian_radio/w172ywztppc8pyx", "type": "ws_radio" }, { + "headlines": { + "headline": "Dunia Pagi Ini" + }, + "locators": { + "pid": "w172ywztppc5xsy", + "brandPid": "w13xtt0s" + }, + "media": { + "id": "w172ywztppc5xsy", + "subType": "episode", + "format": "Audio", + "title": "18/01/2023 GMT", + "synopses": { + "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia.", + "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia." + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w1msk6hrsr7kv26", + "types": [ + "Original" + ], + "duration": 930, + "durationISO8601": "PT15M30S", + "warnings": {}, + "availableTerritories": { + "uk": false, + "nonUk": false, + "world": true + }, + "availableFrom": 1674083700000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "Dunia Pagi Ini", + "type": "media" + }, + "indexImage": { + "id": "p08b4828", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "height": 1080, + "width": 1920, + "altText": "Indonesia 16 9 Updated", + "caption": "Indonesia 16 9 Updated", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1674000000000, "brand": { "pid": "w13xtt0s", "title": "Dunia Pagi Ini" }, + "id": "urn:bbc:ares:ws_media:page:bbc_indonesian_radio/w172ywztppc5xsy", + "type": "ws_radio" + }, + { "headlines": { "headline": "Dunia Pagi Ini" }, - "id": "urn:bbc:ares:ws_media:page:bbc_indonesian_radio/w172xnm84wjrkv2", + "locators": { + "pid": "w172ywztppc5t1t", + "brandPid": "w13xtt0s" + }, + "media": { + "id": "w172ywztppc5t1t", + "subType": "episode", + "format": "Audio", + "title": "18/01/2023 GMT", + "synopses": { + "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia.", + "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia." + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w1msk6hrsr7kqb2", + "types": [ + "Original" + ], + "duration": 930, + "durationISO8601": "PT15M30S", + "warnings": {}, + "availableTerritories": { + "uk": false, + "nonUk": false, + "world": true + }, + "availableFrom": 1674080100000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "Dunia Pagi Ini", + "type": "media" + }, "indexImage": { - "altText": null, - "copyrightHolder": null, - "height": 0, + "id": "p08b4828", + "subType": "index", "href": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", - "id": "", "path": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "height": 1080, + "width": 1920, + "altText": "Indonesia 16 9 Updated", + "caption": "Indonesia 16 9 Updated", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1674000000000, + "brand": { + "pid": "w13xtt0s", + "title": "Dunia Pagi Ini" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_indonesian_radio/w172ywztppc5t1t", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "Dunia Pagi Ini" + }, + "locators": { + "pid": "w172ywztppc30wv", + "brandPid": "w13xtt0s" + }, + "media": { + "id": "w172ywztppc30wv", + "subType": "episode", + "format": "Audio", + "title": "17/01/2023 GMT", + "synopses": { + "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia.", + "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia." + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w1msk6hrsr7gy53", + "types": [ + "Original" + ], + "duration": 930, + "durationISO8601": "PT15M30S", + "warnings": {}, + "availableTerritories": { + "uk": false, + "nonUk": false, + "world": true + }, + "availableFrom": 1673997300000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "Dunia Pagi Ini", + "type": "media" + }, + "indexImage": { + "id": "p08b4828", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "height": 1080, + "width": 1920, + "altText": "Indonesia 16 9 Updated", + "caption": "Indonesia 16 9 Updated", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1673913600000, + "brand": { + "pid": "w13xtt0s", + "title": "Dunia Pagi Ini" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_indonesian_radio/w172ywztppc30wv", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "Dunia Pagi Ini" + }, + "locators": { + "pid": "w172ywztppc2x4q", + "brandPid": "w13xtt0s" + }, + "media": { + "id": "w172ywztppc2x4q", + "subType": "episode", + "format": "Audio", + "title": "17/01/2023 GMT", + "synopses": { + "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia.", + "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia." + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w1msk6hrsr7gtdz", + "types": [ + "Original" + ], + "duration": 930, + "durationISO8601": "PT15M30S", + "warnings": {}, + "availableTerritories": { + "uk": false, + "nonUk": false, + "world": true + }, + "availableFrom": 1673993700000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "Dunia Pagi Ini", + "type": "media" + }, + "indexImage": { + "id": "p08b4828", "subType": "index", - "type": "image", - "width": 0 + "href": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "height": 1080, + "width": 1920, + "altText": "Indonesia 16 9 Updated", + "caption": "Indonesia 16 9 Updated", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1673913600000, + "brand": { + "pid": "w13xtt0s", + "title": "Dunia Pagi Ini" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_indonesian_radio/w172ywztppc2x4q", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "Dunia Pagi Ini" + }, + "locators": { + "pid": "w172ywztppc03zr", + "brandPid": "w13xtt0s" + }, + "media": { + "id": "w172ywztppc03zr", + "subType": "episode", + "format": "Audio", + "title": "16/01/2023 GMT", + "synopses": { + "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia.", + "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia." + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w1msk6hrsr7d180", + "types": [ + "Original" + ], + "duration": 930, + "durationISO8601": "PT15M30S", + "warnings": {}, + "availableTerritories": { + "uk": false, + "nonUk": false, + "world": true + }, + "availableFrom": 1673910900000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "Dunia Pagi Ini", + "type": "media" + }, + "indexImage": { + "id": "p08b4828", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "height": 1080, + "width": 1920, + "altText": "Indonesia 16 9 Updated", + "caption": "Indonesia 16 9 Updated", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1673827200000, + "brand": { + "pid": "w13xtt0s", + "title": "Dunia Pagi Ini" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_indonesian_radio/w172ywztppc03zr", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "Dunia Pagi Ini" + }, + "locators": { + "pid": "w172ywztppc007m", + "brandPid": "w13xtt0s" + }, + "media": { + "id": "w172ywztppc007m", + "subType": "episode", + "format": "Audio", + "title": "16/01/2023 GMT", + "synopses": { + "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia.", + "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia." + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w1msk6hrsr7cxhw", + "types": [ + "Original" + ], + "duration": 930, + "durationISO8601": "PT15M30S", + "warnings": {}, + "availableTerritories": { + "uk": false, + "nonUk": false, + "world": true + }, + "availableFrom": 1673907300000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "Dunia Pagi Ini", + "type": "media" + }, + "indexImage": { + "id": "p08b4828", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "height": 1080, + "width": 1920, + "altText": "Indonesia 16 9 Updated", + "caption": "Indonesia 16 9 Updated", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1673827200000, + "brand": { + "pid": "w13xtt0s", + "title": "Dunia Pagi Ini" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_indonesian_radio/w172ywztppc007m", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "Dunia Pagi Ini" + }, + "locators": { + "pid": "w172ywztbf1scth", + "brandPid": "w13xtt0s" + }, + "media": { + "id": "w172ywztbf1scth", + "subType": "episode", + "format": "Audio", + "title": "15/01/2023 GMT", + "synopses": { + "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia.", + "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia." + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w1msk6hrfgy592r", + "types": [ + "Original" + ], + "duration": 930, + "durationISO8601": "PT15M30S", + "warnings": {}, + "availableTerritories": { + "uk": false, + "nonUk": false, + "world": true + }, + "availableFrom": 1673824500000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "Dunia Pagi Ini", + "type": "media" + }, + "indexImage": { + "id": "p08b4828", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "height": 1080, + "width": 1920, + "altText": "Indonesia 16 9 Updated", + "caption": "Indonesia 16 9 Updated", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1673740800000, + "brand": { + "pid": "w13xtt0s", + "title": "Dunia Pagi Ini" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_indonesian_radio/w172ywztbf1scth", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "Dunia Pagi Ini" + }, + "locators": { + "pid": "w172ywztbf1s82c", + "brandPid": "w13xtt0s" + }, + "media": { + "id": "w172ywztbf1s82c", + "subType": "episode", + "format": "Audio", + "title": "15/01/2023 GMT", + "synopses": { + "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia.", + "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia." + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w1msk6hrfgy55bm", + "types": [ + "Original" + ], + "duration": 930, + "durationISO8601": "PT15M30S", + "warnings": {}, + "availableTerritories": { + "uk": false, + "nonUk": false, + "world": true + }, + "availableFrom": 1673820900000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "Dunia Pagi Ini", + "type": "media" + }, + "indexImage": { + "id": "p08b4828", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "height": 1080, + "width": 1920, + "altText": "Indonesia 16 9 Updated", + "caption": "Indonesia 16 9 Updated", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1673740800000, + "brand": { + "pid": "w13xtt0s", + "title": "Dunia Pagi Ini" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_indonesian_radio/w172ywztbf1s82c", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "Dunia Pagi Ini" + }, + "locators": { + "pid": "w172ywztbf1hp36", + "brandPid": "w13xtt0s" + }, + "media": { + "id": "w172ywztbf1hp36", + "subType": "episode", + "format": "Audio", + "title": "12/01/2023 GMT", + "synopses": { + "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia.", + "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia." + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w1msk6hrfgxwlcg", + "types": [ + "Original" + ], + "duration": 930, + "durationISO8601": "PT15M30S", + "warnings": {}, + "availableTerritories": { + "uk": false, + "nonUk": false, + "world": true + }, + "availableFrom": 1673565300000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "Dunia Pagi Ini", + "type": "media" + }, + "indexImage": { + "id": "p08b4828", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "height": 1080, + "width": 1920, + "altText": "Indonesia 16 9 Updated", + "caption": "Indonesia 16 9 Updated", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1673481600000, + "brand": { + "pid": "w13xtt0s", + "title": "Dunia Pagi Ini" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_indonesian_radio/w172ywztbf1hp36", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "Dunia Pagi Ini" + }, + "locators": { + "pid": "w172ywztbf1hkc2", + "brandPid": "w13xtt0s" + }, + "media": { + "id": "w172ywztbf1hkc2", + "subType": "episode", + "format": "Audio", + "title": "12/01/2023 GMT", + "synopses": { + "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia.", + "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia." + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w1msk6hrfgxwgmb", + "types": [ + "Original" + ], + "duration": 930, + "durationISO8601": "PT15M30S", + "warnings": {}, + "availableTerritories": { + "uk": false, + "nonUk": false, + "world": true + }, + "availableFrom": 1673561700000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "Dunia Pagi Ini", + "type": "media" + }, + "indexImage": { + "id": "p08b4828", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "height": 1080, + "width": 1920, + "altText": "Indonesia 16 9 Updated", + "caption": "Indonesia 16 9 Updated", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1673481600000, + "brand": { + "pid": "w13xtt0s", + "title": "Dunia Pagi Ini" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_indonesian_radio/w172ywztbf1hkc2", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "Dunia Pagi Ini" }, "locators": { - "brandPid": "w13xtt0s", - "pid": "w172xnm84wjrkv2" + "pid": "w172ywztbf1ds63", + "brandPid": "w13xtt0s" }, "media": { - "advertising": false, - "availability": "available", - "embedding": false, - "format": "Audio", - "id": "w172xnm84wjrkv2", - "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", - "smpKind": "radioProgramme", + "id": "w172ywztbf1ds63", "subType": "episode", + "format": "Audio", + "title": "11/01/2023 GMT", "synopses": { - "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia. Juga berita olahraga terbaru dan berbeda setiap harinya.", - "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia. Juga berita olahraga terbaru dan berbeda setiap harinya." + "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia.", + "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia." }, - "title": "15/11/2020 GMT", - "type": "media", + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "embedding": false, + "advertising": false, "versions": [ { - "availabilityStatus": "available", - "availableFrom": 1605482100000, + "versionId": "w1msk6hrfgxspgc", + "types": [ + "Original" + ], + "duration": 930, + "durationISO8601": "PT15M30S", + "warnings": {}, "availableTerritories": { - "nonUk": false, "uk": false, + "nonUk": false, "world": true }, - "availableUntil": 1608074100000, - "duration": 930, - "durationISO8601": "PT15M30S", - "types": ["Original"], - "versionId": "w1mshvpp45gnnb0", - "warnings": {} + "availableFrom": 1673478900000, + "availabilityStatus": "available" } - ] + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "Dunia Pagi Ini", + "type": "media" }, - "releaseDateTimestamp": 1605398400000, - "type": "ws_radio" - }, - { + "indexImage": { + "id": "p08b4828", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "height": 1080, + "width": 1920, + "altText": "Indonesia 16 9 Updated", + "caption": "Indonesia 16 9 Updated", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1673395200000, "brand": { "pid": "w13xtt0s", "title": "Dunia Pagi Ini" }, + "id": "urn:bbc:ares:ws_media:page:bbc_indonesian_radio/w172ywztbf1ds63", + "type": "ws_radio" + }, + { "headlines": { "headline": "Dunia Pagi Ini" }, - "id": "urn:bbc:ares:ws_media:page:bbc_indonesian_radio/w172xnm84wjrg2y", - "indexImage": { - "altText": null, - "copyrightHolder": null, - "height": 0, - "href": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", - "id": "", - "path": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", - "subType": "index", - "type": "image", - "width": 0 - }, "locators": { - "brandPid": "w13xtt0s", - "pid": "w172xnm84wjrg2y" + "pid": "w172ywztbf1dnfz", + "brandPid": "w13xtt0s" }, "media": { - "advertising": false, - "availability": "available", - "embedding": false, - "format": "Audio", - "id": "w172xnm84wjrg2y", - "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", - "smpKind": "radioProgramme", + "id": "w172ywztbf1dnfz", "subType": "episode", + "format": "Audio", + "title": "11/01/2023 GMT", "synopses": { - "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia. Juga berita olahraga terbaru dan berbeda setiap harinya.", - "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia. Juga berita olahraga terbaru dan berbeda setiap harinya." + "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia.", + "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia." }, - "title": "15/11/2020 GMT", - "type": "media", + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "embedding": false, + "advertising": false, "versions": [ { - "availabilityStatus": "available", - "availableFrom": 1605478500000, + "versionId": "w1msk6hrfgxskq7", + "types": [ + "Original" + ], + "duration": 930, + "durationISO8601": "PT15M30S", + "warnings": {}, "availableTerritories": { - "nonUk": false, "uk": false, + "nonUk": false, "world": true }, - "availableUntil": 1608070500000, - "duration": 930, - "durationISO8601": "PT15M30S", - "types": ["Original"], - "versionId": "w1mshvpp45gnjkw", - "warnings": {} + "availableFrom": 1673475300000, + "availabilityStatus": "available" } - ] + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "Dunia Pagi Ini", + "type": "media" }, - "releaseDateTimestamp": 1605398400000, - "type": "ws_radio" - }, - { + "indexImage": { + "id": "p08b4828", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "height": 1080, + "width": 1920, + "altText": "Indonesia 16 9 Updated", + "caption": "Indonesia 16 9 Updated", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1673395200000, "brand": { "pid": "w13xtt0s", "title": "Dunia Pagi Ini" }, + "id": "urn:bbc:ares:ws_media:page:bbc_indonesian_radio/w172ywztbf1dnfz", + "type": "ws_radio" + }, + { "headlines": { "headline": "Dunia Pagi Ini" }, - "id": "urn:bbc:ares:ws_media:page:bbc_indonesian_radio/w172xnm84wjgw3s", - "indexImage": { - "altText": null, - "copyrightHolder": null, - "height": 0, - "href": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", - "id": "", - "path": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", - "subType": "index", - "type": "image", - "width": 0 - }, "locators": { - "brandPid": "w13xtt0s", - "pid": "w172xnm84wjgw3s" + "pid": "w172ywztbf19w90", + "brandPid": "w13xtt0s" }, "media": { - "advertising": false, - "availability": "available", - "embedding": false, - "format": "Audio", - "id": "w172xnm84wjgw3s", - "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", - "smpKind": "radioProgramme", + "id": "w172ywztbf19w90", "subType": "episode", + "format": "Audio", + "title": "10/01/2023 GMT", "synopses": { - "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia. Juga berita olahraga terbaru dan berbeda setiap harinya.", - "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia. Juga berita olahraga terbaru dan berbeda setiap harinya." + "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia.", + "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia." }, - "title": "12/11/2020 GMT", - "type": "media", + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "embedding": false, + "advertising": false, "versions": [ { - "availabilityStatus": "available", - "availableFrom": 1605222900000, + "versionId": "w1msk6hrfgxpsk8", + "types": [ + "Original" + ], + "duration": 930, + "durationISO8601": "PT15M30S", + "warnings": {}, "availableTerritories": { - "nonUk": false, "uk": false, + "nonUk": false, "world": true }, - "availableUntil": 1607814900000, - "duration": 930, - "durationISO8601": "PT15M30S", - "types": ["Original"], - "versionId": "w1mshvpp45gcylq", - "warnings": {} + "availableFrom": 1673392500000, + "availabilityStatus": "available" } - ] + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "Dunia Pagi Ini", + "type": "media" }, - "releaseDateTimestamp": 1605139200000, - "type": "ws_radio" - }, - { + "indexImage": { + "id": "p08b4828", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "height": 1080, + "width": 1920, + "altText": "Indonesia 16 9 Updated", + "caption": "Indonesia 16 9 Updated", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1673308800000, "brand": { "pid": "w13xtt0s", "title": "Dunia Pagi Ini" }, + "id": "urn:bbc:ares:ws_media:page:bbc_indonesian_radio/w172ywztbf19w90", + "type": "ws_radio" + }, + { "headlines": { "headline": "Dunia Pagi Ini" }, - "id": "urn:bbc:ares:ws_media:page:bbc_indonesian_radio/w172xnm84wjgrcn", - "indexImage": { - "altText": null, - "copyrightHolder": null, - "height": 0, - "href": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", - "id": "", - "path": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", - "subType": "index", - "type": "image", - "width": 0 - }, "locators": { - "brandPid": "w13xtt0s", - "pid": "w172xnm84wjgrcn" + "pid": "w172ywztbf19rjw", + "brandPid": "w13xtt0s" }, "media": { - "advertising": false, - "availability": "available", - "embedding": false, - "format": "Audio", - "id": "w172xnm84wjgrcn", - "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", - "smpKind": "radioProgramme", + "id": "w172ywztbf19rjw", "subType": "episode", + "format": "Audio", + "title": "10/01/2023 GMT", "synopses": { - "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia. Juga berita olahraga terbaru dan berbeda setiap harinya.", - "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia. Juga berita olahraga terbaru dan berbeda setiap harinya." + "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia.", + "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia." }, - "title": "12/11/2020 GMT", - "type": "media", + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "embedding": false, + "advertising": false, "versions": [ { - "availabilityStatus": "available", - "availableFrom": 1605219300000, + "versionId": "w1msk6hrfgxpnt4", + "types": [ + "Original" + ], + "duration": 930, + "durationISO8601": "PT15M30S", + "warnings": {}, "availableTerritories": { - "nonUk": false, "uk": false, + "nonUk": false, "world": true }, - "availableUntil": 1607811300000, - "duration": 930, - "durationISO8601": "PT15M30S", - "types": ["Original"], - "versionId": "w1mshvpp45gctvl", - "warnings": {} + "availableFrom": 1673388900000, + "availabilityStatus": "available" } - ] + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "Dunia Pagi Ini", + "type": "media" }, - "releaseDateTimestamp": 1605139200000, - "type": "ws_radio" - }, - { + "indexImage": { + "id": "p08b4828", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "height": 1080, + "width": 1920, + "altText": "Indonesia 16 9 Updated", + "caption": "Indonesia 16 9 Updated", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1673308800000, "brand": { "pid": "w13xtt0s", "title": "Dunia Pagi Ini" }, + "id": "urn:bbc:ares:ws_media:page:bbc_indonesian_radio/w172ywztbf19rjw", + "type": "ws_radio" + }, + { "headlines": { "headline": "Dunia Pagi Ini" }, - "id": "urn:bbc:ares:ws_media:page:bbc_indonesian_radio/w172xnm84wjcz6p", - "indexImage": { - "altText": null, - "copyrightHolder": null, - "height": 0, - "href": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", - "id": "", - "path": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", - "subType": "index", - "type": "image", - "width": 0 - }, "locators": { - "brandPid": "w13xtt0s", - "pid": "w172xnm84wjcz6p" + "pid": "w172ywztbf16zcx", + "brandPid": "w13xtt0s" }, "media": { - "advertising": false, - "availability": "available", - "embedding": false, - "format": "Audio", - "id": "w172xnm84wjcz6p", - "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", - "smpKind": "radioProgramme", + "id": "w172ywztbf16zcx", "subType": "episode", + "format": "Audio", + "title": "09/01/2023 GMT", "synopses": { - "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia. Juga berita olahraga terbaru dan berbeda setiap harinya.", - "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia. Juga berita olahraga terbaru dan berbeda setiap harinya." + "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia.", + "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia." }, - "title": "11/11/2020 GMT", - "type": "media", + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "embedding": false, + "advertising": false, "versions": [ { - "availabilityStatus": "available", - "availableFrom": 1605136500000, + "versionId": "w1msk6hrfgxlwn5", + "types": [ + "Original" + ], + "duration": 930, + "durationISO8601": "PT15M30S", + "warnings": {}, "availableTerritories": { - "nonUk": false, "uk": false, + "nonUk": false, "world": true }, - "availableUntil": 1607728500000, - "duration": 930, - "durationISO8601": "PT15M30S", - "types": ["Original"], - "versionId": "w1mshvpp45g91pm", - "warnings": {} + "availableFrom": 1673306100000, + "availabilityStatus": "available" } - ] + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "Dunia Pagi Ini", + "type": "media" }, - "releaseDateTimestamp": 1605052800000, - "type": "ws_radio" - }, - { + "indexImage": { + "id": "p08b4828", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "height": 1080, + "width": 1920, + "altText": "Indonesia 16 9 Updated", + "caption": "Indonesia 16 9 Updated", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1673222400000, "brand": { "pid": "w13xtt0s", "title": "Dunia Pagi Ini" }, + "id": "urn:bbc:ares:ws_media:page:bbc_indonesian_radio/w172ywztbf16zcx", + "type": "ws_radio" + }, + { "headlines": { "headline": "Dunia Pagi Ini" }, - "id": "urn:bbc:ares:ws_media:page:bbc_indonesian_radio/w172xnm84wjcvgk", - "indexImage": { - "altText": null, - "copyrightHolder": null, - "height": 0, - "href": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", - "id": "", - "path": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", - "subType": "index", - "type": "image", - "width": 0 - }, "locators": { - "brandPid": "w13xtt0s", - "pid": "w172xnm84wjcvgk" + "pid": "w172ywztbf16vms", + "brandPid": "w13xtt0s" }, "media": { - "advertising": false, - "availability": "available", - "embedding": false, - "format": "Audio", - "id": "w172xnm84wjcvgk", - "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", - "smpKind": "radioProgramme", + "id": "w172ywztbf16vms", "subType": "episode", + "format": "Audio", + "title": "09/01/2023 GMT", "synopses": { - "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia. Juga berita olahraga terbaru dan berbeda setiap harinya.", - "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia. Juga berita olahraga terbaru dan berbeda setiap harinya." + "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia.", + "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia." }, - "title": "11/11/2020 GMT", - "type": "media", + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "embedding": false, + "advertising": false, "versions": [ { - "availabilityStatus": "available", - "availableFrom": 1605132900000, + "versionId": "w1msk6hrfgxlrx1", + "types": [ + "Original" + ], + "duration": 930, + "durationISO8601": "PT15M30S", + "warnings": {}, "availableTerritories": { - "nonUk": false, "uk": false, + "nonUk": false, "world": true }, - "availableUntil": 1607724900000, - "duration": 930, - "durationISO8601": "PT15M30S", - "types": ["Original"], - "versionId": "w1mshvpp45g8xyh", - "warnings": {} + "availableFrom": 1673302500000, + "availabilityStatus": "available" } - ] + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "Dunia Pagi Ini", + "type": "media" }, - "releaseDateTimestamp": 1605052800000, - "type": "ws_radio" - }, - { + "indexImage": { + "id": "p08b4828", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "height": 1080, + "width": 1920, + "altText": "Indonesia 16 9 Updated", + "caption": "Indonesia 16 9 Updated", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1673222400000, "brand": { "pid": "w13xtt0s", "title": "Dunia Pagi Ini" }, + "id": "urn:bbc:ares:ws_media:page:bbc_indonesian_radio/w172ywztbf16vms", + "type": "ws_radio" + }, + { "headlines": { "headline": "Dunia Pagi Ini" }, - "id": "urn:bbc:ares:ws_media:page:bbc_indonesian_radio/w172xnm84wj929l", - "indexImage": { - "altText": null, - "copyrightHolder": null, - "height": 0, - "href": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", - "id": "", - "path": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", - "subType": "index", - "type": "image", - "width": 0 - }, "locators": { - "brandPid": "w13xtt0s", - "pid": "w172xnm84wj929l" + "pid": "w172ywzsz4r076n", + "brandPid": "w13xtt0s" }, "media": { - "advertising": false, - "availability": "available", - "embedding": false, - "format": "Audio", - "id": "w172xnm84wj929l", - "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", - "smpKind": "radioProgramme", + "id": "w172ywzsz4r076n", "subType": "episode", + "format": "Audio", + "title": "08/01/2023 GMT", "synopses": { - "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia. Juga berita olahraga terbaru dan berbeda setiap harinya.", - "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia. Juga berita olahraga terbaru dan berbeda setiap harinya." + "short": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia.", + "medium": "Berita terbaru dari seluruh dunia dan ulasan peristiwa dari Indonesia." }, - "title": "10/11/2020 GMT", - "type": "media", + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "embedding": false, + "advertising": false, "versions": [ { - "availabilityStatus": "available", - "availableFrom": 1605050100000, + "versionId": "w1msk6hr26md4gx", + "types": [ + "Original" + ], + "duration": 930, + "durationISO8601": "PT15M30S", + "warnings": {}, "availableTerritories": { - "nonUk": false, "uk": false, + "nonUk": false, "world": true }, - "availableUntil": 1607642100000, - "duration": 930, - "durationISO8601": "PT15M30S", - "types": ["Original"], - "versionId": "w1mshvpp45g64sj", - "warnings": {} + "availableFrom": 1673219700000, + "availabilityStatus": "available" } - ] + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "Dunia Pagi Ini", + "type": "media" + }, + "indexImage": { + "id": "p08b4828", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p08b4828.png", + "height": 1080, + "width": 1920, + "altText": "Indonesia 16 9 Updated", + "caption": "Indonesia 16 9 Updated", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1673136000000, + "brand": { + "pid": "w13xtt0s", + "title": "Dunia Pagi Ini" }, - "releaseDateTimestamp": 1604966400000, + "id": "urn:bbc:ares:ws_media:page:bbc_indonesian_radio/w172ywzsz4r076n", "type": "ws_radio" } - ], - "type": "other-episode" + ] } - ], - "site": { - "name": "Indonesia", - "subType": "site", - "type": "simple", - "uri": "/indonesia" - } + ] } -} +} \ No newline at end of file From 7faf8be58a0aefe170491a7b9fb3708240e8aa80 Mon Sep 17 00:00:00 2001 From: Nabeel Khan Date: Wed, 25 Sep 2024 12:12:07 +0100 Subject: [PATCH 14/49] added unit tests for indonesian service --- .../pages/OnDemandAudioPage/index.test.tsx | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/app/pages/OnDemandAudioPage/index.test.tsx b/src/app/pages/OnDemandAudioPage/index.test.tsx index a86503be2ed..d463e4be636 100644 --- a/src/app/pages/OnDemandAudioPage/index.test.tsx +++ b/src/app/pages/OnDemandAudioPage/index.test.tsx @@ -10,6 +10,7 @@ import afaanoromooPageData from '#data/afaanoromoo/bbc_afaanoromoo_radio/w13xttn import arabicPodcastPageData from '#data/arabic/podcasts/p02pc9qc/p08wtg4d.json'; import persianPodcastPageData from '#data/persian/bbc_persian_radio/p02pc9wf.json'; import bengaliPodcastPageData from '#data/bengali/bbc_bangla_radio/p030vjwg.json'; +import indonesianPodcastPageData from '#data/indonesia/bbc_indonesian_radio/w13xtt0s.json'; import * as analyticsUtils from '#lib/analyticsUtils'; import { ToggleContextProvider } from '#contexts/ToggleContext'; import getInitialData from '#app/routes/onDemandAudio/getInitialData'; @@ -568,5 +569,44 @@ describe('OnDemand Radio Page ', () => { expect(mediaLoaderSpy).toHaveBeenCalled(); expect(blocks).toEqual(expect.arrayContaining([expectedMediaOverrides])); }); + + it('should use the derived page identifier to render the audio player for Indonesian Brand', async () => { + const mediaLoaderSpy = jest.spyOn(MediaLoader, 'default'); + + fetchMock.mockResponse(JSON.stringify(indonesianPodcastPageData)); + // @ts-expect-error partial data required for testing purposes + const { pageData } = await getInitialData({ + path: 'some-ondemand-radio-path', + pageType: MEDIA_PAGE, + toggles, + }); + // @ts-expect-error react testing library returns the required query + const { container, getByText } = await renderPage({ + // @ts-expect-error partial data required for testing purposes + pageData, + service: 'indonesia', + }); + const expectedMediaOverrides = { + model: { + language: 'id', + pageIdentifierOverride: + 'indonesia.bbc_indonesian_radio.w172ywztppckjfb.page', + pageTitleOverride: 'Dunia Pagi Ini', + }, + type: 'mediaOverrides', + }; + + await renderPage({ + // @ts-expect-error partial data required for testing purposes + pageData, + service: 'indonesia', + }); + + const mediaLoaderProps = mediaLoaderSpy.mock.calls[0][0]; + const { blocks } = mediaLoaderProps; + + expect(mediaLoaderSpy).toHaveBeenCalled(); + expect(blocks).toEqual(expect.arrayContaining([expectedMediaOverrides])); + }); }); }); From d8798c5db76a1f4b63c8ef4e1fa847be10512b71 Mon Sep 17 00:00:00 2001 From: Nabeel Khan Date: Wed, 25 Sep 2024 12:46:00 +0100 Subject: [PATCH 15/49] added fixture data for dari radio --- data/persian/bbc_dari_radio/p0340v11.json | 1457 +++++++++++++++++ .../pages/OnDemandAudioPage/index.test.tsx | 47 +- 2 files changed, 1500 insertions(+), 4 deletions(-) create mode 100644 data/persian/bbc_dari_radio/p0340v11.json diff --git a/data/persian/bbc_dari_radio/p0340v11.json b/data/persian/bbc_dari_radio/p0340v11.json new file mode 100644 index 00000000000..728aba55b48 --- /dev/null +++ b/data/persian/bbc_dari_radio/p0340v11.json @@ -0,0 +1,1457 @@ +{ + "metadata": { + "id": "urn:bbc:ares:ws_media:page:bbc_dari_radio/w3ct6lbh", + "locators": { + "pid": "w3ct6lbh", + "brandPid": "p0340v11" + }, + "type": "WSRADIO", + "createdBy": "bbc_dari_radio", + "language": "fa", + "lastUpdated": 1727264560000, + "firstPublished": 1724082921000, + "lastPublished": 1724082921000, + "timestamp": 1724082921000, + "options": {}, + "analyticsLabels": { + "pageTitle": "مجله شامگاهی - BBC News فارسی", + "pageIdentifier": "persian.bbc_dari_radio.w3ct6lbh.page", + "producerId": "69", + "contentType": "player-episode", + "producer": "PERSIAN" + }, + "passport": { + "home": "", + "taggings": [] + }, + "tags": {}, + "version": "v1.4.48", + "blockTypes": [ + "media" + ], + "title": "مجله شامگاهی", + "releaseDateTimeStamp": 1727049600000, + "useSensitiveOnwardJourneys": false + }, + "content": { + "blocks": [ + { + "id": "w3ct6lbh", + "subType": "episode", + "format": "Audio", + "title": "23/09/2024 GMT", + "synopses": { + "short": "برنامه خبری و تحلیلی شامگاهی \n", + "medium": "برنامه خبری و تحلیلی شامگاهی \n", + "long": "تازه ترین خبرهای افغانستان، منطقه و جهان همراه با گزارش ها ونگاه موشکافانه به مهم ترین اتفاقات روز.\n" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w4hr2nc8", + "types": [ + "Original" + ], + "duration": 1770, + "durationISO8601": "PT29M30S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableUntil": 1729706370000, + "availableFrom": 1727101800000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "مجله شامگاهی", + "type": "media" + } + ] + }, + "promo": { + "headlines": { + "headline": "مجله شامگاهی" + }, + "locators": { + "pid": "w3ct6lbh", + "brandPid": "p0340v11" + }, + "media": { + "id": "w3ct6lbh", + "subType": "episode", + "format": "Audio", + "title": "23/09/2024 GMT", + "synopses": { + "short": "برنامه خبری و تحلیلی شامگاهی \n", + "medium": "برنامه خبری و تحلیلی شامگاهی \n", + "long": "تازه ترین خبرهای افغانستان، منطقه و جهان همراه با گزارش ها ونگاه موشکافانه به مهم ترین اتفاقات روز.\n" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w4hr2nc8", + "types": [ + "Original" + ], + "duration": 1770, + "durationISO8601": "PT29M30S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableUntil": 1729706370000, + "availableFrom": 1727101800000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "مجله شامگاهی", + "type": "media" + }, + "indexImage": { + "id": "p0gt2kwh", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "height": 1080, + "width": 1920, + "altText": "New Home New Life 3/gold In The Dust", + "caption": "Programming from the BBC Dari Service", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1727049600000, + "brand": { + "pid": "p0340v11", + "title": "مجله شامگاهی" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_dari_radio/w3ct6lbh", + "type": "ws_radio" + }, + "relatedContent": { + "site": { + "subType": "site", + "name": "Persian", + "uri": "/persian", + "type": "simple" + }, + "groups": [ + { + "type": "other-episode", + "promos": [ + { + "headlines": { + "headline": "مجله شامگاهی" + }, + "locators": { + "pid": "w3ct6lh0", + "brandPid": "p0340v11" + }, + "media": { + "id": "w3ct6lh0", + "subType": "episode", + "format": "Audio", + "title": "24/09/2024 GMT", + "synopses": { + "short": "برنامه خبری و تحلیلی شامگاهی \n", + "medium": "برنامه خبری و تحلیلی شامگاهی \n", + "long": "تازه ترین خبرهای افغانستان، منطقه و جهان همراه با گزارش ها ونگاه موشکافانه به مهم ترین اتفاقات روز.\n" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w4hr2nhs", + "types": [ + "Original" + ], + "duration": 1770, + "durationISO8601": "PT29M30S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableUntil": 1729792770000, + "availableFrom": 1727188200000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "مجله شامگاهی", + "type": "media" + }, + "indexImage": { + "id": "p0gt2kwh", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "height": 1080, + "width": 1920, + "altText": "New Home New Life 3/gold In The Dust", + "caption": "Programming from the BBC Dari Service", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1727136000000, + "brand": { + "pid": "p0340v11", + "title": "مجله شامگاهی" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_dari_radio/w3ct6lh0", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "مجله شامگاهی" + }, + "locators": { + "pid": "w3ct6ldq", + "brandPid": "p0340v11" + }, + "media": { + "id": "w3ct6ldq", + "subType": "episode", + "format": "Audio", + "title": "22/09/2024 GMT", + "synopses": { + "short": "برنامه خبری و تحلیلی شامگاهی \n", + "medium": "برنامه خبری و تحلیلی شامگاهی \n", + "long": "تازه ترین خبرهای افغانستان، منطقه و جهان همراه با گزارش ها ونگاه موشکافانه به مهم ترین اتفاقات روز.\n" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w4hr2nfh", + "types": [ + "Original" + ], + "duration": 1770, + "durationISO8601": "PT29M30S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableUntil": 1729619970000, + "availableFrom": 1727015400000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "مجله شامگاهی", + "type": "media" + }, + "indexImage": { + "id": "p0gt2kwh", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "height": 1080, + "width": 1920, + "altText": "New Home New Life 3/gold In The Dust", + "caption": "Programming from the BBC Dari Service", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1726963200000, + "brand": { + "pid": "p0340v11", + "title": "مجله شامگاهی" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_dari_radio/w3ct6ldq", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "مجله شامگاهی" + }, + "locators": { + "pid": "w3ct6lcl", + "brandPid": "p0340v11" + }, + "media": { + "id": "w3ct6lcl", + "subType": "episode", + "format": "Audio", + "title": "21/09/2024 GMT", + "synopses": { + "short": "برنامه خبری و تحلیلی شامگاهی \n", + "medium": "برنامه خبری و تحلیلی شامگاهی \n", + "long": "تازه ترین خبرهای افغانستان، منطقه و جهان همراه با گزارش ها ونگاه موشکافانه به مهم ترین اتفاقات روز.\n" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w4hr2ndc", + "types": [ + "Original" + ], + "duration": 1770, + "durationISO8601": "PT29M30S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableUntil": 1729533570000, + "availableFrom": 1726929000000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "مجله شامگاهی", + "type": "media" + }, + "indexImage": { + "id": "p0gt2kwh", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "height": 1080, + "width": 1920, + "altText": "New Home New Life 3/gold In The Dust", + "caption": "Programming from the BBC Dari Service", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1726876800000, + "brand": { + "pid": "p0340v11", + "title": "مجله شامگاهی" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_dari_radio/w3ct6lcl", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "مجله شامگاهی" + }, + "locators": { + "pid": "w3ct6l9b", + "brandPid": "p0340v11" + }, + "media": { + "id": "w3ct6l9b", + "subType": "episode", + "format": "Audio", + "title": "20/09/2024 GMT", + "synopses": { + "short": "برنامه خبری و تحلیلی شامگاهی \n", + "medium": "برنامه خبری و تحلیلی شامگاهی \n", + "long": "تازه ترین خبرهای افغانستان، منطقه و جهان همراه با گزارش ها ونگاه موشکافانه به مهم ترین اتفاقات روز.\n" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w4hr2nb3", + "types": [ + "Original" + ], + "duration": 1770, + "durationISO8601": "PT29M30S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableUntil": 1729447170000, + "availableFrom": 1726842600000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "مجله شامگاهی", + "type": "media" + }, + "indexImage": { + "id": "p0gt2kwh", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "height": 1080, + "width": 1920, + "altText": "New Home New Life 3/gold In The Dust", + "caption": "Programming from the BBC Dari Service", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1726790400000, + "brand": { + "pid": "p0340v11", + "title": "مجله شامگاهی" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_dari_radio/w3ct6l9b", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "مجله شامگاهی" + }, + "locators": { + "pid": "w3ct6lfv", + "brandPid": "p0340v11" + }, + "media": { + "id": "w3ct6lfv", + "subType": "episode", + "format": "Audio", + "title": "19/09/2024 GMT", + "synopses": { + "short": "برنامه خبری و تحلیلی شامگاهی \n", + "medium": "برنامه خبری و تحلیلی شامگاهی \n", + "long": "تازه ترین خبرهای افغانستان، منطقه و جهان همراه با گزارش ها ونگاه موشکافانه به مهم ترین اتفاقات روز.\n" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w4hr2ngm", + "types": [ + "Original" + ], + "duration": 1770, + "durationISO8601": "PT29M30S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableUntil": 1729360770000, + "availableFrom": 1726756200000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "مجله شامگاهی", + "type": "media" + }, + "indexImage": { + "id": "p0gt2kwh", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "height": 1080, + "width": 1920, + "altText": "New Home New Life 3/gold In The Dust", + "caption": "Programming from the BBC Dari Service", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1726704000000, + "brand": { + "pid": "p0340v11", + "title": "مجله شامگاهی" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_dari_radio/w3ct6lfv", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "مجله شامگاهی" + }, + "locators": { + "pid": "w3ct6lj3", + "brandPid": "p0340v11" + }, + "media": { + "id": "w3ct6lj3", + "subType": "episode", + "format": "Audio", + "title": "18/09/2024 GMT", + "synopses": { + "short": "برنامه خبری و تحلیلی شامگاهی \n", + "medium": "برنامه خبری و تحلیلی شامگاهی \n", + "long": "تازه ترین خبرهای افغانستان، منطقه و جهان همراه با گزارش ها ونگاه موشکافانه به مهم ترین اتفاقات روز.\n" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w4hr2njw", + "types": [ + "Original" + ], + "duration": 1770, + "durationISO8601": "PT29M30S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableUntil": 1729274370000, + "availableFrom": 1726669800000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "مجله شامگاهی", + "type": "media" + }, + "indexImage": { + "id": "p0gt2kwh", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "height": 1080, + "width": 1920, + "altText": "New Home New Life 3/gold In The Dust", + "caption": "Programming from the BBC Dari Service", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1726617600000, + "brand": { + "pid": "p0340v11", + "title": "مجله شامگاهی" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_dari_radio/w3ct6lj3", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "مجله شامگاهی" + }, + "locators": { + "pid": "w3ct6lgz", + "brandPid": "p0340v11" + }, + "media": { + "id": "w3ct6lgz", + "subType": "episode", + "format": "Audio", + "title": "17/09/2024 GMT", + "synopses": { + "short": "برنامه خبری و تحلیلی شامگاهی \n", + "medium": "برنامه خبری و تحلیلی شامگاهی \n", + "long": "تازه ترین خبرهای افغانستان، منطقه و جهان همراه با گزارش ها ونگاه موشکافانه به مهم ترین اتفاقات روز.\n" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w4hr2nhr", + "types": [ + "Original" + ], + "duration": 1770, + "durationISO8601": "PT29M30S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableUntil": 1729187970000, + "availableFrom": 1726583400000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "مجله شامگاهی", + "type": "media" + }, + "indexImage": { + "id": "p0gt2kwh", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "height": 1080, + "width": 1920, + "altText": "New Home New Life 3/gold In The Dust", + "caption": "Programming from the BBC Dari Service", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1726531200000, + "brand": { + "pid": "p0340v11", + "title": "مجله شامگاهی" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_dari_radio/w3ct6lgz", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "مجله شامگاهی" + }, + "locators": { + "pid": "w3ct6lbg", + "brandPid": "p0340v11" + }, + "media": { + "id": "w3ct6lbg", + "subType": "episode", + "format": "Audio", + "title": "16/09/2024 GMT", + "synopses": { + "short": "برنامه خبری و تحلیلی شامگاهی \n", + "medium": "برنامه خبری و تحلیلی شامگاهی \n", + "long": "تازه ترین خبرهای افغانستان، منطقه و جهان همراه با گزارش ها ونگاه موشکافانه به مهم ترین اتفاقات روز.\n" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w4hr2nc7", + "types": [ + "Original" + ], + "duration": 1770, + "durationISO8601": "PT29M30S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableUntil": 1729101570000, + "availableFrom": 1726497000000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "مجله شامگاهی", + "type": "media" + }, + "indexImage": { + "id": "p0gt2kwh", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "height": 1080, + "width": 1920, + "altText": "New Home New Life 3/gold In The Dust", + "caption": "Programming from the BBC Dari Service", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1726444800000, + "brand": { + "pid": "p0340v11", + "title": "مجله شامگاهی" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_dari_radio/w3ct6lbg", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "مجله شامگاهی" + }, + "locators": { + "pid": "w3ct6ldp", + "brandPid": "p0340v11" + }, + "media": { + "id": "w3ct6ldp", + "subType": "episode", + "format": "Audio", + "title": "15/09/2024 GMT", + "synopses": { + "short": "برنامه خبری و تحلیلی شامگاهی \n", + "medium": "برنامه خبری و تحلیلی شامگاهی \n", + "long": "تازه ترین خبرهای افغانستان، منطقه و جهان همراه با گزارش ها ونگاه موشکافانه به مهم ترین اتفاقات روز.\n" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w4hr2nfg", + "types": [ + "Original" + ], + "duration": 1770, + "durationISO8601": "PT29M30S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableUntil": 1729015170000, + "availableFrom": 1726410600000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "مجله شامگاهی", + "type": "media" + }, + "indexImage": { + "id": "p0gt2kwh", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "height": 1080, + "width": 1920, + "altText": "New Home New Life 3/gold In The Dust", + "caption": "Programming from the BBC Dari Service", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1726358400000, + "brand": { + "pid": "p0340v11", + "title": "مجله شامگاهی" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_dari_radio/w3ct6ldp", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "مجله شامگاهی" + }, + "locators": { + "pid": "w3ct6lck", + "brandPid": "p0340v11" + }, + "media": { + "id": "w3ct6lck", + "subType": "episode", + "format": "Audio", + "title": "14/09/2024 GMT", + "synopses": { + "short": "برنامه خبری و تحلیلی شامگاهی \n", + "medium": "برنامه خبری و تحلیلی شامگاهی \n", + "long": "تازه ترین خبرهای افغانستان، منطقه و جهان همراه با گزارش ها ونگاه موشکافانه به مهم ترین اتفاقات روز.\n" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w4hr2ndb", + "types": [ + "Original" + ], + "duration": 1770, + "durationISO8601": "PT29M30S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableUntil": 1728928770000, + "availableFrom": 1726324200000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "مجله شامگاهی", + "type": "media" + }, + "indexImage": { + "id": "p0gt2kwh", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "height": 1080, + "width": 1920, + "altText": "New Home New Life 3/gold In The Dust", + "caption": "Programming from the BBC Dari Service", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1726272000000, + "brand": { + "pid": "p0340v11", + "title": "مجله شامگاهی" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_dari_radio/w3ct6lck", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "مجله شامگاهی" + }, + "locators": { + "pid": "w3ct6l99", + "brandPid": "p0340v11" + }, + "media": { + "id": "w3ct6l99", + "subType": "episode", + "format": "Audio", + "title": "13/09/2024 GMT", + "synopses": { + "short": "برنامه خبری و تحلیلی شامگاهی \n", + "medium": "برنامه خبری و تحلیلی شامگاهی \n", + "long": "تازه ترین خبرهای افغانستان، منطقه و جهان همراه با گزارش ها ونگاه موشکافانه به مهم ترین اتفاقات روز.\n" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w4hr2nb2", + "types": [ + "Original" + ], + "duration": 1770, + "durationISO8601": "PT29M30S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableUntil": 1728842370000, + "availableFrom": 1726237800000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "مجله شامگاهی", + "type": "media" + }, + "indexImage": { + "id": "p0gt2kwh", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "height": 1080, + "width": 1920, + "altText": "New Home New Life 3/gold In The Dust", + "caption": "Programming from the BBC Dari Service", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1726185600000, + "brand": { + "pid": "p0340v11", + "title": "مجله شامگاهی" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_dari_radio/w3ct6l99", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "مجله شامگاهی" + }, + "locators": { + "pid": "w3ct6lft", + "brandPid": "p0340v11" + }, + "media": { + "id": "w3ct6lft", + "subType": "episode", + "format": "Audio", + "title": "12/09/2024 GMT", + "synopses": { + "short": "برنامه خبری و تحلیلی شامگاهی \n", + "medium": "برنامه خبری و تحلیلی شامگاهی \n", + "long": "تازه ترین خبرهای افغانستان، منطقه و جهان همراه با گزارش ها ونگاه موشکافانه به مهم ترین اتفاقات روز.\n" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w4hr2ngl", + "types": [ + "Original" + ], + "duration": 1770, + "durationISO8601": "PT29M30S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableUntil": 1728755970000, + "availableFrom": 1726151400000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "مجله شامگاهی", + "type": "media" + }, + "indexImage": { + "id": "p0gt2kwh", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "height": 1080, + "width": 1920, + "altText": "New Home New Life 3/gold In The Dust", + "caption": "Programming from the BBC Dari Service", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1726099200000, + "brand": { + "pid": "p0340v11", + "title": "مجله شامگاهی" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_dari_radio/w3ct6lft", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "مجله شامگاهی" + }, + "locators": { + "pid": "w3ct6lj2", + "brandPid": "p0340v11" + }, + "media": { + "id": "w3ct6lj2", + "subType": "episode", + "format": "Audio", + "title": "11/09/2024 GMT", + "synopses": { + "short": "برنامه خبری و تحلیلی شامگاهی \n", + "medium": "برنامه خبری و تحلیلی شامگاهی \n", + "long": "تازه ترین خبرهای افغانستان، منطقه و جهان همراه با گزارش ها ونگاه موشکافانه به مهم ترین اتفاقات روز.\n" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w4hr2njv", + "types": [ + "Original" + ], + "duration": 1770, + "durationISO8601": "PT29M30S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableUntil": 1728669570000, + "availableFrom": 1726065000000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "مجله شامگاهی", + "type": "media" + }, + "indexImage": { + "id": "p0gt2kwh", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "height": 1080, + "width": 1920, + "altText": "New Home New Life 3/gold In The Dust", + "caption": "Programming from the BBC Dari Service", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1726012800000, + "brand": { + "pid": "p0340v11", + "title": "مجله شامگاهی" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_dari_radio/w3ct6lj2", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "مجله شامگاهی" + }, + "locators": { + "pid": "w3ct6lgy", + "brandPid": "p0340v11" + }, + "media": { + "id": "w3ct6lgy", + "subType": "episode", + "format": "Audio", + "title": "10/09/2024 GMT", + "synopses": { + "short": "برنامه خبری و تحلیلی شامگاهی \n", + "medium": "برنامه خبری و تحلیلی شامگاهی \n", + "long": "تازه ترین خبرهای افغانستان، منطقه و جهان همراه با گزارش ها ونگاه موشکافانه به مهم ترین اتفاقات روز.\n" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w4hr2nhq", + "types": [ + "Original" + ], + "duration": 1770, + "durationISO8601": "PT29M30S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableUntil": 1728583170000, + "availableFrom": 1725978600000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "مجله شامگاهی", + "type": "media" + }, + "indexImage": { + "id": "p0gt2kwh", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "height": 1080, + "width": 1920, + "altText": "New Home New Life 3/gold In The Dust", + "caption": "Programming from the BBC Dari Service", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1725926400000, + "brand": { + "pid": "p0340v11", + "title": "مجله شامگاهی" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_dari_radio/w3ct6lgy", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "مجله شامگاهی" + }, + "locators": { + "pid": "w3ct6lbf", + "brandPid": "p0340v11" + }, + "media": { + "id": "w3ct6lbf", + "subType": "episode", + "format": "Audio", + "title": "09/09/2024 GMT", + "synopses": { + "short": "برنامه خبری و تحلیلی شامگاهی \n", + "medium": "برنامه خبری و تحلیلی شامگاهی \n", + "long": "تازه ترین خبرهای افغانستان، منطقه و جهان همراه با گزارش ها ونگاه موشکافانه به مهم ترین اتفاقات روز.\n" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w4hr2nc6", + "types": [ + "Original" + ], + "duration": 1770, + "durationISO8601": "PT29M30S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableUntil": 1728496770000, + "availableFrom": 1725892200000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "مجله شامگاهی", + "type": "media" + }, + "indexImage": { + "id": "p0gt2kwh", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "height": 1080, + "width": 1920, + "altText": "New Home New Life 3/gold In The Dust", + "caption": "Programming from the BBC Dari Service", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1725840000000, + "brand": { + "pid": "p0340v11", + "title": "مجله شامگاهی" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_dari_radio/w3ct6lbf", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "مجله شامگاهی" + }, + "locators": { + "pid": "w3ct6ldn", + "brandPid": "p0340v11" + }, + "media": { + "id": "w3ct6ldn", + "subType": "episode", + "format": "Audio", + "title": "08/09/2024 GMT", + "synopses": { + "short": "برنامه خبری و تحلیلی شامگاهی \n", + "medium": "برنامه خبری و تحلیلی شامگاهی \n", + "long": "تازه ترین خبرهای افغانستان، منطقه و جهان همراه با گزارش ها ونگاه موشکافانه به مهم ترین اتفاقات روز.\n" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w4hr2nff", + "types": [ + "Original" + ], + "duration": 1770, + "durationISO8601": "PT29M30S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableUntil": 1728410370000, + "availableFrom": 1725805800000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "مجله شامگاهی", + "type": "media" + }, + "indexImage": { + "id": "p0gt2kwh", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "height": 1080, + "width": 1920, + "altText": "New Home New Life 3/gold In The Dust", + "caption": "Programming from the BBC Dari Service", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1725753600000, + "brand": { + "pid": "p0340v11", + "title": "مجله شامگاهی" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_dari_radio/w3ct6ldn", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "مجله شامگاهی" + }, + "locators": { + "pid": "w3ct6lcj", + "brandPid": "p0340v11" + }, + "media": { + "id": "w3ct6lcj", + "subType": "episode", + "format": "Audio", + "title": "07/09/2024 GMT", + "synopses": { + "short": "برنامه خبری و تحلیلی شامگاهی \n", + "medium": "برنامه خبری و تحلیلی شامگاهی \n", + "long": "تازه ترین خبرهای افغانستان، منطقه و جهان همراه با گزارش ها ونگاه موشکافانه به مهم ترین اتفاقات روز.\n" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w4hr2nd9", + "types": [ + "Original" + ], + "duration": 1770, + "durationISO8601": "PT29M30S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableUntil": 1728323970000, + "availableFrom": 1725719400000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "مجله شامگاهی", + "type": "media" + }, + "indexImage": { + "id": "p0gt2kwh", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "height": 1080, + "width": 1920, + "altText": "New Home New Life 3/gold In The Dust", + "caption": "Programming from the BBC Dari Service", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1725667200000, + "brand": { + "pid": "p0340v11", + "title": "مجله شامگاهی" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_dari_radio/w3ct6lcj", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "مجله شامگاهی" + }, + "locators": { + "pid": "w3ct6l98", + "brandPid": "p0340v11" + }, + "media": { + "id": "w3ct6l98", + "subType": "episode", + "format": "Audio", + "title": "06/09/2024 GMT", + "synopses": { + "short": "برنامه خبری و تحلیلی شامگاهی \n", + "medium": "برنامه خبری و تحلیلی شامگاهی \n", + "long": "تازه ترین خبرهای افغانستان، منطقه و جهان همراه با گزارش ها ونگاه موشکافانه به مهم ترین اتفاقات روز.\n" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w4hr2nb1", + "types": [ + "Original" + ], + "duration": 1770, + "durationISO8601": "PT29M30S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableUntil": 1728237570000, + "availableFrom": 1725633000000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "مجله شامگاهی", + "type": "media" + }, + "indexImage": { + "id": "p0gt2kwh", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "height": 1080, + "width": 1920, + "altText": "New Home New Life 3/gold In The Dust", + "caption": "Programming from the BBC Dari Service", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1725580800000, + "brand": { + "pid": "p0340v11", + "title": "مجله شامگاهی" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_dari_radio/w3ct6l98", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "مجله شامگاهی" + }, + "locators": { + "pid": "w3ct6lfs", + "brandPid": "p0340v11" + }, + "media": { + "id": "w3ct6lfs", + "subType": "episode", + "format": "Audio", + "title": "05/09/2024 GMT", + "synopses": { + "short": "برنامه خبری و تحلیلی شامگاهی \n", + "medium": "برنامه خبری و تحلیلی شامگاهی \n", + "long": "تازه ترین خبرهای افغانستان، منطقه و جهان همراه با گزارش ها ونگاه موشکافانه به مهم ترین اتفاقات روز.\n" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w4hr2ngk", + "types": [ + "Original" + ], + "duration": 1770, + "durationISO8601": "PT29M30S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableUntil": 1728151170000, + "availableFrom": 1725546600000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "مجله شامگاهی", + "type": "media" + }, + "indexImage": { + "id": "p0gt2kwh", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "height": 1080, + "width": 1920, + "altText": "New Home New Life 3/gold In The Dust", + "caption": "Programming from the BBC Dari Service", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1725494400000, + "brand": { + "pid": "p0340v11", + "title": "مجله شامگاهی" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_dari_radio/w3ct6lfs", + "type": "ws_radio" + }, + { + "headlines": { + "headline": "مجله شامگاهی" + }, + "locators": { + "pid": "w3ct6lj1", + "brandPid": "p0340v11" + }, + "media": { + "id": "w3ct6lj1", + "subType": "episode", + "format": "Audio", + "title": "04/09/2024 GMT", + "synopses": { + "short": "برنامه خبری و تحلیلی شامگاهی \n", + "medium": "برنامه خبری و تحلیلی شامگاهی \n", + "long": "تازه ترین خبرهای افغانستان، منطقه و جهان همراه با گزارش ها ونگاه موشکافانه به مهم ترین اتفاقات روز.\n" + }, + "imageUrl": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "embedding": false, + "advertising": false, + "versions": [ + { + "versionId": "w4hr2njt", + "types": [ + "Original" + ], + "duration": 1770, + "durationISO8601": "PT29M30S", + "warnings": {}, + "availableTerritories": { + "uk": true, + "nonUk": true, + "world": false + }, + "availableUntil": 1728064770000, + "availableFrom": 1725460200000, + "availabilityStatus": "available" + } + ], + "availability": "available", + "smpKind": "radioProgramme", + "episodeTitle": "مجله شامگاهی", + "type": "media" + }, + "indexImage": { + "id": "p0gt2kwh", + "subType": "index", + "href": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "path": "ichef.bbci.co.uk/images/ic/$recipe/p0gt2kwh.png", + "height": 1080, + "width": 1920, + "altText": "New Home New Life 3/gold In The Dust", + "caption": "Programming from the BBC Dari Service", + "copyrightHolder": null, + "type": "image" + }, + "releaseDateTimestamp": 1725408000000, + "brand": { + "pid": "p0340v11", + "title": "مجله شامگاهی" + }, + "id": "urn:bbc:ares:ws_media:page:bbc_dari_radio/w3ct6lj1", + "type": "ws_radio" + } + ] + } + ] + } +} \ No newline at end of file diff --git a/src/app/pages/OnDemandAudioPage/index.test.tsx b/src/app/pages/OnDemandAudioPage/index.test.tsx index d463e4be636..47a9d838dc5 100644 --- a/src/app/pages/OnDemandAudioPage/index.test.tsx +++ b/src/app/pages/OnDemandAudioPage/index.test.tsx @@ -9,8 +9,9 @@ import indonesiaPageData from '#data/indonesia/bbc_indonesian_radio/w172xh267fpn import afaanoromooPageData from '#data/afaanoromoo/bbc_afaanoromoo_radio/w13xttnw.json'; import arabicPodcastPageData from '#data/arabic/podcasts/p02pc9qc/p08wtg4d.json'; import persianPodcastPageData from '#data/persian/bbc_persian_radio/p02pc9wf.json'; -import bengaliPodcastPageData from '#data/bengali/bbc_bangla_radio/p030vjwg.json'; -import indonesianPodcastPageData from '#data/indonesia/bbc_indonesian_radio/w13xtt0s.json'; +import bengaliPageData from '#data/bengali/bbc_bangla_radio/p030vjwg.json'; +import indonesianPageData from '#data/indonesia/bbc_indonesian_radio/w13xtt0s.json'; +import persianDariPageData from '#data/persian/bbc_dari_radio/' import * as analyticsUtils from '#lib/analyticsUtils'; import { ToggleContextProvider } from '#contexts/ToggleContext'; import getInitialData from '#app/routes/onDemandAudio/getInitialData'; @@ -534,7 +535,7 @@ describe('OnDemand Radio Page ', () => { it('should use the derived page identifier to render the audio player for Bengali Brand', async () => { const mediaLoaderSpy = jest.spyOn(MediaLoader, 'default'); - fetchMock.mockResponse(JSON.stringify(bengaliPodcastPageData)); + fetchMock.mockResponse(JSON.stringify(bengaliPageData)); // @ts-expect-error partial data required for testing purposes const { pageData } = await getInitialData({ path: 'some-ondemand-radio-path', @@ -573,7 +574,45 @@ describe('OnDemand Radio Page ', () => { it('should use the derived page identifier to render the audio player for Indonesian Brand', async () => { const mediaLoaderSpy = jest.spyOn(MediaLoader, 'default'); - fetchMock.mockResponse(JSON.stringify(indonesianPodcastPageData)); + fetchMock.mockResponse(JSON.stringify(indonesianPageData)); + // @ts-expect-error partial data required for testing purposes + const { pageData } = await getInitialData({ + path: 'some-ondemand-radio-path', + pageType: MEDIA_PAGE, + toggles, + }); + // @ts-expect-error react testing library returns the required query + const { container, getByText } = await renderPage({ + // @ts-expect-error partial data required for testing purposes + pageData, + service: 'indonesia', + }); + const expectedMediaOverrides = { + model: { + language: 'id', + pageIdentifierOverride: + 'indonesia.bbc_indonesian_radio.w172ywztppckjfb.page', + pageTitleOverride: 'Dunia Pagi Ini', + }, + type: 'mediaOverrides', + }; + + await renderPage({ + // @ts-expect-error partial data required for testing purposes + pageData, + service: 'indonesia', + }); + + const mediaLoaderProps = mediaLoaderSpy.mock.calls[0][0]; + const { blocks } = mediaLoaderProps; + + expect(mediaLoaderSpy).toHaveBeenCalled(); + expect(blocks).toEqual(expect.arrayContaining([expectedMediaOverrides])); + }); + it('should use the derived page identifier to render the audio player for Persian Dari Episode', async () => { + const mediaLoaderSpy = jest.spyOn(MediaLoader, 'default'); + + fetchMock.mockResponse(JSON.stringify(indonesianPageData)); // @ts-expect-error partial data required for testing purposes const { pageData } = await getInitialData({ path: 'some-ondemand-radio-path', From b4923eaa22054a295290437b762006a815f9ffaf Mon Sep 17 00:00:00 2001 From: Nabeel Khan Date: Wed, 25 Sep 2024 12:58:09 +0100 Subject: [PATCH 16/49] updated tests for persian dari radio --- src/app/pages/OnDemandAudioPage/index.test.tsx | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/app/pages/OnDemandAudioPage/index.test.tsx b/src/app/pages/OnDemandAudioPage/index.test.tsx index 47a9d838dc5..ed3563ff92f 100644 --- a/src/app/pages/OnDemandAudioPage/index.test.tsx +++ b/src/app/pages/OnDemandAudioPage/index.test.tsx @@ -11,7 +11,7 @@ import arabicPodcastPageData from '#data/arabic/podcasts/p02pc9qc/p08wtg4d.json' import persianPodcastPageData from '#data/persian/bbc_persian_radio/p02pc9wf.json'; import bengaliPageData from '#data/bengali/bbc_bangla_radio/p030vjwg.json'; import indonesianPageData from '#data/indonesia/bbc_indonesian_radio/w13xtt0s.json'; -import persianDariPageData from '#data/persian/bbc_dari_radio/' +import persianDariPageData from '#data/persian/bbc_dari_radio/p0340v11.json'; import * as analyticsUtils from '#lib/analyticsUtils'; import { ToggleContextProvider } from '#contexts/ToggleContext'; import getInitialData from '#app/routes/onDemandAudio/getInitialData'; @@ -612,7 +612,7 @@ describe('OnDemand Radio Page ', () => { it('should use the derived page identifier to render the audio player for Persian Dari Episode', async () => { const mediaLoaderSpy = jest.spyOn(MediaLoader, 'default'); - fetchMock.mockResponse(JSON.stringify(indonesianPageData)); + fetchMock.mockResponse(JSON.stringify(persianDariPageData)); // @ts-expect-error partial data required for testing purposes const { pageData } = await getInitialData({ path: 'some-ondemand-radio-path', @@ -623,14 +623,13 @@ describe('OnDemand Radio Page ', () => { const { container, getByText } = await renderPage({ // @ts-expect-error partial data required for testing purposes pageData, - service: 'indonesia', + service: 'persian', }); const expectedMediaOverrides = { model: { - language: 'id', - pageIdentifierOverride: - 'indonesia.bbc_indonesian_radio.w172ywztppckjfb.page', - pageTitleOverride: 'Dunia Pagi Ini', + language: 'fa', + pageIdentifierOverride: 'persian.bbc_dari_radio.w3ct6lbh.page', + pageTitleOverride: 'مجله شامگاهی', }, type: 'mediaOverrides', }; @@ -638,7 +637,7 @@ describe('OnDemand Radio Page ', () => { await renderPage({ // @ts-expect-error partial data required for testing purposes pageData, - service: 'indonesia', + service: 'persian', }); const mediaLoaderProps = mediaLoaderSpy.mock.calls[0][0]; From b6aad2534dfe490f86c259c0bb7f14caa16a6f4e Mon Sep 17 00:00:00 2001 From: Nabeel Khan Date: Wed, 25 Sep 2024 13:16:42 +0100 Subject: [PATCH 17/49] removed unused imports/variables and made variable names more specific --- .../pages/OnDemandAudioPage/index.test.tsx | 25 ++++++++----------- src/testHelpers/setupTests.js | 1 - 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/src/app/pages/OnDemandAudioPage/index.test.tsx b/src/app/pages/OnDemandAudioPage/index.test.tsx index ed3563ff92f..9c4bbb97b06 100644 --- a/src/app/pages/OnDemandAudioPage/index.test.tsx +++ b/src/app/pages/OnDemandAudioPage/index.test.tsx @@ -8,10 +8,10 @@ import zhongwenPageData from '#data/zhongwen/bbc_cantonese_radio/w172xf3r5x8hw4v import indonesiaPageData from '#data/indonesia/bbc_indonesian_radio/w172xh267fpn19l.json'; import afaanoromooPageData from '#data/afaanoromoo/bbc_afaanoromoo_radio/w13xttnw.json'; import arabicPodcastPageData from '#data/arabic/podcasts/p02pc9qc/p08wtg4d.json'; -import persianPodcastPageData from '#data/persian/bbc_persian_radio/p02pc9wf.json'; -import bengaliPageData from '#data/bengali/bbc_bangla_radio/p030vjwg.json'; -import indonesianPageData from '#data/indonesia/bbc_indonesian_radio/w13xtt0s.json'; -import persianDariPageData from '#data/persian/bbc_dari_radio/p0340v11.json'; +import persianPodcastBrandPageData from '#data/persian/bbc_persian_radio/p02pc9wf.json'; +import bengaliBrandPageData from '#data/bengali/bbc_bangla_radio/p030vjwg.json'; +import indonesianBrandPageData from '#data/indonesia/bbc_indonesian_radio/w13xtt0s.json'; +import persianDariEpisodePageData from '#data/persian/bbc_dari_radio/p0340v11.json'; import * as analyticsUtils from '#lib/analyticsUtils'; import { ToggleContextProvider } from '#contexts/ToggleContext'; import getInitialData from '#app/routes/onDemandAudio/getInitialData'; @@ -496,7 +496,7 @@ describe('OnDemand Radio Page ', () => { it('should use the derived page identifier to render the audio player for Persian Podcast', async () => { const mediaLoaderSpy = jest.spyOn(MediaLoader, 'default'); - fetchMock.mockResponse(JSON.stringify(persianPodcastPageData)); + fetchMock.mockResponse(JSON.stringify(persianPodcastBrandPageData)); // @ts-expect-error partial data required for testing purposes const { pageData } = await getInitialData({ path: 'some-ondemand-radio-path', @@ -535,15 +535,14 @@ describe('OnDemand Radio Page ', () => { it('should use the derived page identifier to render the audio player for Bengali Brand', async () => { const mediaLoaderSpy = jest.spyOn(MediaLoader, 'default'); - fetchMock.mockResponse(JSON.stringify(bengaliPageData)); + fetchMock.mockResponse(JSON.stringify(bengaliBrandPageData)); // @ts-expect-error partial data required for testing purposes const { pageData } = await getInitialData({ path: 'some-ondemand-radio-path', pageType: MEDIA_PAGE, toggles, }); - // @ts-expect-error react testing library returns the required query - const { container, getByText } = await renderPage({ + await renderPage({ // @ts-expect-error partial data required for testing purposes pageData, service: 'bengali', @@ -574,15 +573,14 @@ describe('OnDemand Radio Page ', () => { it('should use the derived page identifier to render the audio player for Indonesian Brand', async () => { const mediaLoaderSpy = jest.spyOn(MediaLoader, 'default'); - fetchMock.mockResponse(JSON.stringify(indonesianPageData)); + fetchMock.mockResponse(JSON.stringify(indonesianBrandPageData)); // @ts-expect-error partial data required for testing purposes const { pageData } = await getInitialData({ path: 'some-ondemand-radio-path', pageType: MEDIA_PAGE, toggles, }); - // @ts-expect-error react testing library returns the required query - const { container, getByText } = await renderPage({ + await renderPage({ // @ts-expect-error partial data required for testing purposes pageData, service: 'indonesia', @@ -612,15 +610,14 @@ describe('OnDemand Radio Page ', () => { it('should use the derived page identifier to render the audio player for Persian Dari Episode', async () => { const mediaLoaderSpy = jest.spyOn(MediaLoader, 'default'); - fetchMock.mockResponse(JSON.stringify(persianDariPageData)); + fetchMock.mockResponse(JSON.stringify(persianDariEpisodePageData)); // @ts-expect-error partial data required for testing purposes const { pageData } = await getInitialData({ path: 'some-ondemand-radio-path', pageType: MEDIA_PAGE, toggles, }); - // @ts-expect-error react testing library returns the required query - const { container, getByText } = await renderPage({ + await renderPage({ // @ts-expect-error partial data required for testing purposes pageData, service: 'persian', diff --git a/src/testHelpers/setupTests.js b/src/testHelpers/setupTests.js index 6df005d5319..d14dc0c0931 100644 --- a/src/testHelpers/setupTests.js +++ b/src/testHelpers/setupTests.js @@ -1,6 +1,5 @@ import colours from 'colors'; import '@testing-library/jest-dom'; -import themes from '#app/components/ThemeProvider/themes/loadableConfig'; // Errors const FAILED_PROP = 'Failed prop'; From cda63183f9b6348fcc371c7cc401de1d54a410c4 Mon Sep 17 00:00:00 2001 From: Nabeel Khan Date: Wed, 25 Sep 2024 14:39:18 +0100 Subject: [PATCH 18/49] removed unused variables --- src/app/pages/OnDemandAudioPage/index.test.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/app/pages/OnDemandAudioPage/index.test.tsx b/src/app/pages/OnDemandAudioPage/index.test.tsx index 9c4bbb97b06..c8d2774b3d0 100644 --- a/src/app/pages/OnDemandAudioPage/index.test.tsx +++ b/src/app/pages/OnDemandAudioPage/index.test.tsx @@ -503,8 +503,7 @@ describe('OnDemand Radio Page ', () => { pageType: MEDIA_PAGE, toggles, }); - // @ts-expect-error react testing library returns the required query - const { container, getByText } = await renderPage({ + await renderPage({ // @ts-expect-error partial data required for testing purposes pageData, service: 'persian', From 4f577557ce80ec1f2742a79ad344ff32197cfb42 Mon Sep 17 00:00:00 2001 From: chrish01 Date: Wed, 25 Sep 2024 18:38:19 +0100 Subject: [PATCH 19/49] fix unit test --- .../pages/OnDemandAudioPage/index.test.tsx | 55 ++++++++++++------- 1 file changed, 35 insertions(+), 20 deletions(-) diff --git a/src/app/pages/OnDemandAudioPage/index.test.tsx b/src/app/pages/OnDemandAudioPage/index.test.tsx index c8d2774b3d0..c4d0fad4b3f 100644 --- a/src/app/pages/OnDemandAudioPage/index.test.tsx +++ b/src/app/pages/OnDemandAudioPage/index.test.tsx @@ -110,6 +110,7 @@ const getAvailableEpisode = assocPath( describe('OnDemand Radio Page ', () => { beforeEach(() => { + jest.clearAllMocks(); process.env = { ...env }; }); @@ -499,15 +500,10 @@ describe('OnDemand Radio Page ', () => { fetchMock.mockResponse(JSON.stringify(persianPodcastBrandPageData)); // @ts-expect-error partial data required for testing purposes const { pageData } = await getInitialData({ - path: 'some-ondemand-radio-path', + path: 'some-podcast-radio-path', pageType: MEDIA_PAGE, toggles, }); - await renderPage({ - // @ts-expect-error partial data required for testing purposes - pageData, - service: 'persian', - }); const expectedMediaOverrides = { model: { language: 'fa', @@ -541,11 +537,7 @@ describe('OnDemand Radio Page ', () => { pageType: MEDIA_PAGE, toggles, }); - await renderPage({ - // @ts-expect-error partial data required for testing purposes - pageData, - service: 'bengali', - }); + const expectedMediaOverrides = { model: { language: 'bn', @@ -579,11 +571,7 @@ describe('OnDemand Radio Page ', () => { pageType: MEDIA_PAGE, toggles, }); - await renderPage({ - // @ts-expect-error partial data required for testing purposes - pageData, - service: 'indonesia', - }); + const expectedMediaOverrides = { model: { language: 'id', @@ -616,16 +604,43 @@ describe('OnDemand Radio Page ', () => { pageType: MEDIA_PAGE, toggles, }); + + const expectedMediaOverrides = { + model: { + language: 'fa', + pageIdentifierOverride: 'persian.bbc_dari_radio.w3ct6lbh.page', + pageTitleOverride: 'مجله شامگاهی', + }, + type: 'mediaOverrides', + }; + await renderPage({ // @ts-expect-error partial data required for testing purposes pageData, service: 'persian', }); + + const mediaLoaderProps = mediaLoaderSpy.mock.calls[0][0]; + const { blocks } = mediaLoaderProps; + + expect(mediaLoaderSpy).toHaveBeenCalled(); + expect(blocks).toEqual(expect.arrayContaining([expectedMediaOverrides])); + }); + it('should use the derived page identifier to render the audio player for Pashto Brand', async () => { + const mediaLoaderSpy = jest.spyOn(MediaLoader, 'default'); + + fetchMock.mockResponse(JSON.stringify(pashtoPageData)); + // @ts-expect-error partial data required for testing purposes + const { pageData } = await getInitialData({ + path: 'some-ondemand-radio-path', + pageType: MEDIA_PAGE, + toggles, + }); const expectedMediaOverrides = { model: { - language: 'fa', - pageIdentifierOverride: 'persian.bbc_dari_radio.w3ct6lbh.page', - pageTitleOverride: 'مجله شامگاهی', + language: 'ps', + pageIdentifierOverride: 'pashto.bbc_pashto_radio.w3ct0lz1.page', + pageTitleOverride: 'ماښامنۍ خپرونه', }, type: 'mediaOverrides', }; @@ -633,7 +648,7 @@ describe('OnDemand Radio Page ', () => { await renderPage({ // @ts-expect-error partial data required for testing purposes pageData, - service: 'persian', + service: 'pashto', }); const mediaLoaderProps = mediaLoaderSpy.mock.calls[0][0]; From 0c3096f1e0d2552db63a7d35696081d2e0b9c62b Mon Sep 17 00:00:00 2001 From: chrish01 Date: Thu, 26 Sep 2024 12:43:55 +0100 Subject: [PATCH 20/49] add serviceId overrides --- .../pages/OnDemandAudioPage/OnDemandAudioPage.tsx | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/app/pages/OnDemandAudioPage/OnDemandAudioPage.tsx b/src/app/pages/OnDemandAudioPage/OnDemandAudioPage.tsx index 59abab001ee..180ecc4465c 100644 --- a/src/app/pages/OnDemandAudioPage/OnDemandAudioPage.tsx +++ b/src/app/pages/OnDemandAudioPage/OnDemandAudioPage.tsx @@ -154,9 +154,18 @@ const OnDemandAudioPage = ({ } : {}; + const getServiceId = (service: string) => { + const serviceOverrides: { [key: string]: string } = { + indonesia: 'bbc_indonesian_radio', + persian: 'bbc_dari_radio', + }; + + return serviceOverrides[service] || `bbc_${service}_radio`; + }; + const pageIdentifierOverride = isPodcast - ? `${service}.bbc_${service}_radio.podcasts.${episodeId}.page` - : `${service}.bbc_${service}_radio.${episodeId}.page`; + ? `${service}.${getServiceId(service)}.podcasts.${episodeId}.page` + : `${service}.${getServiceId(service)}.${episodeId}.page`; const mediaOverrides: MediaOverrides = { model: { From 3f8a17ed88c9b94724bfa44afb2c841565f69798 Mon Sep 17 00:00:00 2001 From: chrish01 Date: Thu, 26 Sep 2024 12:44:10 +0100 Subject: [PATCH 21/49] delete un needed test --- .../pages/OnDemandAudioPage/index.test.tsx | 34 ------------------- 1 file changed, 34 deletions(-) diff --git a/src/app/pages/OnDemandAudioPage/index.test.tsx b/src/app/pages/OnDemandAudioPage/index.test.tsx index c4d0fad4b3f..fabb0b8ddbe 100644 --- a/src/app/pages/OnDemandAudioPage/index.test.tsx +++ b/src/app/pages/OnDemandAudioPage/index.test.tsx @@ -527,40 +527,6 @@ describe('OnDemand Radio Page ', () => { expect(blocks).toEqual(expect.arrayContaining([expectedMediaOverrides])); }); - it('should use the derived page identifier to render the audio player for Bengali Brand', async () => { - const mediaLoaderSpy = jest.spyOn(MediaLoader, 'default'); - - fetchMock.mockResponse(JSON.stringify(bengaliBrandPageData)); - // @ts-expect-error partial data required for testing purposes - const { pageData } = await getInitialData({ - path: 'some-ondemand-radio-path', - pageType: MEDIA_PAGE, - toggles, - }); - - const expectedMediaOverrides = { - model: { - language: 'bn', - pageIdentifierOverride: - 'bengali.bbc_bangla_radio.w172yylmc0c11jh.page', - pageTitleOverride: 'প্রবাহ', - }, - type: 'mediaOverrides', - }; - - await renderPage({ - // @ts-expect-error partial data required for testing purposes - pageData, - service: 'bengali', - }); - - const mediaLoaderProps = mediaLoaderSpy.mock.calls[0][0]; - const { blocks } = mediaLoaderProps; - - expect(mediaLoaderSpy).toHaveBeenCalled(); - expect(blocks).toEqual(expect.arrayContaining([expectedMediaOverrides])); - }); - it('should use the derived page identifier to render the audio player for Indonesian Brand', async () => { const mediaLoaderSpy = jest.spyOn(MediaLoader, 'default'); From 7c58aba89d462c6ca0dab3783b7ecad04d15c1b7 Mon Sep 17 00:00:00 2001 From: Nabeel Khan Date: Thu, 26 Sep 2024 13:36:17 +0100 Subject: [PATCH 22/49] passed unit tests --- .../pages/OnDemandAudioPage/OnDemandAudioPage.tsx | 14 +++++++------- src/app/pages/OnDemandAudioPage/index.test.tsx | 1 - 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/app/pages/OnDemandAudioPage/OnDemandAudioPage.tsx b/src/app/pages/OnDemandAudioPage/OnDemandAudioPage.tsx index 180ecc4465c..bbedb838d4a 100644 --- a/src/app/pages/OnDemandAudioPage/OnDemandAudioPage.tsx +++ b/src/app/pages/OnDemandAudioPage/OnDemandAudioPage.tsx @@ -154,15 +154,15 @@ const OnDemandAudioPage = ({ } : {}; - const getServiceId = (service: string) => { - const serviceOverrides: { [key: string]: string } = { - indonesia: 'bbc_indonesian_radio', - persian: 'bbc_dari_radio', + const getServiceId = (service: string) => { + const serviceOverrides: { [key: string]: string } = { + indonesia: 'bbc_indonesian_radio', + persian: isPodcast ? 'bbc_persian_radio' : "bbc_dari_radio" + }; + + return serviceOverrides[service] || `bbc_${service}_radio`; }; - return serviceOverrides[service] || `bbc_${service}_radio`; - }; - const pageIdentifierOverride = isPodcast ? `${service}.${getServiceId(service)}.podcasts.${episodeId}.page` : `${service}.${getServiceId(service)}.${episodeId}.page`; diff --git a/src/app/pages/OnDemandAudioPage/index.test.tsx b/src/app/pages/OnDemandAudioPage/index.test.tsx index fabb0b8ddbe..f643d75ee48 100644 --- a/src/app/pages/OnDemandAudioPage/index.test.tsx +++ b/src/app/pages/OnDemandAudioPage/index.test.tsx @@ -9,7 +9,6 @@ import indonesiaPageData from '#data/indonesia/bbc_indonesian_radio/w172xh267fpn import afaanoromooPageData from '#data/afaanoromoo/bbc_afaanoromoo_radio/w13xttnw.json'; import arabicPodcastPageData from '#data/arabic/podcasts/p02pc9qc/p08wtg4d.json'; import persianPodcastBrandPageData from '#data/persian/bbc_persian_radio/p02pc9wf.json'; -import bengaliBrandPageData from '#data/bengali/bbc_bangla_radio/p030vjwg.json'; import indonesianBrandPageData from '#data/indonesia/bbc_indonesian_radio/w13xtt0s.json'; import persianDariEpisodePageData from '#data/persian/bbc_dari_radio/p0340v11.json'; import * as analyticsUtils from '#lib/analyticsUtils'; From 4bf7ee123201dbffc18c11e097a79d79da2e0219 Mon Sep 17 00:00:00 2001 From: Nabeel Khan Date: Thu, 26 Sep 2024 14:23:16 +0100 Subject: [PATCH 23/49] updates snapshots --- .../__snapshots__/index.test.tsx.snap | 155 ++---------------- 1 file changed, 13 insertions(+), 142 deletions(-) diff --git a/src/app/pages/OnDemandAudioPage/__snapshots__/index.test.tsx.snap b/src/app/pages/OnDemandAudioPage/__snapshots__/index.test.tsx.snap index 1bd93c83243..04314222b1e 100644 --- a/src/app/pages/OnDemandAudioPage/__snapshots__/index.test.tsx.snap +++ b/src/app/pages/OnDemandAudioPage/__snapshots__/index.test.tsx.snap @@ -1,15 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`OnDemand Radio Page should match snapshot 1`] = ` -@keyframes animation-0 { - to { - -webkit-transform: rotate(360deg); - -moz-transform: rotate(360deg); - -ms-transform: rotate(360deg); - transform: rotate(360deg); - } -} - .emotion-1 { width: 100%; } @@ -701,87 +692,14 @@ exports[`OnDemand Radio Page should match snapshot 1`] = ` } .emotion-29 { - position: relative; -} - -.emotion-31 { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.no-js .emotion-31 { - display: none; -} - -.emotion-33 { - width: 64px; - height: 64px; - stroke: currentColor; - will-change: transform; -} - -@media screen and (-ms-high-contrast: active) { - .emotion-33 { - stroke: windowText; - } -} - -@media (prefers-reduced-motion: no-preference) { - .emotion-33 { - -webkit-animation: animation-0 1.1s 3 linear; - animation: animation-0 1.1s 3 linear; - } -} - -.emotion-36 amp-iframe, -.emotion-36 div>iframe { - width: calc(100% + 1rem); - margin: 0 -0.5rem; -} - -@media (min-width: 25rem) { - .emotion-36 amp-iframe, - .emotion-36 div>iframe { - width: calc(100% + 2rem); - margin: 0 -1rem; - } -} - -.emotion-38 { - height: 165px; - position: relative; - margin-bottom: 1rem; -} - -@media (min-width: 63rem) { - .emotion-38 { - margin-bottom: 2rem; - } + margin: 0; + padding-bottom: 1.5rem; + width: 100%; } -.emotion-40 { - border: 0; - left: 0; - overflow: hidden; - position: absolute; - top: 0; - width: 100%; - height: 100%; +.emotion-30 { + background-color: #000000; + aspect-ratio: 16/9; }
@@ -865,62 +783,15 @@ exports[`OnDemand Radio Page should match snapshot 1`] = `
-
-
-
-