diff --git a/sites/france.tv/__data__/content.json b/sites/france.tv/__data__/content.json index 7b429d862..c6fa90963 100644 --- a/sites/france.tv/__data__/content.json +++ b/sites/france.tv/__data__/content.json @@ -1,1028 +1,1028 @@ -[ - { - "ariaLabel": "Le 6h info . Émission du jeudi 19 février 2026 . Vidéo . 30 minutes", - "content": { - "description": "Un rendez-vous réveil-matin, avec un point sur l'actualité assorti de différentes rubriques qui permettent d'en explorer certains aspects plus en profondeur.", - "id": 8156589, - "label": null, - "url": "", - "thumbnail": { - "x1": "https://medias.france.tv/S9p5NdAs4OR2UbyC1NIQWsYV-K4/240x0/filters:quality(85):format(webp)/b/f/3/e85c2e8fed4a4955965dfff63c3843fb.jpg", - "x2": "https://medias.france.tv/BtQR9kmC4LN0RPWr9WbXfDlap5o/400x0/filters:quality(85):format(webp)/b/f/3/e85c2e8fed4a4955965dfff63c3843fb.jpg" - }, - "broadcastBeginDate": "06h00", - "captionLeading": "À regarder", - "caption": null, - "category": { - "id": "info", - "label": "Info" - }, - "channel": "francetv", - "csa": "TP", - "cta": "Regarder", - "duration": "30 min", - "icons": [], - "live": false, - "progress": null, - "title": "Émission du jeudi 19 février 2026", - "titleLeading": "Le 6h info", - "type": "video" - }, - "options": { - - }, - "tracking": { - "channel": "france_2", - "channel_type": "premium", - "category": "info", - "sub_category": "jt", - "content_type": "video", - "content_title": "emission_du_jeudi_19_fevrier_2026", - "content_format": "integrale", - "program": "le_6h_info", - "program_id": "2367", - "content_id": 8156589, - "content_sponsored": false, - "content_logged": true, - "content_diffusion_date": "19022026", - "content_status": "replay", - "video_factory_id": "c91a950b-7f1b-42b5-b513-0b470336d1d6" - }, - "variant": "horizontal" - }, - { - "ariaLabel": "Télématin . Émission du jeudi 19 février 2026 . Vidéo . 1 heure 30 minutes", - "content": { - "description": "De l'info et de la bonne humeur, sept jours sur sept : résolument dans l'air du temps, la première matinale de France, forte de sa richesse éditoriale et de sa dynamique d'équipe, aborde de nombreuses thématiques et traite l'actualité avec sérieux et sans dramatisation.", - "id": 8156586, - "label": null, - "url": "", - "thumbnail": { - "x1": "https://medias.france.tv/7_elf6zKoS8sOO941AMMeLWcrME/240x0/filters:quality(85):format(webp)/3/3/c/afbdb3622c034f01bafb6108e0287c33.jpg", - "x2": "https://medias.france.tv/JT03SrO-4rnPiZXPjTPSswlJ4BA/400x0/filters:quality(85):format(webp)/3/3/c/afbdb3622c034f01bafb6108e0287c33.jpg" - }, - "broadcastBeginDate": "06h30", - "captionLeading": "À regarder", - "caption": null, - "category": { - "id": "society", - "label": "Société" - }, - "channel": "francetv", - "csa": "TP", - "cta": "Regarder", - "duration": "1 h 30 min", - "icons": [], - "live": false, - "progress": null, - "title": "Émission du jeudi 19 février 2026", - "titleLeading": "Télématin", - "type": "video" - }, - "options": { - - }, - "tracking": { - "channel": "france_2", - "channel_type": "premium", - "category": "societe|info", - "sub_category": "magazines_d_actualite|decryptage_et_investigation", - "content_type": "video", - "content_title": "emission_du_jeudi_19_fevrier_2026", - "content_format": "integrale", - "program": "telematin", - "program_id": "1283", - "content_id": 8156586, - "content_sponsored": false, - "content_logged": true, - "content_diffusion_date": "19022026", - "content_status": "replay", - "video_factory_id": "3cfb78f4-adf0-4100-90be-b337bf062221" - }, - "variant": "horizontal" - }, - { - "ariaLabel": "Journal 08h00 . Édition du jeudi 19 février 2026 . Vidéo . 30 minutes", - "content": { - "description": "Pour bien démarrer la journée, la rédaction de France 2 propose un point sur l'actualité. Les principales informations nationales et internationales sont passées en revue.", - "id": 8156580, - "label": null, - "url": "", - "thumbnail": { - "x1": "https://medias.france.tv/MlJ0nPDHlk_tINBwGmaxbErv2-s/240x0/filters:quality(85):format(webp)/1/4/9/d0bc530cab624e5d9ba963b37da79941.jpg", - "x2": "https://medias.france.tv/hmo4z4xkDGNX2RDcFgcnSNnRI4E/400x0/filters:quality(85):format(webp)/1/4/9/d0bc530cab624e5d9ba963b37da79941.jpg" - }, - "broadcastBeginDate": "08h00", - "captionLeading": "À regarder", - "caption": null, - "category": { - "id": "info", - "label": "Info" - }, - "channel": "francetv", - "csa": "TP", - "cta": "Regarder", - "duration": "30 min", - "icons": [], - "live": false, - "progress": null, - "title": "Édition du jeudi 19 février 2026", - "titleLeading": "Journal 08h00", - "type": "video" - }, - "options": { - - }, - "tracking": { - "channel": "france_2", - "channel_type": "premium", - "category": "info", - "sub_category": "jt", - "content_type": "video", - "content_title": "edition_du_jeudi_19_fevrier_2026", - "content_format": "integrale", - "program": "journal_08h00", - "program_id": "2375", - "content_id": 8156580, - "content_sponsored": false, - "content_logged": true, - "content_diffusion_date": "19022026", - "content_status": "replay", - "video_factory_id": "bfc04ab3-521b-4810-b6fa-cbc77537e28b" - }, - "variant": "horizontal" - }, - { - "ariaLabel": "Télématin . Émission du jeudi 19 février 2026 . Vidéo . 1 heure 15 minutes", - "content": { - "description": "De l'info et de la bonne humeur, sept jours sur sept : résolument dans l'air du temps, la première matinale de France, forte de sa richesse éditoriale et de sa dynamique d'équipe, aborde de nombreuses thématiques et traite l'actualité avec sérieux et sans dramatisation.", - "id": 8156583, - "label": null, - "url": "", - "thumbnail": { - "x1": "https://medias.france.tv/GUI0YHtwVu1IqS9r_RVelgSzuIw/240x0/filters:quality(85):format(webp)/a/5/7/26046e577f7e4f60abf17a273e18e75a.jpg", - "x2": "https://medias.france.tv/JfV-adXMQ4TQ16RpTlA9J35BcHI/400x0/filters:quality(85):format(webp)/a/5/7/26046e577f7e4f60abf17a273e18e75a.jpg" - }, - "broadcastBeginDate": "08h30", - "captionLeading": "À regarder", - "caption": null, - "category": { - "id": "society", - "label": "Société" - }, - "channel": "francetv", - "csa": "TP", - "cta": "Regarder", - "duration": "1 h 15 min", - "icons": [], - "live": false, - "progress": null, - "title": "Émission du jeudi 19 février 2026", - "titleLeading": "Télématin", - "type": "video" - }, - "options": { - - }, - "tracking": { - "channel": "france_2", - "channel_type": "premium", - "category": "societe|info", - "sub_category": "magazines_d_actualite|decryptage_et_investigation", - "content_type": "video", - "content_title": "emission_du_jeudi_19_fevrier_2026", - "content_format": "integrale", - "program": "telematin", - "program_id": "1283", - "content_id": 8156583, - "content_sponsored": false, - "content_logged": true, - "content_diffusion_date": "19022026", - "content_status": "indisponible", - "video_factory_id": "50eec72e-9920-4850-b70b-7e37ad6e3e1f" - }, - "variant": "horizontal" - }, - { - "ariaLabel": "Jeux Olympiques d'hiver . Ski alpinisme (F et H) / Ski acrobatique (H) . Vidéo . 3 heures 15 minutes", - "content": { - "description": "Le ski-alpinisme fait son entrée aux Jeux olympiques à Cortina. Une première historique pour la discipline. Parmi les prétendants aux médailles en sprint, on retrouve le Belge Maximilien Drion. En combiné nordique, épreuve de saut à ski par équipes programmée à 10h. En ski acrobatique, les qualifications du halfpipe messieurs débutent à 10h30 av...", - "id": 8156574, - "label": null, - "url": "/sport/les-jeux-olympiques-d-hiver/8156574-ski-alpinisme-f-et-h-ski-acrobatique-h.html", - "thumbnail": { - "x1": "https://medias.france.tv/M05d1Kto1XuK7A267TrnR7nUSeg/240x0/filters:quality(85):format(webp)/k/m/x/phpflhxmk.jpg", - "x2": "https://medias.france.tv/y_EMxE-FWAyrMKm888jH-LJTLqo/400x0/filters:quality(85):format(webp)/k/m/x/phpflhxmk.jpg" - }, - "broadcastBeginDate": "09h45", - "captionLeading": "À regarder", - "caption": null, - "category": { - "id": "sport", - "label": "Sport" - }, - "channel": "francetv", - "csa": "TP", - "cta": "Regarder", - "duration": "3 h 15 min", - "icons": [], - "live": false, - "progress": null, - "title": "Ski alpinisme (F et H) / Ski acrobatique (H)", - "titleLeading": "Jeux Olympiques d'hiver", - "type": "video" - }, - "options": { - - }, - "tracking": { - "channel": "france_2", - "channel_type": "premium", - "category": "sport", - "content_type": "video", - "content_title": "ski_alpinisme_f_et_h_ski_acrobatique_h", - "content_format": "integrale", - "highlight": "jeux_olympiques_d_hiver", - "content_id": 8156574, - "content_sponsored": false, - "content_logged": true, - "content_diffusion_date": "19022026", - "content_status": "replay", - "video_factory_id": "6331b70c-f8cd-47fa-974e-28680033db17" - }, - "variant": "horizontal" - }, - { - "ariaLabel": "Journal 13h00 . Édition du jeudi 19 février 2026 . Vidéo . 40 minutes", - "content": { - "description": "Tous les jours, à 13h, la rédaction propose un point sur l'actualité. Les informations nationales et internationales sont passées à la loupe et mises en perspective, illustrées par des reportages sur le terrain.", - "id": 8156577, - "label": null, - "url": "", - "thumbnail": { - "x1": "https://medias.france.tv/vzdnS4Qvj1-DXIFs0Dhfmaxa-gs/240x0/filters:quality(85):format(webp)/1/9/8/369a7d7cdfc94d28becb9becfa454891.jpg", - "x2": "https://medias.france.tv/Ual5fsCcuJJ4n--WWVnrpSNqZMM/400x0/filters:quality(85):format(webp)/1/9/8/369a7d7cdfc94d28becb9becfa454891.jpg" - }, - "broadcastBeginDate": "13h00", - "captionLeading": "À regarder", - "caption": null, - "category": { - "id": "info", - "label": "Info" - }, - "channel": "francetv", - "csa": "TP", - "cta": "Regarder", - "duration": "40 min", - "icons": [], - "live": false, - "progress": null, - "title": "Édition du jeudi 19 février 2026", - "titleLeading": "Journal 13h00", - "type": "video" - }, - "options": { - - }, - "tracking": { - "channel": "france_2", - "channel_type": "premium", - "region": "saint_pierre_et_miquelon", - "category": "info", - "sub_category": "jt", - "content_type": "video", - "content_title": "edition_du_jeudi_19_fevrier_2026", - "content_format": "integrale", - "program": "journal_13h00", - "program_id": "2379", - "content_id": 8156577, - "content_sponsored": false, - "content_logged": true, - "content_diffusion_date": "19022026", - "content_status": "replay", - "video_factory_id": "866477d7-9978-49fc-92db-95c51a84c299" - }, - "variant": "horizontal" - }, - { - "ariaLabel": "Journal Météo Climat . Journal Météo climat . Vidéo . 5 minutes", - "content": { - "description": "Un point quotidien sur l'actualité météo et climatique, avec des reportages et des interviews d'experts.", - "id": 8156568, - "label": null, - "url": "", - "thumbnail": { - "x1": "https://medias.france.tv/GSxVDxWPpAXGdCYqe7rENQlUZLU/240x0/filters:quality(85):format(webp)/3/6/6/54adec73339a408d820cac0508c70663.jpg", - "x2": "https://medias.france.tv/lHI572NFvhaysIytuGQ7CIk5iPE/400x0/filters:quality(85):format(webp)/3/6/6/54adec73339a408d820cac0508c70663.jpg" - }, - "broadcastBeginDate": "13h40", - "captionLeading": "À regarder", - "caption": null, - "category": { - "id": "info", - "label": "Info" - }, - "channel": "francetv", - "csa": "TP", - "cta": "Regarder", - "duration": "5 min", - "icons": [], - "live": false, - "progress": null, - "title": "Journal Météo climat", - "titleLeading": "Journal Météo Climat", - "type": "video" - }, - "options": { - - }, - "tracking": { - "channel": "france_2", - "channel_type": "premium", - "category": "info", - "sub_category": "meteo", - "content_type": "video", - "content_title": "journal_meteo_climat", - "content_format": "integrale", - "program": "journal_meteo_climat", - "program_id": "42535", - "content_id": 8156568, - "content_sponsored": false, - "content_logged": true, - "content_diffusion_date": "19022026", - "content_status": "replay", - "video_factory_id": "d14523e7-f77e-42b9-84dc-49dd67fdd722" - }, - "variant": "horizontal" - }, - { - "ariaLabel": "Consomag . Produit reconditionné : en cas de problème, est-il garanti ? . Vidéo . 15 minutes", - "content": { - "description": "Le magazine de l'Institut national de la consommation donne à chacun des conseils pratiques pour mieux consommer, toutes les thématiques peuvent être abordées autour de nos achats.", - "id": 8156571, - "label": null, - "url": "", - "thumbnail": { - "x1": "https://medias.france.tv/4k1alPn1hkw6THco_lLFzUbyFT8/240x0/filters:quality(85):format(webp)/b/9/e/bd4ea8919ee3496fb021888fe18bfe9b.jpg", - "x2": "https://medias.france.tv/DxwPp0tiKk_PE3gf6QJgSYHQ6uI/400x0/filters:quality(85):format(webp)/b/9/e/bd4ea8919ee3496fb021888fe18bfe9b.jpg" - }, - "broadcastBeginDate": "13h45", - "captionLeading": "À regarder", - "caption": null, - "category": { - "id": "society", - "label": "Société" - }, - "channel": "francetv", - "csa": "TP", - "cta": "Regarder", - "duration": "15 min", - "icons": [], - "live": false, - "progress": null, - "title": "Produit reconditionné : en cas de problème, est-il garanti ?", - "titleLeading": "Consomag", - "type": "video" - }, - "options": { - - }, - "tracking": { - "channel": "france_2", - "channel_type": "premium", - "category": "societe|info", - "sub_category": "magazines_d_actualite|decryptage_et_investigation", - "content_type": "video", - "content_title": "produit_reconditionne_en_cas_de_probleme_est_il_garanti", - "content_format": "integrale", - "program": "consomag", - "program_id": "1615", - "content_id": 8156571, - "content_sponsored": false, - "content_logged": true, - "content_diffusion_date": "19022026", - "content_status": "replay", - "video_factory_id": "39629384-910f-4f8c-9d51-00436d5187cb" - }, - "variant": "horizontal" - }, - { - "ariaLabel": "Jeux Olympiques d'hiver . Ski alpinisme (F et H) / Hockey sur glace (F) . Vidéo . 23 minutes", - "content": { - "description": "Qui seront sacrés premier et première championne olympique de ski-alpinisme, à l'issue des finales de sprint qui débutent à 14h ? En combiné nordique, le titre par équipes messieurs est décerné à l'issue de l'épreuve de ski de fond, sprint 2x7,5 km, qui débute également à 14h. Les Norvégiens sont les tenants du titre, devant l'Allemagne et le Ja...", - "id": 8156565, - "label": null, - "url": "/sport/les-jeux-olympiques-d-hiver/8156565-ski-alpinisme-f-et-h-hockey-sur-glace-f.html", - "thumbnail": { - "x1": "https://medias.france.tv/Ud3CeWLgMHiwNQvtd4NEF_OWZVE/240x0/filters:quality(85):format(webp)/v/v/y/phpqdyyvv.jpg", - "x2": "https://medias.france.tv/qp-j3cKMmq5meo6V94hyOOcAlB4/400x0/filters:quality(85):format(webp)/v/v/y/phpqdyyvv.jpg" - }, - "broadcastBeginDate": "14h00", - "captionLeading": "À regarder", - "caption": null, - "category": { - "id": "sport", - "label": "Sport" - }, - "channel": "francetv", - "csa": "TP", - "cta": "Regarder", - "duration": "23 min", - "icons": [], - "live": false, - "progress": null, - "title": "Ski alpinisme (F et H) / Hockey sur glace (F)", - "titleLeading": "Jeux Olympiques d'hiver", - "type": "video" - }, - "options": { - - }, - "tracking": { - "channel": "france_2", - "channel_type": "premium", - "region": "wallis_et_futuna_|guadeloupe|nouvelle_caledonie|saint_pierre_et_miquelon", - "category": "sport", - "content_type": "video", - "content_title": "ski_alpinisme_f_et_h_hockey_sur_glace_f", - "content_format": "integrale", - "highlight": "jeux_olympiques_d_hiver", - "content_id": 8156565, - "content_sponsored": false, - "content_logged": true, - "content_diffusion_date": "19022026", - "content_status": "replay", - "video_factory_id": "644c18b3-4760-426f-9faa-ecaed8dc22e8" - }, - "variant": "horizontal" - }, - { - "ariaLabel": "Jeux Olympiques d'hiver . Patinage de vitesse (H) / Hockey sur glace (F) . Vidéo . 3 heures 25 minutes", - "content": { - "description": "En patinage de vitesse, l'épreuve du 1500 m messieurs débute à 16h30. L'Américain Jordan Stolz est favori, avec l'Allemand Finn Sonnekalb, le Néerlandais Kjeld Nuis et le Chinois Ning Zhongyan. La finale dames de hockey sur glace se joue à 19h10 à la Milano Santagiulia Ice Hockey Arena. Qui succédera au palmarès aux Canadiennes, victorieuses des...", - "id": 8156562, - "label": null, - "url": "/sport/les-jeux-olympiques-d-hiver/8156562-patinage-de-vitesse-h-hockey-sur-glace-f.html", - "thumbnail": { - "x1": "https://medias.france.tv/ZU0UG9N0Bu-LZvlCdkcR9_S33RU/240x0/filters:quality(85):format(webp)/o/s/1/phpxya1so.jpg", - "x2": "https://medias.france.tv/ULjmo-nhuZa89e0CjOqQtbOHQ3s/400x0/filters:quality(85):format(webp)/o/s/1/phpxya1so.jpg" - }, - "broadcastBeginDate": "16h30", - "captionLeading": "À regarder", - "caption": null, - "category": { - "id": "sport", - "label": "Sport" - }, - "channel": "francetv", - "csa": "TP", - "cta": "Regarder", - "duration": "3 h 25 min", - "icons": [], - "live": false, - "progress": null, - "title": "Patinage de vitesse (H) / Hockey sur glace (F)", - "titleLeading": "Jeux Olympiques d'hiver", - "type": "video" - }, - "options": { - - }, - "tracking": { - "channel": "france_2", - "channel_type": "premium", - "category": "sport", - "content_type": "video", - "content_title": "patinage_de_vitesse_h_hockey_sur_glace_f", - "content_format": "integrale", - "highlight": "jeux_olympiques_d_hiver", - "content_id": 8156562, - "content_sponsored": false, - "content_logged": true, - "content_diffusion_date": "19022026", - "content_status": "replay", - "video_factory_id": "d3cf848f-017c-4c5d-afa1-d1f38f4027b7" - }, - "variant": "horizontal" - }, - { - "ariaLabel": "Journal 20h00 . Édition du jeudi 19 février 2026 . Vidéo . 55 minutes", - "content": { - "description": "Les principales informations nationales et internationales sont passées à la loupe et mises en perspective, illustrées par des reportages sur le terrain.", - "id": 8156559, - "label": null, - "url": "", - "thumbnail": { - "x1": "https://medias.france.tv/BTfZ2idtnBxvhxHkDXSo8_Av_WE/240x0/filters:quality(85):format(webp)/a/8/7/125078f88e4c49c888d8bae6b19f978a.jpg", - "x2": "https://medias.france.tv/8nx8oqOWXShe0_iXZ28D7a9oSrA/400x0/filters:quality(85):format(webp)/a/8/7/125078f88e4c49c888d8bae6b19f978a.jpg" - }, - "broadcastBeginDate": "19h55", - "captionLeading": "À regarder", - "caption": null, - "category": { - "id": "info", - "label": "Info" - }, - "channel": "francetv", - "csa": "TP", - "cta": "Regarder", - "duration": "55 min", - "icons": [], - "live": false, - "progress": null, - "title": "Édition du jeudi 19 février 2026", - "titleLeading": "Journal 20h00", - "type": "video" - }, - "options": { - - }, - "tracking": { - "channel": "france_2", - "channel_type": "premium", - "category": "info", - "sub_category": "jt", - "content_type": "video", - "content_title": "edition_du_jeudi_19_fevrier_2026", - "content_format": "integrale", - "program": "journal_20h00", - "program_id": "2383", - "content_id": 8156559, - "content_sponsored": false, - "content_logged": true, - "content_diffusion_date": "19022026", - "content_status": "replay", - "video_factory_id": "ca0297ec-9059-4d69-8ea4-c8f950624c99" - }, - "variant": "horizontal" - }, - { - "ariaLabel": "Journal Météo Climat . Journal Météo climat . Vidéo . 1 minute", - "content": { - "description": "Un point quotidien sur l'actualité météo et climatique, avec des reportages et des interviews d'experts.", - "id": 8156556, - "label": null, - "url": "", - "thumbnail": { - "x1": "https://medias.france.tv/ZmsDXtZWuKlozYx5MS4QbsHgcAs/240x0/filters:quality(85):format(webp)/e/0/d/0faaeaa70a854e02a6fe1fde2d267d0e.jpg", - "x2": "https://medias.france.tv/CQlKJceC4-y2L-KWmcwJ8eX_T2g/400x0/filters:quality(85):format(webp)/e/0/d/0faaeaa70a854e02a6fe1fde2d267d0e.jpg" - }, - "broadcastBeginDate": "20h50", - "captionLeading": "À regarder", - "caption": null, - "category": { - "id": "info", - "label": "Info" - }, - "channel": "francetv", - "csa": "TP", - "cta": "Regarder", - "duration": "1 min", - "icons": [], - "live": false, - "progress": null, - "title": "Journal Météo climat", - "titleLeading": "Journal Météo Climat", - "type": "video" - }, - "options": { - - }, - "tracking": { - "channel": "france_2", - "channel_type": "premium", - "category": "info", - "sub_category": "meteo", - "content_type": "video", - "content_title": "journal_meteo_climat", - "content_format": "integrale", - "program": "journal_meteo_climat", - "program_id": "42535", - "content_id": 8156556, - "content_sponsored": false, - "content_logged": true, - "content_diffusion_date": "19022026", - "content_status": "replay", - "video_factory_id": "fcf39789-8d42-4710-b8da-0c6f87a873b3" - }, - "variant": "horizontal" - }, - { - "ariaLabel": "Epopées en bleu . Vidéo . 4 minutes", - "content": { - "description": "Gros plan en images sur les principaux événements sportifs du jour.", - "id": 8165610, - "label": null, - "url": "", - "thumbnail": { - "x1": "https://medias.france.tv/HMLOxc6ONp6Ol5iZjoXWtC6qx-g/240x0/filters:quality(85):format(webp)/c/1/8/2303b6f77cc941a49ed8c63e3fc8b81c.jpg", - "x2": "https://medias.france.tv/N3tuxwoofZZMwGYJPgq9nbjaxJ8/400x0/filters:quality(85):format(webp)/c/1/8/2303b6f77cc941a49ed8c63e3fc8b81c.jpg" - }, - "broadcastBeginDate": "20h51", - "captionLeading": "À regarder", - "caption": null, - "category": { - "id": "info", - "label": "Info" - }, - "channel": "francetv", - "csa": "TP", - "cta": "Regarder", - "duration": "4 min", - "icons": [], - "live": false, - "progress": null, - "title": "Epopées en bleu", - "titleLeading": null, - "type": "video" - }, - "options": { - - }, - "tracking": { - "channel": "france_2", - "channel_type": "premium", - "region": "nouvelle_caledonie|mayotte", - "category": "info", - "content_type": "video", - "content_title": "epopees_en_bleu", - "content_format": "integrale", - "program": "image_du_jour_sports", - "program_id": "91005", - "content_id": 8165610, - "content_sponsored": false, - "content_logged": true, - "content_diffusion_date": "19022026", - "content_status": "replay", - "video_factory_id": "b6181e31-30b1-4499-8702-f3d1e0676600" - }, - "variant": "horizontal" - }, - { - "ariaLabel": "Jeux olympiques de Milan-Cortina 2026 . Vidéo . 1 minute", - "content": { - "description": "Gros plan en images sur les principaux événements sportifs du jour.", - "id": 8156550, - "label": null, - "url": "", - "thumbnail": { - "x1": "https://medias.france.tv/MwHIVCE1cXHBTXiWmx0oq2BcA7E/240x0/filters:quality(85):format(webp)/0/2/e/08f11d7d474145fdafa268d852bbde20.jpg", - "x2": "https://medias.france.tv/ylQN0h84Sd_aWuBCdkD1B9eqQAI/400x0/filters:quality(85):format(webp)/0/2/e/08f11d7d474145fdafa268d852bbde20.jpg" - }, - "broadcastBeginDate": "20h55", - "captionLeading": "À regarder", - "caption": null, - "category": { - "id": "info", - "label": "Info" - }, - "channel": "francetv", - "csa": "TP", - "cta": "Regarder", - "duration": "1 min", - "icons": [], - "live": false, - "progress": null, - "title": "Jeux olympiques de Milan-Cortina 2026", - "titleLeading": null, - "type": "video" - }, - "options": { - - }, - "tracking": { - "channel": "france_2", - "channel_type": "premium", - "region": "nouvelle_caledonie|reunion", - "category": "info", - "content_type": "video", - "content_title": "jeux_olympiques_de_milan_cortina_2026", - "content_format": "integrale", - "program": "image_du_jour_sports", - "program_id": "91005", - "content_id": 8156550, - "content_sponsored": false, - "content_logged": true, - "content_diffusion_date": "19022026", - "content_status": "replay", - "video_factory_id": "4e3b3f90-4f82-4e08-82b4-9d5b2c1d39af" - }, - "variant": "horizontal" - }, - { - "ariaLabel": "Basique, l'essentiel de la musique . Yael Naim . Vidéo . 9 minutes", - "content": { - "description": "Une pastille consacrée à l'actualité musicale, qui braque les projecteurs sur un ou une artiste.", - "id": 8156553, - "label": null, - "url": "/france-2/basique-l-essentiel-de-la-musique/8156553-yael-naim.html", - "thumbnail": { - "x1": "https://medias.france.tv/9yTg8BrHoQq0NvbZOeXaCF3fJzM/240x0/filters:quality(85):format(webp)/e/j/w/phpnwywje.png", - "x2": "https://medias.france.tv/7kRvH3_djLDqKEqqaXjMWkYOwnI/400x0/filters:quality(85):format(webp)/e/j/w/phpnwywje.png" - }, - "broadcastBeginDate": "20h56", - "captionLeading": "À regarder", - "caption": null, - "category": { - "id": "artShow", - "label": "Arts & spectacles" - }, - "channel": "francetv", - "csa": "TP", - "cta": "Regarder", - "duration": "9 min", - "icons": [], - "live": false, - "progress": null, - "title": "Yael Naim", - "titleLeading": "Basique, l'essentiel de la musique", - "type": "video" - }, - "options": { - - }, - "tracking": { - "channel": "france_2", - "channel_type": "premium", - "category": "arts_et_spectacles|divertissement", - "sub_category": "emissions_culturelles|emissions_de_divertissement", - "content_type": "video", - "content_title": "yael_naim", - "content_format": "integrale", - "program": "basique_l_essentiel_de_la_musique", - "program_id": "7025", - "content_id": 8156553, - "content_sponsored": false, - "content_logged": true, - "content_diffusion_date": "19022026", - "content_status": "replay", - "video_factory_id": "330681fa-b116-4d09-b61c-856442605f47" - }, - "variant": "horizontal" - }, - { - "ariaLabel": "Mot de passe : le duel . Émission du jeudi 8 janvier 2026 . Vidéo . 8 minutes 5 secondes . Sous-titré", - "content": { - "description": "Mot de passe - Le Duel est un jeu qui consiste à faire deviner des mots à un partenaire de jeu en donnant des mots indices. Il se joue avec deux candidats face à deux célébrités. Du lundi au jeudi, ce sont les Duels et la Finale se joue en fin de semaine, le vendredi, avec le meilleur des 2 candidats et les deux célébrités.", - "id": 8026797, - "label": null, - "url": "/france-2/mot-de-passe-le-duel/8026797-emission-du-jeudi-8-janvier-2026.html", - "thumbnail": { - "x1": "https://medias.france.tv/-1RzWx9FZTBPxqXus62nk8GXdd8/240x0/filters:quality(85):format(webp)/9/7/a/7eacababdb94435b9f29a0049b8ffa79.jpg", - "x2": "https://medias.france.tv/WCHO80CN3Dlt4C05BA8zUDw2VIA/400x0/filters:quality(85):format(webp)/9/7/a/7eacababdb94435b9f29a0049b8ffa79.jpg" - }, - "broadcastBeginDate": "21h05", - "captionLeading": "À regarder", - "caption": null, - "category": { - "id": "entertainment", - "label": "Divertissement" - }, - "channel": "francetv", - "csa": "TP", - "cta": "Regarder", - "duration": "8 min 5 s", - "icons": [ - { - "id": "st" - } - ], - "live": false, - "progress": null, - "title": "Émission du jeudi 8 janvier 2026", - "titleLeading": "Mot de passe : le duel", - "type": "video" - }, - "options": { - - }, - "tracking": { - "channel": "france_2", - "channel_type": "premium", - "category": "divertissement", - "sub_category": "jeux", - "content_type": "video", - "content_title": "emission_du_jeudi_8_janvier_2026", - "content_format": "integrale", - "program": "mot_de_passe_le_duel", - "program_id": "56191", - "content_id": 8026797, - "content_sponsored": false, - "content_logged": true, - "content_diffusion_date": "19022026", - "content_status": "replay", - "video_factory_id": "adf6bf06-506b-410a-8c64-59e926ab984c" - }, - "variant": "horizontal" - }, - { - "ariaLabel": "Jeux Olympiques d'hiver . Patinage artistique (F) / Ski acrobatique (F) . Vidéo . Audio-décrit . 2 heures 33 minutes", - "content": { - "description": "La soirée débute par la fin du programme libre dames de patinage artistique. L'Américaine Alysa Liu, championne du monde 2025, est la grande favorite pour le titre olympique, remporté en 2022, à Pékin, par la Russe Anna Chtcherbakova. Ses principales adversaires seront les Japonaises Kaori Sakamoto et Mone Chiba, l'Estonienne Niina Petrokina et ...", - "id": 8156544, - "label": null, - "url": "/sport/les-jeux-olympiques-d-hiver/8156544-patinage-artistique-f-ski-acrobatique-f.html", - "thumbnail": { - "x1": "https://medias.france.tv/gMhZF8RFU9_ULzI56AAkDEUW7BQ/240x0/filters:quality(85):format(webp)/h/j/1/phpvra1jh.jpg", - "x2": "https://medias.france.tv/h9Dh0iCS-ikeAKmdAwd_nXkaTSA/400x0/filters:quality(85):format(webp)/h/j/1/phpvra1jh.jpg" - }, - "broadcastBeginDate": "21h10", - "captionLeading": "À regarder", - "caption": null, - "category": { - "id": "sport", - "label": "Sport" - }, - "channel": "francetv", - "csa": "TP", - "cta": "Regarder", - "duration": "2 h 33 min", - "icons": [ - { - "id": "ad" - } - ], - "live": false, - "progress": null, - "title": "Patinage artistique (F) / Ski acrobatique (F)", - "titleLeading": "Jeux Olympiques d'hiver", - "type": "video" - }, - "options": { - - }, - "tracking": { - "channel": "france_2", - "channel_type": "premium", - "region": "saint_pierre_et_miquelon", - "category": "sport", - "content_type": "video", - "content_title": "patinage_artistique_f_ski_acrobatique_f", - "content_format": "integrale", - "highlight": "jeux_olympiques_d_hiver", - "content_id": 8156544, - "content_sponsored": false, - "content_logged": true, - "content_diffusion_date": "19022026", - "content_status": "replay", - "video_factory_id": "8fc870a9-a5d6-43ce-b8f7-e7945f5229ff" - }, - "variant": "horizontal" - }, - { - "ariaLabel": "JO Club . Émission du jeudi 19 février 2026 . Vidéo . 1 heure", - "content": { - "description": "Tous les soirs, tout au long de ces Jeux olympiques d'hiver de Milan-Cortina, Laurent Luyat revient, avec les journalistes et consultants de France Télévisions, sur les épreuves de la journée. Il accueille les athlètes et les médaillés du jour. La journée a été marquée par du combiné nordique, avec l'épreuve par équipes messieurs, les demi-final...", - "id": 8156547, - "label": null, - "url": "", - "thumbnail": { - "x1": "https://medias.france.tv/xuxaBPNFyhMiVB5eeYrZV_1nPj4/240x0/filters:quality(85):format(webp)/v/p/h/phpmhbhpv.jpg", - "x2": "https://medias.france.tv/szcQQVOSSqC70fcjHId4PxZ-wxE/400x0/filters:quality(85):format(webp)/v/p/h/phpmhbhpv.jpg" - }, - "broadcastBeginDate": "23h00", - "captionLeading": "À regarder", - "caption": null, - "category": { - "id": "info", - "label": "Info" - }, - "channel": "francetv", - "csa": "TP", - "cta": "Regarder", - "duration": "1 h", - "icons": [], - "live": false, - "progress": null, - "title": "Émission du jeudi 19 février 2026", - "titleLeading": "JO Club", - "type": "video" - }, - "options": { - - }, - "tracking": { - "channel": "france_2", - "channel_type": "premium", - "region": "martinique|guadeloupe|guyane", - "category": "info", - "content_type": "video", - "content_title": "emission_du_jeudi_19_fevrier_2026", - "content_format": "integrale", - "program": "jo_club", - "program_id": "5603", - "content_id": 8156547, - "content_sponsored": false, - "content_logged": true, - "content_diffusion_date": "19022026", - "content_status": "replay", - "video_factory_id": "98238f1c-37a0-497f-9e3a-5f05eb17ce5c" - }, - "variant": "horizontal" - }, - { - "ariaLabel": "Jeux Olympiques d'hiver . Jeux Olympiques d'hiver : Rediffusions . Vidéo . 5 heures 50 minutes", - "content": { - "description": "Les XXVes Jeux olympiques d'hiver 2026 se déroulent en Italie, à Milan et Cortina d'Ampezzo, et célèbrent les sports d'hiver avec 16 disciplines au menu de la compétition.", - "id": 8156541, - "label": null, - "url": "", - "thumbnail": { - "x1": "https://medias.france.tv/PRXSSEG8Mi9gyQp37QHrILo0HNg/240x0/filters:quality(85):format(webp)/c/g/b/phpxnobgc.jpg", - "x2": "https://medias.france.tv/4WT0xrlA1E6GxCFWkAdtAXjsKRs/400x0/filters:quality(85):format(webp)/c/g/b/phpxnobgc.jpg" - }, - "broadcastBeginDate": "00h00", - "captionLeading": "À regarder", - "caption": null, - "category": { - "id": "sport", - "label": "Sport" - }, - "channel": "francetv", - "csa": "TP", - "cta": "Regarder", - "duration": "5 h 50 min", - "icons": [], - "live": false, - "progress": null, - "title": "Jeux Olympiques d'hiver : Rediffusions", - "titleLeading": "Jeux Olympiques d'hiver", - "type": "video" - }, - "options": { - - }, - "tracking": { - "channel": "france_2", - "channel_type": "premium", - "region": "martinique", - "category": "sport", - "content_type": "video", - "content_title": "jeux_olympiques_d_hiver_rediffusions", - "content_format": "integrale", - "highlight": "jeux_olympiques_d_hiver", - "content_id": 8156541, - "content_sponsored": false, - "content_logged": true, - "content_diffusion_date": "20022026", - "content_status": "indisponible", - "video_factory_id": "7435a412-cdf0-4eaa-8168-29f466de95ef" - }, - "variant": "horizontal" - }, - { - "ariaLabel": "Mot de passe : le duel . Émission du jeudi 8 janvier 2026 . Vidéo . 8 minutes 5 secondes . Sous-titré", - "content": { - "description": "Mot de passe - Le Duel est un jeu qui consiste à faire deviner des mots à un partenaire de jeu en donnant des mots indices. Il se joue avec deux candidats face à deux célébrités. Du lundi au jeudi, ce sont les Duels et la Finale se joue en fin de semaine, le vendredi, avec le meilleur des 2 candidats et les deux célébrités.", - "id": 8026797, - "label": null, - "url": "/france-2/mot-de-passe-le-duel/8026797-emission-du-jeudi-8-janvier-2026.html", - "thumbnail": { - "x1": "https://medias.france.tv/-1RzWx9FZTBPxqXus62nk8GXdd8/240x0/filters:quality(85):format(webp)/9/7/a/7eacababdb94435b9f29a0049b8ffa79.jpg", - "x2": "https://medias.france.tv/WCHO80CN3Dlt4C05BA8zUDw2VIA/400x0/filters:quality(85):format(webp)/9/7/a/7eacababdb94435b9f29a0049b8ffa79.jpg" - }, - "broadcastBeginDate": "05h50", - "captionLeading": "À regarder", - "caption": null, - "category": { - "id": "entertainment", - "label": "Divertissement" - }, - "channel": "francetv", - "csa": "TP", - "cta": "Regarder", - "duration": "8 min 5 s", - "icons": [ - { - "id": "st" - } - ], - "live": false, - "progress": null, - "title": "Émission du jeudi 8 janvier 2026", - "titleLeading": "Mot de passe : le duel", - "type": "video" - }, - "options": { - - }, - "tracking": { - "channel": "france_2", - "channel_type": "premium", - "category": "divertissement", - "sub_category": "jeux", - "content_type": "video", - "content_title": "emission_du_jeudi_8_janvier_2026", - "content_format": "integrale", - "program": "mot_de_passe_le_duel", - "program_id": "56191", - "content_id": 8026797, - "content_sponsored": false, - "content_logged": true, - "content_diffusion_date": "20022026", - "content_status": "indisponible", - "video_factory_id": "6993405a-530b-4ea7-bcb6-4c079eaab6bf" - }, - "variant": "horizontal" - } +[ + { + "ariaLabel": "Le 6h info . Émission du jeudi 19 février 2026 . Vidéo . 30 minutes", + "content": { + "description": "Un rendez-vous réveil-matin, avec un point sur l'actualité assorti de différentes rubriques qui permettent d'en explorer certains aspects plus en profondeur.", + "id": 8156589, + "label": null, + "url": "", + "thumbnail": { + "x1": "https://medias.france.tv/S9p5NdAs4OR2UbyC1NIQWsYV-K4/240x0/filters:quality(85):format(webp)/b/f/3/e85c2e8fed4a4955965dfff63c3843fb.jpg", + "x2": "https://medias.france.tv/BtQR9kmC4LN0RPWr9WbXfDlap5o/400x0/filters:quality(85):format(webp)/b/f/3/e85c2e8fed4a4955965dfff63c3843fb.jpg" + }, + "broadcastBeginDate": "06h00", + "captionLeading": "À regarder", + "caption": null, + "category": { + "id": "info", + "label": "Info" + }, + "channel": "francetv", + "csa": "TP", + "cta": "Regarder", + "duration": "30 min", + "icons": [], + "live": false, + "progress": null, + "title": "Émission du jeudi 19 février 2026", + "titleLeading": "Le 6h info", + "type": "video" + }, + "options": { + + }, + "tracking": { + "channel": "france_2", + "channel_type": "premium", + "category": "info", + "sub_category": "jt", + "content_type": "video", + "content_title": "emission_du_jeudi_19_fevrier_2026", + "content_format": "integrale", + "program": "le_6h_info", + "program_id": "2367", + "content_id": 8156589, + "content_sponsored": false, + "content_logged": true, + "content_diffusion_date": "19022026", + "content_status": "replay", + "video_factory_id": "c91a950b-7f1b-42b5-b513-0b470336d1d6" + }, + "variant": "horizontal" + }, + { + "ariaLabel": "Télématin . Émission du jeudi 19 février 2026 . Vidéo . 1 heure 30 minutes", + "content": { + "description": "De l'info et de la bonne humeur, sept jours sur sept : résolument dans l'air du temps, la première matinale de France, forte de sa richesse éditoriale et de sa dynamique d'équipe, aborde de nombreuses thématiques et traite l'actualité avec sérieux et sans dramatisation.", + "id": 8156586, + "label": null, + "url": "", + "thumbnail": { + "x1": "https://medias.france.tv/7_elf6zKoS8sOO941AMMeLWcrME/240x0/filters:quality(85):format(webp)/3/3/c/afbdb3622c034f01bafb6108e0287c33.jpg", + "x2": "https://medias.france.tv/JT03SrO-4rnPiZXPjTPSswlJ4BA/400x0/filters:quality(85):format(webp)/3/3/c/afbdb3622c034f01bafb6108e0287c33.jpg" + }, + "broadcastBeginDate": "06h30", + "captionLeading": "À regarder", + "caption": null, + "category": { + "id": "society", + "label": "Société" + }, + "channel": "francetv", + "csa": "TP", + "cta": "Regarder", + "duration": "1 h 30 min", + "icons": [], + "live": false, + "progress": null, + "title": "Émission du jeudi 19 février 2026", + "titleLeading": "Télématin", + "type": "video" + }, + "options": { + + }, + "tracking": { + "channel": "france_2", + "channel_type": "premium", + "category": "societe|info", + "sub_category": "magazines_d_actualite|decryptage_et_investigation", + "content_type": "video", + "content_title": "emission_du_jeudi_19_fevrier_2026", + "content_format": "integrale", + "program": "telematin", + "program_id": "1283", + "content_id": 8156586, + "content_sponsored": false, + "content_logged": true, + "content_diffusion_date": "19022026", + "content_status": "replay", + "video_factory_id": "3cfb78f4-adf0-4100-90be-b337bf062221" + }, + "variant": "horizontal" + }, + { + "ariaLabel": "Journal 08h00 . Édition du jeudi 19 février 2026 . Vidéo . 30 minutes", + "content": { + "description": "Pour bien démarrer la journée, la rédaction de France 2 propose un point sur l'actualité. Les principales informations nationales et internationales sont passées en revue.", + "id": 8156580, + "label": null, + "url": "", + "thumbnail": { + "x1": "https://medias.france.tv/MlJ0nPDHlk_tINBwGmaxbErv2-s/240x0/filters:quality(85):format(webp)/1/4/9/d0bc530cab624e5d9ba963b37da79941.jpg", + "x2": "https://medias.france.tv/hmo4z4xkDGNX2RDcFgcnSNnRI4E/400x0/filters:quality(85):format(webp)/1/4/9/d0bc530cab624e5d9ba963b37da79941.jpg" + }, + "broadcastBeginDate": "08h00", + "captionLeading": "À regarder", + "caption": null, + "category": { + "id": "info", + "label": "Info" + }, + "channel": "francetv", + "csa": "TP", + "cta": "Regarder", + "duration": "30 min", + "icons": [], + "live": false, + "progress": null, + "title": "Édition du jeudi 19 février 2026", + "titleLeading": "Journal 08h00", + "type": "video" + }, + "options": { + + }, + "tracking": { + "channel": "france_2", + "channel_type": "premium", + "category": "info", + "sub_category": "jt", + "content_type": "video", + "content_title": "edition_du_jeudi_19_fevrier_2026", + "content_format": "integrale", + "program": "journal_08h00", + "program_id": "2375", + "content_id": 8156580, + "content_sponsored": false, + "content_logged": true, + "content_diffusion_date": "19022026", + "content_status": "replay", + "video_factory_id": "bfc04ab3-521b-4810-b6fa-cbc77537e28b" + }, + "variant": "horizontal" + }, + { + "ariaLabel": "Télématin . Émission du jeudi 19 février 2026 . Vidéo . 1 heure 15 minutes", + "content": { + "description": "De l'info et de la bonne humeur, sept jours sur sept : résolument dans l'air du temps, la première matinale de France, forte de sa richesse éditoriale et de sa dynamique d'équipe, aborde de nombreuses thématiques et traite l'actualité avec sérieux et sans dramatisation.", + "id": 8156583, + "label": null, + "url": "", + "thumbnail": { + "x1": "https://medias.france.tv/GUI0YHtwVu1IqS9r_RVelgSzuIw/240x0/filters:quality(85):format(webp)/a/5/7/26046e577f7e4f60abf17a273e18e75a.jpg", + "x2": "https://medias.france.tv/JfV-adXMQ4TQ16RpTlA9J35BcHI/400x0/filters:quality(85):format(webp)/a/5/7/26046e577f7e4f60abf17a273e18e75a.jpg" + }, + "broadcastBeginDate": "08h30", + "captionLeading": "À regarder", + "caption": null, + "category": { + "id": "society", + "label": "Société" + }, + "channel": "francetv", + "csa": "TP", + "cta": "Regarder", + "duration": "1 h 15 min", + "icons": [], + "live": false, + "progress": null, + "title": "Émission du jeudi 19 février 2026", + "titleLeading": "Télématin", + "type": "video" + }, + "options": { + + }, + "tracking": { + "channel": "france_2", + "channel_type": "premium", + "category": "societe|info", + "sub_category": "magazines_d_actualite|decryptage_et_investigation", + "content_type": "video", + "content_title": "emission_du_jeudi_19_fevrier_2026", + "content_format": "integrale", + "program": "telematin", + "program_id": "1283", + "content_id": 8156583, + "content_sponsored": false, + "content_logged": true, + "content_diffusion_date": "19022026", + "content_status": "indisponible", + "video_factory_id": "50eec72e-9920-4850-b70b-7e37ad6e3e1f" + }, + "variant": "horizontal" + }, + { + "ariaLabel": "Jeux Olympiques d'hiver . Ski alpinisme (F et H) / Ski acrobatique (H) . Vidéo . 3 heures 15 minutes", + "content": { + "description": "Le ski-alpinisme fait son entrée aux Jeux olympiques à Cortina. Une première historique pour la discipline. Parmi les prétendants aux médailles en sprint, on retrouve le Belge Maximilien Drion. En combiné nordique, épreuve de saut à ski par équipes programmée à 10h. En ski acrobatique, les qualifications du halfpipe messieurs débutent à 10h30 av...", + "id": 8156574, + "label": null, + "url": "/sport/les-jeux-olympiques-d-hiver/8156574-ski-alpinisme-f-et-h-ski-acrobatique-h.html", + "thumbnail": { + "x1": "https://medias.france.tv/M05d1Kto1XuK7A267TrnR7nUSeg/240x0/filters:quality(85):format(webp)/k/m/x/phpflhxmk.jpg", + "x2": "https://medias.france.tv/y_EMxE-FWAyrMKm888jH-LJTLqo/400x0/filters:quality(85):format(webp)/k/m/x/phpflhxmk.jpg" + }, + "broadcastBeginDate": "09h45", + "captionLeading": "À regarder", + "caption": null, + "category": { + "id": "sport", + "label": "Sport" + }, + "channel": "francetv", + "csa": "TP", + "cta": "Regarder", + "duration": "3 h 15 min", + "icons": [], + "live": false, + "progress": null, + "title": "Ski alpinisme (F et H) / Ski acrobatique (H)", + "titleLeading": "Jeux Olympiques d'hiver", + "type": "video" + }, + "options": { + + }, + "tracking": { + "channel": "france_2", + "channel_type": "premium", + "category": "sport", + "content_type": "video", + "content_title": "ski_alpinisme_f_et_h_ski_acrobatique_h", + "content_format": "integrale", + "highlight": "jeux_olympiques_d_hiver", + "content_id": 8156574, + "content_sponsored": false, + "content_logged": true, + "content_diffusion_date": "19022026", + "content_status": "replay", + "video_factory_id": "6331b70c-f8cd-47fa-974e-28680033db17" + }, + "variant": "horizontal" + }, + { + "ariaLabel": "Journal 13h00 . Édition du jeudi 19 février 2026 . Vidéo . 40 minutes", + "content": { + "description": "Tous les jours, à 13h, la rédaction propose un point sur l'actualité. Les informations nationales et internationales sont passées à la loupe et mises en perspective, illustrées par des reportages sur le terrain.", + "id": 8156577, + "label": null, + "url": "", + "thumbnail": { + "x1": "https://medias.france.tv/vzdnS4Qvj1-DXIFs0Dhfmaxa-gs/240x0/filters:quality(85):format(webp)/1/9/8/369a7d7cdfc94d28becb9becfa454891.jpg", + "x2": "https://medias.france.tv/Ual5fsCcuJJ4n--WWVnrpSNqZMM/400x0/filters:quality(85):format(webp)/1/9/8/369a7d7cdfc94d28becb9becfa454891.jpg" + }, + "broadcastBeginDate": "13h00", + "captionLeading": "À regarder", + "caption": null, + "category": { + "id": "info", + "label": "Info" + }, + "channel": "francetv", + "csa": "TP", + "cta": "Regarder", + "duration": "40 min", + "icons": [], + "live": false, + "progress": null, + "title": "Édition du jeudi 19 février 2026", + "titleLeading": "Journal 13h00", + "type": "video" + }, + "options": { + + }, + "tracking": { + "channel": "france_2", + "channel_type": "premium", + "region": "saint_pierre_et_miquelon", + "category": "info", + "sub_category": "jt", + "content_type": "video", + "content_title": "edition_du_jeudi_19_fevrier_2026", + "content_format": "integrale", + "program": "journal_13h00", + "program_id": "2379", + "content_id": 8156577, + "content_sponsored": false, + "content_logged": true, + "content_diffusion_date": "19022026", + "content_status": "replay", + "video_factory_id": "866477d7-9978-49fc-92db-95c51a84c299" + }, + "variant": "horizontal" + }, + { + "ariaLabel": "Journal Météo Climat . Journal Météo climat . Vidéo . 5 minutes", + "content": { + "description": "Un point quotidien sur l'actualité météo et climatique, avec des reportages et des interviews d'experts.", + "id": 8156568, + "label": null, + "url": "", + "thumbnail": { + "x1": "https://medias.france.tv/GSxVDxWPpAXGdCYqe7rENQlUZLU/240x0/filters:quality(85):format(webp)/3/6/6/54adec73339a408d820cac0508c70663.jpg", + "x2": "https://medias.france.tv/lHI572NFvhaysIytuGQ7CIk5iPE/400x0/filters:quality(85):format(webp)/3/6/6/54adec73339a408d820cac0508c70663.jpg" + }, + "broadcastBeginDate": "13h40", + "captionLeading": "À regarder", + "caption": null, + "category": { + "id": "info", + "label": "Info" + }, + "channel": "francetv", + "csa": "TP", + "cta": "Regarder", + "duration": "5 min", + "icons": [], + "live": false, + "progress": null, + "title": "Journal Météo climat", + "titleLeading": "Journal Météo Climat", + "type": "video" + }, + "options": { + + }, + "tracking": { + "channel": "france_2", + "channel_type": "premium", + "category": "info", + "sub_category": "meteo", + "content_type": "video", + "content_title": "journal_meteo_climat", + "content_format": "integrale", + "program": "journal_meteo_climat", + "program_id": "42535", + "content_id": 8156568, + "content_sponsored": false, + "content_logged": true, + "content_diffusion_date": "19022026", + "content_status": "replay", + "video_factory_id": "d14523e7-f77e-42b9-84dc-49dd67fdd722" + }, + "variant": "horizontal" + }, + { + "ariaLabel": "Consomag . Produit reconditionné : en cas de problème, est-il garanti ? . Vidéo . 15 minutes", + "content": { + "description": "Le magazine de l'Institut national de la consommation donne à chacun des conseils pratiques pour mieux consommer, toutes les thématiques peuvent être abordées autour de nos achats.", + "id": 8156571, + "label": null, + "url": "", + "thumbnail": { + "x1": "https://medias.france.tv/4k1alPn1hkw6THco_lLFzUbyFT8/240x0/filters:quality(85):format(webp)/b/9/e/bd4ea8919ee3496fb021888fe18bfe9b.jpg", + "x2": "https://medias.france.tv/DxwPp0tiKk_PE3gf6QJgSYHQ6uI/400x0/filters:quality(85):format(webp)/b/9/e/bd4ea8919ee3496fb021888fe18bfe9b.jpg" + }, + "broadcastBeginDate": "13h45", + "captionLeading": "À regarder", + "caption": null, + "category": { + "id": "society", + "label": "Société" + }, + "channel": "francetv", + "csa": "TP", + "cta": "Regarder", + "duration": "15 min", + "icons": [], + "live": false, + "progress": null, + "title": "Produit reconditionné : en cas de problème, est-il garanti ?", + "titleLeading": "Consomag", + "type": "video" + }, + "options": { + + }, + "tracking": { + "channel": "france_2", + "channel_type": "premium", + "category": "societe|info", + "sub_category": "magazines_d_actualite|decryptage_et_investigation", + "content_type": "video", + "content_title": "produit_reconditionne_en_cas_de_probleme_est_il_garanti", + "content_format": "integrale", + "program": "consomag", + "program_id": "1615", + "content_id": 8156571, + "content_sponsored": false, + "content_logged": true, + "content_diffusion_date": "19022026", + "content_status": "replay", + "video_factory_id": "39629384-910f-4f8c-9d51-00436d5187cb" + }, + "variant": "horizontal" + }, + { + "ariaLabel": "Jeux Olympiques d'hiver . Ski alpinisme (F et H) / Hockey sur glace (F) . Vidéo . 23 minutes", + "content": { + "description": "Qui seront sacrés premier et première championne olympique de ski-alpinisme, à l'issue des finales de sprint qui débutent à 14h ? En combiné nordique, le titre par équipes messieurs est décerné à l'issue de l'épreuve de ski de fond, sprint 2x7,5 km, qui débute également à 14h. Les Norvégiens sont les tenants du titre, devant l'Allemagne et le Ja...", + "id": 8156565, + "label": null, + "url": "/sport/les-jeux-olympiques-d-hiver/8156565-ski-alpinisme-f-et-h-hockey-sur-glace-f.html", + "thumbnail": { + "x1": "https://medias.france.tv/Ud3CeWLgMHiwNQvtd4NEF_OWZVE/240x0/filters:quality(85):format(webp)/v/v/y/phpqdyyvv.jpg", + "x2": "https://medias.france.tv/qp-j3cKMmq5meo6V94hyOOcAlB4/400x0/filters:quality(85):format(webp)/v/v/y/phpqdyyvv.jpg" + }, + "broadcastBeginDate": "14h00", + "captionLeading": "À regarder", + "caption": null, + "category": { + "id": "sport", + "label": "Sport" + }, + "channel": "francetv", + "csa": "TP", + "cta": "Regarder", + "duration": "23 min", + "icons": [], + "live": false, + "progress": null, + "title": "Ski alpinisme (F et H) / Hockey sur glace (F)", + "titleLeading": "Jeux Olympiques d'hiver", + "type": "video" + }, + "options": { + + }, + "tracking": { + "channel": "france_2", + "channel_type": "premium", + "region": "wallis_et_futuna_|guadeloupe|nouvelle_caledonie|saint_pierre_et_miquelon", + "category": "sport", + "content_type": "video", + "content_title": "ski_alpinisme_f_et_h_hockey_sur_glace_f", + "content_format": "integrale", + "highlight": "jeux_olympiques_d_hiver", + "content_id": 8156565, + "content_sponsored": false, + "content_logged": true, + "content_diffusion_date": "19022026", + "content_status": "replay", + "video_factory_id": "644c18b3-4760-426f-9faa-ecaed8dc22e8" + }, + "variant": "horizontal" + }, + { + "ariaLabel": "Jeux Olympiques d'hiver . Patinage de vitesse (H) / Hockey sur glace (F) . Vidéo . 3 heures 25 minutes", + "content": { + "description": "En patinage de vitesse, l'épreuve du 1500 m messieurs débute à 16h30. L'Américain Jordan Stolz est favori, avec l'Allemand Finn Sonnekalb, le Néerlandais Kjeld Nuis et le Chinois Ning Zhongyan. La finale dames de hockey sur glace se joue à 19h10 à la Milano Santagiulia Ice Hockey Arena. Qui succédera au palmarès aux Canadiennes, victorieuses des...", + "id": 8156562, + "label": null, + "url": "/sport/les-jeux-olympiques-d-hiver/8156562-patinage-de-vitesse-h-hockey-sur-glace-f.html", + "thumbnail": { + "x1": "https://medias.france.tv/ZU0UG9N0Bu-LZvlCdkcR9_S33RU/240x0/filters:quality(85):format(webp)/o/s/1/phpxya1so.jpg", + "x2": "https://medias.france.tv/ULjmo-nhuZa89e0CjOqQtbOHQ3s/400x0/filters:quality(85):format(webp)/o/s/1/phpxya1so.jpg" + }, + "broadcastBeginDate": "16h30", + "captionLeading": "À regarder", + "caption": null, + "category": { + "id": "sport", + "label": "Sport" + }, + "channel": "francetv", + "csa": "TP", + "cta": "Regarder", + "duration": "3 h 25 min", + "icons": [], + "live": false, + "progress": null, + "title": "Patinage de vitesse (H) / Hockey sur glace (F)", + "titleLeading": "Jeux Olympiques d'hiver", + "type": "video" + }, + "options": { + + }, + "tracking": { + "channel": "france_2", + "channel_type": "premium", + "category": "sport", + "content_type": "video", + "content_title": "patinage_de_vitesse_h_hockey_sur_glace_f", + "content_format": "integrale", + "highlight": "jeux_olympiques_d_hiver", + "content_id": 8156562, + "content_sponsored": false, + "content_logged": true, + "content_diffusion_date": "19022026", + "content_status": "replay", + "video_factory_id": "d3cf848f-017c-4c5d-afa1-d1f38f4027b7" + }, + "variant": "horizontal" + }, + { + "ariaLabel": "Journal 20h00 . Édition du jeudi 19 février 2026 . Vidéo . 55 minutes", + "content": { + "description": "Les principales informations nationales et internationales sont passées à la loupe et mises en perspective, illustrées par des reportages sur le terrain.", + "id": 8156559, + "label": null, + "url": "", + "thumbnail": { + "x1": "https://medias.france.tv/BTfZ2idtnBxvhxHkDXSo8_Av_WE/240x0/filters:quality(85):format(webp)/a/8/7/125078f88e4c49c888d8bae6b19f978a.jpg", + "x2": "https://medias.france.tv/8nx8oqOWXShe0_iXZ28D7a9oSrA/400x0/filters:quality(85):format(webp)/a/8/7/125078f88e4c49c888d8bae6b19f978a.jpg" + }, + "broadcastBeginDate": "19h55", + "captionLeading": "À regarder", + "caption": null, + "category": { + "id": "info", + "label": "Info" + }, + "channel": "francetv", + "csa": "TP", + "cta": "Regarder", + "duration": "55 min", + "icons": [], + "live": false, + "progress": null, + "title": "Édition du jeudi 19 février 2026", + "titleLeading": "Journal 20h00", + "type": "video" + }, + "options": { + + }, + "tracking": { + "channel": "france_2", + "channel_type": "premium", + "category": "info", + "sub_category": "jt", + "content_type": "video", + "content_title": "edition_du_jeudi_19_fevrier_2026", + "content_format": "integrale", + "program": "journal_20h00", + "program_id": "2383", + "content_id": 8156559, + "content_sponsored": false, + "content_logged": true, + "content_diffusion_date": "19022026", + "content_status": "replay", + "video_factory_id": "ca0297ec-9059-4d69-8ea4-c8f950624c99" + }, + "variant": "horizontal" + }, + { + "ariaLabel": "Journal Météo Climat . Journal Météo climat . Vidéo . 1 minute", + "content": { + "description": "Un point quotidien sur l'actualité météo et climatique, avec des reportages et des interviews d'experts.", + "id": 8156556, + "label": null, + "url": "", + "thumbnail": { + "x1": "https://medias.france.tv/ZmsDXtZWuKlozYx5MS4QbsHgcAs/240x0/filters:quality(85):format(webp)/e/0/d/0faaeaa70a854e02a6fe1fde2d267d0e.jpg", + "x2": "https://medias.france.tv/CQlKJceC4-y2L-KWmcwJ8eX_T2g/400x0/filters:quality(85):format(webp)/e/0/d/0faaeaa70a854e02a6fe1fde2d267d0e.jpg" + }, + "broadcastBeginDate": "20h50", + "captionLeading": "À regarder", + "caption": null, + "category": { + "id": "info", + "label": "Info" + }, + "channel": "francetv", + "csa": "TP", + "cta": "Regarder", + "duration": "1 min", + "icons": [], + "live": false, + "progress": null, + "title": "Journal Météo climat", + "titleLeading": "Journal Météo Climat", + "type": "video" + }, + "options": { + + }, + "tracking": { + "channel": "france_2", + "channel_type": "premium", + "category": "info", + "sub_category": "meteo", + "content_type": "video", + "content_title": "journal_meteo_climat", + "content_format": "integrale", + "program": "journal_meteo_climat", + "program_id": "42535", + "content_id": 8156556, + "content_sponsored": false, + "content_logged": true, + "content_diffusion_date": "19022026", + "content_status": "replay", + "video_factory_id": "fcf39789-8d42-4710-b8da-0c6f87a873b3" + }, + "variant": "horizontal" + }, + { + "ariaLabel": "Epopées en bleu . Vidéo . 4 minutes", + "content": { + "description": "Gros plan en images sur les principaux événements sportifs du jour.", + "id": 8165610, + "label": null, + "url": "", + "thumbnail": { + "x1": "https://medias.france.tv/HMLOxc6ONp6Ol5iZjoXWtC6qx-g/240x0/filters:quality(85):format(webp)/c/1/8/2303b6f77cc941a49ed8c63e3fc8b81c.jpg", + "x2": "https://medias.france.tv/N3tuxwoofZZMwGYJPgq9nbjaxJ8/400x0/filters:quality(85):format(webp)/c/1/8/2303b6f77cc941a49ed8c63e3fc8b81c.jpg" + }, + "broadcastBeginDate": "20h51", + "captionLeading": "À regarder", + "caption": null, + "category": { + "id": "info", + "label": "Info" + }, + "channel": "francetv", + "csa": "TP", + "cta": "Regarder", + "duration": "4 min", + "icons": [], + "live": false, + "progress": null, + "title": "Epopées en bleu", + "titleLeading": null, + "type": "video" + }, + "options": { + + }, + "tracking": { + "channel": "france_2", + "channel_type": "premium", + "region": "nouvelle_caledonie|mayotte", + "category": "info", + "content_type": "video", + "content_title": "epopees_en_bleu", + "content_format": "integrale", + "program": "image_du_jour_sports", + "program_id": "91005", + "content_id": 8165610, + "content_sponsored": false, + "content_logged": true, + "content_diffusion_date": "19022026", + "content_status": "replay", + "video_factory_id": "b6181e31-30b1-4499-8702-f3d1e0676600" + }, + "variant": "horizontal" + }, + { + "ariaLabel": "Jeux olympiques de Milan-Cortina 2026 . Vidéo . 1 minute", + "content": { + "description": "Gros plan en images sur les principaux événements sportifs du jour.", + "id": 8156550, + "label": null, + "url": "", + "thumbnail": { + "x1": "https://medias.france.tv/MwHIVCE1cXHBTXiWmx0oq2BcA7E/240x0/filters:quality(85):format(webp)/0/2/e/08f11d7d474145fdafa268d852bbde20.jpg", + "x2": "https://medias.france.tv/ylQN0h84Sd_aWuBCdkD1B9eqQAI/400x0/filters:quality(85):format(webp)/0/2/e/08f11d7d474145fdafa268d852bbde20.jpg" + }, + "broadcastBeginDate": "20h55", + "captionLeading": "À regarder", + "caption": null, + "category": { + "id": "info", + "label": "Info" + }, + "channel": "francetv", + "csa": "TP", + "cta": "Regarder", + "duration": "1 min", + "icons": [], + "live": false, + "progress": null, + "title": "Jeux olympiques de Milan-Cortina 2026", + "titleLeading": null, + "type": "video" + }, + "options": { + + }, + "tracking": { + "channel": "france_2", + "channel_type": "premium", + "region": "nouvelle_caledonie|reunion", + "category": "info", + "content_type": "video", + "content_title": "jeux_olympiques_de_milan_cortina_2026", + "content_format": "integrale", + "program": "image_du_jour_sports", + "program_id": "91005", + "content_id": 8156550, + "content_sponsored": false, + "content_logged": true, + "content_diffusion_date": "19022026", + "content_status": "replay", + "video_factory_id": "4e3b3f90-4f82-4e08-82b4-9d5b2c1d39af" + }, + "variant": "horizontal" + }, + { + "ariaLabel": "Basique, l'essentiel de la musique . Yael Naim . Vidéo . 9 minutes", + "content": { + "description": "Une pastille consacrée à l'actualité musicale, qui braque les projecteurs sur un ou une artiste.", + "id": 8156553, + "label": null, + "url": "/france-2/basique-l-essentiel-de-la-musique/8156553-yael-naim.html", + "thumbnail": { + "x1": "https://medias.france.tv/9yTg8BrHoQq0NvbZOeXaCF3fJzM/240x0/filters:quality(85):format(webp)/e/j/w/phpnwywje.png", + "x2": "https://medias.france.tv/7kRvH3_djLDqKEqqaXjMWkYOwnI/400x0/filters:quality(85):format(webp)/e/j/w/phpnwywje.png" + }, + "broadcastBeginDate": "20h56", + "captionLeading": "À regarder", + "caption": null, + "category": { + "id": "artShow", + "label": "Arts & spectacles" + }, + "channel": "francetv", + "csa": "TP", + "cta": "Regarder", + "duration": "9 min", + "icons": [], + "live": false, + "progress": null, + "title": "Yael Naim", + "titleLeading": "Basique, l'essentiel de la musique", + "type": "video" + }, + "options": { + + }, + "tracking": { + "channel": "france_2", + "channel_type": "premium", + "category": "arts_et_spectacles|divertissement", + "sub_category": "emissions_culturelles|emissions_de_divertissement", + "content_type": "video", + "content_title": "yael_naim", + "content_format": "integrale", + "program": "basique_l_essentiel_de_la_musique", + "program_id": "7025", + "content_id": 8156553, + "content_sponsored": false, + "content_logged": true, + "content_diffusion_date": "19022026", + "content_status": "replay", + "video_factory_id": "330681fa-b116-4d09-b61c-856442605f47" + }, + "variant": "horizontal" + }, + { + "ariaLabel": "Mot de passe : le duel . Émission du jeudi 8 janvier 2026 . Vidéo . 8 minutes 5 secondes . Sous-titré", + "content": { + "description": "Mot de passe - Le Duel est un jeu qui consiste à faire deviner des mots à un partenaire de jeu en donnant des mots indices. Il se joue avec deux candidats face à deux célébrités. Du lundi au jeudi, ce sont les Duels et la Finale se joue en fin de semaine, le vendredi, avec le meilleur des 2 candidats et les deux célébrités.", + "id": 8026797, + "label": null, + "url": "/france-2/mot-de-passe-le-duel/8026797-emission-du-jeudi-8-janvier-2026.html", + "thumbnail": { + "x1": "https://medias.france.tv/-1RzWx9FZTBPxqXus62nk8GXdd8/240x0/filters:quality(85):format(webp)/9/7/a/7eacababdb94435b9f29a0049b8ffa79.jpg", + "x2": "https://medias.france.tv/WCHO80CN3Dlt4C05BA8zUDw2VIA/400x0/filters:quality(85):format(webp)/9/7/a/7eacababdb94435b9f29a0049b8ffa79.jpg" + }, + "broadcastBeginDate": "21h05", + "captionLeading": "À regarder", + "caption": null, + "category": { + "id": "entertainment", + "label": "Divertissement" + }, + "channel": "francetv", + "csa": "TP", + "cta": "Regarder", + "duration": "8 min 5 s", + "icons": [ + { + "id": "st" + } + ], + "live": false, + "progress": null, + "title": "Émission du jeudi 8 janvier 2026", + "titleLeading": "Mot de passe : le duel", + "type": "video" + }, + "options": { + + }, + "tracking": { + "channel": "france_2", + "channel_type": "premium", + "category": "divertissement", + "sub_category": "jeux", + "content_type": "video", + "content_title": "emission_du_jeudi_8_janvier_2026", + "content_format": "integrale", + "program": "mot_de_passe_le_duel", + "program_id": "56191", + "content_id": 8026797, + "content_sponsored": false, + "content_logged": true, + "content_diffusion_date": "19022026", + "content_status": "replay", + "video_factory_id": "adf6bf06-506b-410a-8c64-59e926ab984c" + }, + "variant": "horizontal" + }, + { + "ariaLabel": "Jeux Olympiques d'hiver . Patinage artistique (F) / Ski acrobatique (F) . Vidéo . Audio-décrit . 2 heures 33 minutes", + "content": { + "description": "La soirée débute par la fin du programme libre dames de patinage artistique. L'Américaine Alysa Liu, championne du monde 2025, est la grande favorite pour le titre olympique, remporté en 2022, à Pékin, par la Russe Anna Chtcherbakova. Ses principales adversaires seront les Japonaises Kaori Sakamoto et Mone Chiba, l'Estonienne Niina Petrokina et ...", + "id": 8156544, + "label": null, + "url": "/sport/les-jeux-olympiques-d-hiver/8156544-patinage-artistique-f-ski-acrobatique-f.html", + "thumbnail": { + "x1": "https://medias.france.tv/gMhZF8RFU9_ULzI56AAkDEUW7BQ/240x0/filters:quality(85):format(webp)/h/j/1/phpvra1jh.jpg", + "x2": "https://medias.france.tv/h9Dh0iCS-ikeAKmdAwd_nXkaTSA/400x0/filters:quality(85):format(webp)/h/j/1/phpvra1jh.jpg" + }, + "broadcastBeginDate": "21h10", + "captionLeading": "À regarder", + "caption": null, + "category": { + "id": "sport", + "label": "Sport" + }, + "channel": "francetv", + "csa": "TP", + "cta": "Regarder", + "duration": "2 h 33 min", + "icons": [ + { + "id": "ad" + } + ], + "live": false, + "progress": null, + "title": "Patinage artistique (F) / Ski acrobatique (F)", + "titleLeading": "Jeux Olympiques d'hiver", + "type": "video" + }, + "options": { + + }, + "tracking": { + "channel": "france_2", + "channel_type": "premium", + "region": "saint_pierre_et_miquelon", + "category": "sport", + "content_type": "video", + "content_title": "patinage_artistique_f_ski_acrobatique_f", + "content_format": "integrale", + "highlight": "jeux_olympiques_d_hiver", + "content_id": 8156544, + "content_sponsored": false, + "content_logged": true, + "content_diffusion_date": "19022026", + "content_status": "replay", + "video_factory_id": "8fc870a9-a5d6-43ce-b8f7-e7945f5229ff" + }, + "variant": "horizontal" + }, + { + "ariaLabel": "JO Club . Émission du jeudi 19 février 2026 . Vidéo . 1 heure", + "content": { + "description": "Tous les soirs, tout au long de ces Jeux olympiques d'hiver de Milan-Cortina, Laurent Luyat revient, avec les journalistes et consultants de France Télévisions, sur les épreuves de la journée. Il accueille les athlètes et les médaillés du jour. La journée a été marquée par du combiné nordique, avec l'épreuve par équipes messieurs, les demi-final...", + "id": 8156547, + "label": null, + "url": "", + "thumbnail": { + "x1": "https://medias.france.tv/xuxaBPNFyhMiVB5eeYrZV_1nPj4/240x0/filters:quality(85):format(webp)/v/p/h/phpmhbhpv.jpg", + "x2": "https://medias.france.tv/szcQQVOSSqC70fcjHId4PxZ-wxE/400x0/filters:quality(85):format(webp)/v/p/h/phpmhbhpv.jpg" + }, + "broadcastBeginDate": "23h00", + "captionLeading": "À regarder", + "caption": null, + "category": { + "id": "info", + "label": "Info" + }, + "channel": "francetv", + "csa": "TP", + "cta": "Regarder", + "duration": "1 h", + "icons": [], + "live": false, + "progress": null, + "title": "Émission du jeudi 19 février 2026", + "titleLeading": "JO Club", + "type": "video" + }, + "options": { + + }, + "tracking": { + "channel": "france_2", + "channel_type": "premium", + "region": "martinique|guadeloupe|guyane", + "category": "info", + "content_type": "video", + "content_title": "emission_du_jeudi_19_fevrier_2026", + "content_format": "integrale", + "program": "jo_club", + "program_id": "5603", + "content_id": 8156547, + "content_sponsored": false, + "content_logged": true, + "content_diffusion_date": "19022026", + "content_status": "replay", + "video_factory_id": "98238f1c-37a0-497f-9e3a-5f05eb17ce5c" + }, + "variant": "horizontal" + }, + { + "ariaLabel": "Jeux Olympiques d'hiver . Jeux Olympiques d'hiver : Rediffusions . Vidéo . 5 heures 50 minutes", + "content": { + "description": "Les XXVes Jeux olympiques d'hiver 2026 se déroulent en Italie, à Milan et Cortina d'Ampezzo, et célèbrent les sports d'hiver avec 16 disciplines au menu de la compétition.", + "id": 8156541, + "label": null, + "url": "", + "thumbnail": { + "x1": "https://medias.france.tv/PRXSSEG8Mi9gyQp37QHrILo0HNg/240x0/filters:quality(85):format(webp)/c/g/b/phpxnobgc.jpg", + "x2": "https://medias.france.tv/4WT0xrlA1E6GxCFWkAdtAXjsKRs/400x0/filters:quality(85):format(webp)/c/g/b/phpxnobgc.jpg" + }, + "broadcastBeginDate": "00h00", + "captionLeading": "À regarder", + "caption": null, + "category": { + "id": "sport", + "label": "Sport" + }, + "channel": "francetv", + "csa": "TP", + "cta": "Regarder", + "duration": "5 h 50 min", + "icons": [], + "live": false, + "progress": null, + "title": "Jeux Olympiques d'hiver : Rediffusions", + "titleLeading": "Jeux Olympiques d'hiver", + "type": "video" + }, + "options": { + + }, + "tracking": { + "channel": "france_2", + "channel_type": "premium", + "region": "martinique", + "category": "sport", + "content_type": "video", + "content_title": "jeux_olympiques_d_hiver_rediffusions", + "content_format": "integrale", + "highlight": "jeux_olympiques_d_hiver", + "content_id": 8156541, + "content_sponsored": false, + "content_logged": true, + "content_diffusion_date": "20022026", + "content_status": "indisponible", + "video_factory_id": "7435a412-cdf0-4eaa-8168-29f466de95ef" + }, + "variant": "horizontal" + }, + { + "ariaLabel": "Mot de passe : le duel . Émission du jeudi 8 janvier 2026 . Vidéo . 8 minutes 5 secondes . Sous-titré", + "content": { + "description": "Mot de passe - Le Duel est un jeu qui consiste à faire deviner des mots à un partenaire de jeu en donnant des mots indices. Il se joue avec deux candidats face à deux célébrités. Du lundi au jeudi, ce sont les Duels et la Finale se joue en fin de semaine, le vendredi, avec le meilleur des 2 candidats et les deux célébrités.", + "id": 8026797, + "label": null, + "url": "/france-2/mot-de-passe-le-duel/8026797-emission-du-jeudi-8-janvier-2026.html", + "thumbnail": { + "x1": "https://medias.france.tv/-1RzWx9FZTBPxqXus62nk8GXdd8/240x0/filters:quality(85):format(webp)/9/7/a/7eacababdb94435b9f29a0049b8ffa79.jpg", + "x2": "https://medias.france.tv/WCHO80CN3Dlt4C05BA8zUDw2VIA/400x0/filters:quality(85):format(webp)/9/7/a/7eacababdb94435b9f29a0049b8ffa79.jpg" + }, + "broadcastBeginDate": "05h50", + "captionLeading": "À regarder", + "caption": null, + "category": { + "id": "entertainment", + "label": "Divertissement" + }, + "channel": "francetv", + "csa": "TP", + "cta": "Regarder", + "duration": "8 min 5 s", + "icons": [ + { + "id": "st" + } + ], + "live": false, + "progress": null, + "title": "Émission du jeudi 8 janvier 2026", + "titleLeading": "Mot de passe : le duel", + "type": "video" + }, + "options": { + + }, + "tracking": { + "channel": "france_2", + "channel_type": "premium", + "category": "divertissement", + "sub_category": "jeux", + "content_type": "video", + "content_title": "emission_du_jeudi_8_janvier_2026", + "content_format": "integrale", + "program": "mot_de_passe_le_duel", + "program_id": "56191", + "content_id": 8026797, + "content_sponsored": false, + "content_logged": true, + "content_diffusion_date": "20022026", + "content_status": "indisponible", + "video_factory_id": "6993405a-530b-4ea7-bcb6-4c079eaab6bf" + }, + "variant": "horizontal" + } ] \ No newline at end of file diff --git a/sites/france.tv/france.tv.channels.xml b/sites/france.tv/france.tv.channels.xml index 4cf7b227e..192b28d62 100644 --- a/sites/france.tv/france.tv.channels.xml +++ b/sites/france.tv/france.tv.channels.xml @@ -1,18 +1,18 @@ - - - Arté - France Télévisions Docs - France 2 - France 3 - France 4 - France 5 - France 24 - Franceinfo - France TV - INA (Institut National de l&#x27;Audiovisuel) - LCP Public Sénat - Mieux - France Télévisions Séries - France Télévisions Sport - TV5 Monde Plus - + + + Arté + France Télévisions Docs + France 2 + France 3 + France 4 + France 5 + France 24 + Franceinfo + France TV + INA (Institut National de l&#x27;Audiovisuel) + LCP Public Sénat + Mieux + France Télévisions Séries + France Télévisions Sport + TV5 Monde Plus + diff --git a/sites/france.tv/france.tv.config.js b/sites/france.tv/france.tv.config.js index 84a0ce8b6..b8327a70c 100644 --- a/sites/france.tv/france.tv.config.js +++ b/sites/france.tv/france.tv.config.js @@ -1,159 +1,159 @@ -const dayjs = require('dayjs') -const axios = require('axios') -const utc = require('dayjs/plugin/utc') -const timezone = require('dayjs/plugin/timezone') -const customParseFormat = require('dayjs/plugin/customParseFormat') - -dayjs.extend(utc) -dayjs.extend(timezone) -dayjs.extend(customParseFormat) -dayjs.tz.setDefault('Europe/Paris') - -// Because France is excellent at pointing hours, their programs ALL start at 5/6 am, -// so we need to keep track of the earlier day's program to get the midnight programming. How... odd. -module.exports = { - site: 'france.tv', - days: 2, - url: function ({ channel, date }) { - return `https://www.france.tv/api/epg/videos/?date=${date.format('YYYY-MM-DD')}&channel=${channel.site_id}` - }, - parser: async function ({ channel, content, date }) { - const programs = [] - let items = [] - - const dayBefore = date.subtract(1, 'd').format('YYYY-MM-DD') - const linkDayBefore = `https://www.france.tv/api/epg/videos/?date=${dayBefore}&channel=${channel.site_id}` - - try { - const responseDayBefore = await axios.get(linkDayBefore) - const programmingDayBefore = responseDayBefore.data || [] - - // The broadcast day starts at ~6 AM. Programs with hour < 6 in the day-before API - // are actually early morning programs (00:00-05:59) of our target date. - if (Array.isArray(programmingDayBefore)) { - programmingDayBefore.forEach(item => { - const time = item?.content?.broadcastBeginDate - if (!time) return - const hour = parseInt(time.split('h')[0]) - - if (hour < 6) { - items.push(item) - } - }) - } - } catch { - // Day before data unavailable, continue with current day only - } - - // From the current day's API, only include programs starting from 6h onwards. - // Programs with hour < 6 belong to the next calendar day's schedule. - try { - const currentDayItems = JSON.parse(content) || [] - if (Array.isArray(currentDayItems)) { - currentDayItems.forEach(item => { - const time = item?.content?.broadcastBeginDate - if (!time) return - const hour = parseInt(time.split('h')[0]) - - if (hour >= 6) { - items.push(item) - } - }) - } - } catch { - return programs - } - - items.forEach(item => { - const { start, stop } = parseDuration(date, item) - if (!start.isValid() || !stop.isValid()) return - // Can contain Season and Episode in title, but not always. If title is missing, skip the program - if (!item?.content?.title) return - - let title = item.content.title - let season = null - let episode = null - - const seMatch = title.match(/\s*-?\s*S(\d+)\s+E(\d+)\s*-?\s*/) - if (seMatch) { - season = parseInt(seMatch[1]) - episode = parseInt(seMatch[2]) - title = title.replace(seMatch[0], ' ').replace(/^\s+/, '').replace(/\s+$/, '').trim() - } - - const fullTitle = (item.content.titleLeading ? item.content.titleLeading + (title ? ' - ' : '') : '') + title - - programs.push({ - title: fullTitle, - description: item.content.description, - image: getImageUrl(item), - icon: getImageUrl(item), - start, - stop, - season: season, - episode: episode, - rating: item.content.csa - }) - }) - - return programs - }, - async channels() { - try { - const response = await axios.get('https://www.france.tv/chaines/') - const data = response.data || '' - const channels = [] - - const channelRegex = - /]+aria-controls="[^"]*content-([a-z0-9-]+)"[\s\S]*?([^<]+)<\/title>/gi - - let match - while ((match = channelRegex.exec(data)) !== null) { - channels.push({ - lang: 'fr', - site_id: match[1], - name: match[2].trim() - }) - } - - return [...new Map(channels.map(channel => [channel.site_id, channel])).values()] - } catch (error) { - console.error('Failed to fetch channels list:', error.message) - return [] - } - } -} - -function parseDuration(date, item) { - const current_date = date.format('YYYY-MM-DD') - const time = item.content?.broadcastBeginDate - const duration = item.content?.duration // e.g. "11 min 45 s", "1 h 30 min", "30 min" - - if (!time) return { start: dayjs(null), stop: dayjs(null) } - - const timeParts = time.split('h') - - let durationInSeconds = 0 - if (duration) { - const durationParts = duration.split(' ') - for (let i = 0; i < durationParts.length; i++) { - const part = durationParts[i] - if (part === 'h' && i > 0) { - durationInSeconds += parseInt(durationParts[i - 1]) * 3600 - } else if (part === 'min' && i > 0) { - durationInSeconds += parseInt(durationParts[i - 1]) * 60 - } else if (part === 's' && i > 0) { - durationInSeconds += parseInt(durationParts[i - 1]) - } - } - } - - const start = dayjs.utc(`${current_date} ${timeParts[0]}:${timeParts[1]}`, 'YYYY-MM-DD HH:mm') - const stop = start.add(durationInSeconds, 'second') - return { start, stop } -} - -function getImageUrl(item) { - const url = item.content?.thumbnail?.x1 - return url -} +const dayjs = require('dayjs') +const axios = require('axios') +const utc = require('dayjs/plugin/utc') +const timezone = require('dayjs/plugin/timezone') +const customParseFormat = require('dayjs/plugin/customParseFormat') + +dayjs.extend(utc) +dayjs.extend(timezone) +dayjs.extend(customParseFormat) +dayjs.tz.setDefault('Europe/Paris') + +// Because France is excellent at pointing hours, their programs ALL start at 5/6 am, +// so we need to keep track of the earlier day's program to get the midnight programming. How... odd. +module.exports = { + site: 'france.tv', + days: 2, + url: function ({ channel, date }) { + return `https://www.france.tv/api/epg/videos/?date=${date.format('YYYY-MM-DD')}&channel=${channel.site_id}` + }, + parser: async function ({ channel, content, date }) { + const programs = [] + let items = [] + + const dayBefore = date.subtract(1, 'd').format('YYYY-MM-DD') + const linkDayBefore = `https://www.france.tv/api/epg/videos/?date=${dayBefore}&channel=${channel.site_id}` + + try { + const responseDayBefore = await axios.get(linkDayBefore) + const programmingDayBefore = responseDayBefore.data || [] + + // The broadcast day starts at ~6 AM. Programs with hour < 6 in the day-before API + // are actually early morning programs (00:00-05:59) of our target date. + if (Array.isArray(programmingDayBefore)) { + programmingDayBefore.forEach(item => { + const time = item?.content?.broadcastBeginDate + if (!time) return + const hour = parseInt(time.split('h')[0]) + + if (hour < 6) { + items.push(item) + } + }) + } + } catch { + // Day before data unavailable, continue with current day only + } + + // From the current day's API, only include programs starting from 6h onwards. + // Programs with hour < 6 belong to the next calendar day's schedule. + try { + const currentDayItems = JSON.parse(content) || [] + if (Array.isArray(currentDayItems)) { + currentDayItems.forEach(item => { + const time = item?.content?.broadcastBeginDate + if (!time) return + const hour = parseInt(time.split('h')[0]) + + if (hour >= 6) { + items.push(item) + } + }) + } + } catch { + return programs + } + + items.forEach(item => { + const { start, stop } = parseDuration(date, item) + if (!start.isValid() || !stop.isValid()) return + // Can contain Season and Episode in title, but not always. If title is missing, skip the program + if (!item?.content?.title) return + + let title = item.content.title + let season = null + let episode = null + + const seMatch = title.match(/\s*-?\s*S(\d+)\s+E(\d+)\s*-?\s*/) + if (seMatch) { + season = parseInt(seMatch[1]) + episode = parseInt(seMatch[2]) + title = title.replace(seMatch[0], ' ').replace(/^\s+/, '').replace(/\s+$/, '').trim() + } + + const fullTitle = (item.content.titleLeading ? item.content.titleLeading + (title ? ' - ' : '') : '') + title + + programs.push({ + title: fullTitle, + description: item.content.description, + image: getImageUrl(item), + icon: getImageUrl(item), + start, + stop, + season: season, + episode: episode, + rating: item.content.csa + }) + }) + + return programs + }, + async channels() { + try { + const response = await axios.get('https://www.france.tv/chaines/') + const data = response.data || '' + const channels = [] + + const channelRegex = + /<button[^>]+aria-controls="[^"]*content-([a-z0-9-]+)"[\s\S]*?<title>([^<]+)<\/title>/gi + + let match + while ((match = channelRegex.exec(data)) !== null) { + channels.push({ + lang: 'fr', + site_id: match[1], + name: match[2].trim() + }) + } + + return [...new Map(channels.map(channel => [channel.site_id, channel])).values()] + } catch (error) { + console.error('Failed to fetch channels list:', error.message) + return [] + } + } +} + +function parseDuration(date, item) { + const current_date = date.format('YYYY-MM-DD') + const time = item.content?.broadcastBeginDate + const duration = item.content?.duration // e.g. "11 min 45 s", "1 h 30 min", "30 min" + + if (!time) return { start: dayjs(null), stop: dayjs(null) } + + const timeParts = time.split('h') + + let durationInSeconds = 0 + if (duration) { + const durationParts = duration.split(' ') + for (let i = 0; i < durationParts.length; i++) { + const part = durationParts[i] + if (part === 'h' && i > 0) { + durationInSeconds += parseInt(durationParts[i - 1]) * 3600 + } else if (part === 'min' && i > 0) { + durationInSeconds += parseInt(durationParts[i - 1]) * 60 + } else if (part === 's' && i > 0) { + durationInSeconds += parseInt(durationParts[i - 1]) + } + } + } + + const start = dayjs.utc(`${current_date} ${timeParts[0]}:${timeParts[1]}`, 'YYYY-MM-DD HH:mm') + const stop = start.add(durationInSeconds, 'second') + return { start, stop } +} + +function getImageUrl(item) { + const url = item.content?.thumbnail?.x1 + return url +} diff --git a/sites/france.tv/france.tv.test.js b/sites/france.tv/france.tv.test.js index b7be8c070..8edb79469 100644 --- a/sites/france.tv/france.tv.test.js +++ b/sites/france.tv/france.tv.test.js @@ -1,54 +1,54 @@ -const { parser, url } = require('./france.tv.config.js') -const axios = require('axios') -const fs = require('fs') -const path = require('path') -const dayjs = require('dayjs') -const utc = require('dayjs/plugin/utc') -const customParseFormat = require('dayjs/plugin/customParseFormat') -dayjs.extend(customParseFormat) -dayjs.extend(utc) - -jest.mock('axios') - -const date = dayjs.utc('2026-02-19', 'YYYY-MM-DD').startOf('d') -const channel = { - site_id: 'france-2', - xmltv_id: 'France2.fr@HD' -} - -it('can generate valid url', () => { - expect(url({ channel, date })).toBe('https://www.france.tv/api/epg/videos/?date=2026-02-19&channel=france-2') -}) - -it('can parse response', async () => { - axios.get.mockResolvedValue({ data: [] }) - const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json')) - const results = (await parser({ content, date, channel })).map(p => { - p.start = p.start.toJSON() - p.stop = p.stop.toJSON() - return p - }) - - expect(results.length).toBe(18) - expect(results[0]).toMatchObject({ - title: 'Le 6h info - Émission du jeudi 19 février 2026', - description: "Un rendez-vous réveil-matin, avec un point sur l'actualité assorti de différentes rubriques qui permettent d'en explorer certains aspects plus en profondeur.", - image: 'https://medias.france.tv/S9p5NdAs4OR2UbyC1NIQWsYV-K4/240x0/filters:quality(85):format(webp)/b/f/3/e85c2e8fed4a4955965dfff63c3843fb.jpg', - start: '2026-02-19T06:00:00.000Z', - stop: '2026-02-19T06:30:00.000Z' - }) - expect(results[17]).toMatchObject({ - title: 'JO Club - Émission du jeudi 19 février 2026', - description: "Tous les soirs, tout au long de ces Jeux olympiques d'hiver de Milan-Cortina, Laurent Luyat revient, avec les journalistes et consultants de France Télévisions, sur les épreuves de la journée. Il accueille les athlètes et les médaillés du jour. La journée a été marquée par du combiné nordique, avec l'épreuve par équipes messieurs, les demi-final...", - image: 'https://medias.france.tv/xuxaBPNFyhMiVB5eeYrZV_1nPj4/240x0/filters:quality(85):format(webp)/v/p/h/phpmhbhpv.jpg', - start: '2026-02-19T23:00:00.000Z', - stop: '2026-02-20T00:00:00.000Z' - }) -}) - -it('can handle empty guide', async () => { - axios.get.mockResolvedValue({ data: [] }) - const results = await parser({ content: [], date, channel }) - - expect(results).toMatchObject([]) -}) +const { parser, url } = require('./france.tv.config.js') +const axios = require('axios') +const fs = require('fs') +const path = require('path') +const dayjs = require('dayjs') +const utc = require('dayjs/plugin/utc') +const customParseFormat = require('dayjs/plugin/customParseFormat') +dayjs.extend(customParseFormat) +dayjs.extend(utc) + +jest.mock('axios') + +const date = dayjs.utc('2026-02-19', 'YYYY-MM-DD').startOf('d') +const channel = { + site_id: 'france-2', + xmltv_id: 'France2.fr@HD' +} + +it('can generate valid url', () => { + expect(url({ channel, date })).toBe('https://www.france.tv/api/epg/videos/?date=2026-02-19&channel=france-2') +}) + +it('can parse response', async () => { + axios.get.mockResolvedValue({ data: [] }) + const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json')) + const results = (await parser({ content, date, channel })).map(p => { + p.start = p.start.toJSON() + p.stop = p.stop.toJSON() + return p + }) + + expect(results.length).toBe(18) + expect(results[0]).toMatchObject({ + title: 'Le 6h info - Émission du jeudi 19 février 2026', + description: "Un rendez-vous réveil-matin, avec un point sur l'actualité assorti de différentes rubriques qui permettent d'en explorer certains aspects plus en profondeur.", + image: 'https://medias.france.tv/S9p5NdAs4OR2UbyC1NIQWsYV-K4/240x0/filters:quality(85):format(webp)/b/f/3/e85c2e8fed4a4955965dfff63c3843fb.jpg', + start: '2026-02-19T06:00:00.000Z', + stop: '2026-02-19T06:30:00.000Z' + }) + expect(results[17]).toMatchObject({ + title: 'JO Club - Émission du jeudi 19 février 2026', + description: "Tous les soirs, tout au long de ces Jeux olympiques d'hiver de Milan-Cortina, Laurent Luyat revient, avec les journalistes et consultants de France Télévisions, sur les épreuves de la journée. Il accueille les athlètes et les médaillés du jour. La journée a été marquée par du combiné nordique, avec l'épreuve par équipes messieurs, les demi-final...", + image: 'https://medias.france.tv/xuxaBPNFyhMiVB5eeYrZV_1nPj4/240x0/filters:quality(85):format(webp)/v/p/h/phpmhbhpv.jpg', + start: '2026-02-19T23:00:00.000Z', + stop: '2026-02-20T00:00:00.000Z' + }) +}) + +it('can handle empty guide', async () => { + axios.get.mockResolvedValue({ data: [] }) + const results = await parser({ content: [], date, channel }) + + expect(results).toMatchObject([]) +}) diff --git a/sites/france.tv/readme.md b/sites/france.tv/readme.md index 368c7a84e..aa1683fc4 100644 --- a/sites/france.tv/readme.md +++ b/sites/france.tv/readme.md @@ -1,21 +1,21 @@ -# france.tv - -https://www.france.tv/ - -### Download the guide - -```sh -npm run grab --- --site=france.tv -``` - -### Update channel list - -```sh -npm run channels:parse --- --config=./sites/france.tv/france.tv.config.js --output=./sites/france.tv/france.tv.channels.xml -``` - -### Test - -```sh -npm test --- france.tv -``` +# france.tv + +https://www.france.tv/ + +### Download the guide + +```sh +npm run grab --- --site=france.tv +``` + +### Update channel list + +```sh +npm run channels:parse --- --config=./sites/france.tv/france.tv.config.js --output=./sites/france.tv/france.tv.channels.xml +``` + +### Test + +```sh +npm test --- france.tv +```