From 760f81212f6cd5608b8c0d42181f6ec6e6c0f24b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergey=20M=E2=80=A4?= Date: Sun, 11 Feb 2018 21:58:04 +0700 Subject: [PATCH] [francetv] Add support for live streams (closes #13689) --- youtube_dl/extractor/francetv.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/youtube_dl/extractor/francetv.py b/youtube_dl/extractor/francetv.py index 491545e1c..6d768a89a 100644 --- a/youtube_dl/extractor/francetv.py +++ b/youtube_dl/extractor/francetv.py @@ -11,10 +11,11 @@ from ..compat import ( ) from ..utils import ( clean_html, + determine_ext, ExtractorError, int_or_none, parse_duration, - determine_ext, + try_get, ) from .dailymotion import DailymotionIE @@ -77,6 +78,14 @@ class FranceTVIE(InfoExtractor): }, { 'url': 'francetv:NI_657393@Regions', 'only_matching': True, + }, { + # france-3 live + 'url': 'https://www.france.tv/france-3/direct.html', + 'only_matching': True, + }, { + # france-3 live + 'url': 'francetv:SIM_France3', + 'only_matching': True, }] def _extract_video(self, video_id, catalogue=None): @@ -121,6 +130,8 @@ class FranceTVIE(InfoExtractor): return signed_url return manifest_url + is_live = None + formats = [] for video in info['videos']: if video['statut'] != 'ONLINE': @@ -128,6 +139,10 @@ class FranceTVIE(InfoExtractor): video_url = video['url'] if not video_url: continue + if is_live is None: + is_live = (try_get( + video, lambda x: x['plages_ouverture'][0]['direct'], + bool) is True) or '/live.francetv.fr/' in video_url format_id = video['format'] ext = determine_ext(video_url) if ext == 'f4m': @@ -173,11 +188,12 @@ class FranceTVIE(InfoExtractor): return { 'id': video_id, - 'title': title, + 'title': self._live_title(title) if is_live else title, 'description': clean_html(info['synopsis']), 'thumbnail': compat_urlparse.urljoin('http://pluzz.francetv.fr', info['image']), 'duration': int_or_none(info.get('real_duration')) or parse_duration(info['duree']), 'timestamp': int_or_none(info['diffusion']['timestamp']), + 'is_live': is_live, 'formats': formats, 'subtitles': subtitles, }