From bad52881494c46f5790dddcd3b8ff4b7f4e959cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillaume=20Dou=C3=A9zan-Grard?= Date: Wed, 6 Nov 2019 19:55:13 +0100 Subject: [PATCH] [francetv] Add fallback video url extraction Fallback on another API endpoint when no video formats are found. Closes ytdl-org#22561 --- youtube_dl/extractor/francetv.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/youtube_dl/extractor/francetv.py b/youtube_dl/extractor/francetv.py index 81b468c7d..53e274897 100644 --- a/youtube_dl/extractor/francetv.py +++ b/youtube_dl/extractor/francetv.py @@ -166,6 +166,23 @@ class FranceTVIE(InfoExtractor): 'url': video_url, 'format_id': format_id, }) + + if not formats: + fallback_info = self._download_json( + 'https://player.webservices.francetelevisions.fr/v1/videos/%s' % video_id, + video_id, 'Downloading fallback video JSON', query={ + 'device_type': 'mobile', + 'browser': 'firefox', + }) + + video_url = fallback_info['video']['url'] + format_id = fallback_info['video']['format'] + + formats.extend(self._extract_m3u8_formats( + sign(video_url, format_id), video_id, 'mp4', + entry_protocol='m3u8_native', m3u8_id=format_id, + fatal=False)) + self._sort_formats(formats) title = info['titre']