From cfcd9c3fbf9ceaca145c4aacf2e5bf397abeee90 Mon Sep 17 00:00:00 2001 From: gfabiano Date: Thu, 28 Sep 2017 18:57:30 +0200 Subject: [PATCH 1/5] [rtve] Fix extraction (closes 14290) --- youtube_dl/extractor/rtve.py | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/youtube_dl/extractor/rtve.py b/youtube_dl/extractor/rtve.py index 746677a24..514b601fb 100644 --- a/youtube_dl/extractor/rtve.py +++ b/youtube_dl/extractor/rtve.py @@ -16,6 +16,7 @@ from ..utils import ( remove_start, sanitized_Request, std_headers, + determine_ext, ) @@ -84,6 +85,18 @@ class RTVEALaCartaIE(InfoExtractor): 'title': 'TODO', }, 'skip': 'The f4m manifest can\'t be used yet', + }, { + 'url': 'http://www.rtve.es/alacarta/videos/servir-y-proteger/servir-proteger-capitulo-104/4236788/', + 'md5': 'e55e162379ad587e9640eda4f7353c0f', + 'info_dict': { + 'id': '4236788', + 'ext': 'mp4', + 'title': 'Servir y proteger - CapĂ­tulo 104 ', + 'duration': 3222.0, + }, + 'params': { + 'skip_download': True, # requires ffmpeg + }, }, { 'url': 'http://www.rtve.es/m/alacarta/videos/cuentame-como-paso/cuentame-como-paso-t16-ultimo-minuto-nuestra-vida-capitulo-276/2969138/?media=tve', 'only_matching': True, @@ -112,11 +125,24 @@ class RTVEALaCartaIE(InfoExtractor): png_request.add_header('Referer', url) png = self._download_webpage(png_request, video_id, 'Downloading url information') video_url = _decrypt_url(png) - if not video_url.endswith('.f4m'): + ext = determine_ext(video_url) + + formats = [] + if not video_url.endswith('.f4m') and ext != 'm3u8': if '?' not in video_url: video_url = video_url.replace('resources/', 'auth/resources/') video_url = video_url.replace('.net.rtve', '.multimedia.cdn.rtve') + if ext == 'm3u8': + formats.extend(self._extract_m3u8_formats(video_url, video_id, ext='mp4')) + elif ext == 'f4m': + formats.extend(self._extract_f4m_formats(video_url, video_id)) + else: + formats.append({ + 'url': video_url, + }) + self._sort_formats(formats) + subtitles = None if info.get('sbtFile') is not None: subtitles = self.extract_subtitles(video_id, info['sbtFile']) @@ -124,7 +150,7 @@ class RTVEALaCartaIE(InfoExtractor): return { 'id': video_id, 'title': info['title'], - 'url': video_url, + 'formats': formats, 'thumbnail': info.get('image'), 'page_url': url, 'subtitles': subtitles, From a4fe6dffc2b22e9f37045fa41502205b4f6f5d11 Mon Sep 17 00:00:00 2001 From: gfabiano Date: Fri, 29 Sep 2017 19:14:01 +0200 Subject: [PATCH 2/5] Required fixes --- youtube_dl/extractor/rtve.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/youtube_dl/extractor/rtve.py b/youtube_dl/extractor/rtve.py index 514b601fb..9405e6d3f 100644 --- a/youtube_dl/extractor/rtve.py +++ b/youtube_dl/extractor/rtve.py @@ -134,9 +134,10 @@ class RTVEALaCartaIE(InfoExtractor): video_url = video_url.replace('.net.rtve', '.multimedia.cdn.rtve') if ext == 'm3u8': - formats.extend(self._extract_m3u8_formats(video_url, video_id, ext='mp4')) + formats.extend(self._extract_m3u8_formats( + video_url, video_id, ext='mp4', m3u8_id='hls', fatal=False)) elif ext == 'f4m': - formats.extend(self._extract_f4m_formats(video_url, video_id)) + formats.extend(self._extract_f4m_formats(video_url, video_id, f4m_id='hds', fatal=False)) else: formats.append({ 'url': video_url, From c166555e3f6ce9bc42ec714da039fcce5df0cf6c Mon Sep 17 00:00:00 2001 From: Sergey M Date: Sun, 1 Oct 2017 03:17:30 +0700 Subject: [PATCH 3/5] Update rtve.py --- youtube_dl/extractor/rtve.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/youtube_dl/extractor/rtve.py b/youtube_dl/extractor/rtve.py index 9405e6d3f..a860ee0c2 100644 --- a/youtube_dl/extractor/rtve.py +++ b/youtube_dl/extractor/rtve.py @@ -10,13 +10,13 @@ from ..compat import ( compat_struct_unpack, ) from ..utils import ( + determine_ext, ExtractorError, float_or_none, remove_end, remove_start, sanitized_Request, std_headers, - determine_ext, ) @@ -137,7 +137,8 @@ class RTVEALaCartaIE(InfoExtractor): formats.extend(self._extract_m3u8_formats( video_url, video_id, ext='mp4', m3u8_id='hls', fatal=False)) elif ext == 'f4m': - formats.extend(self._extract_f4m_formats(video_url, video_id, f4m_id='hds', fatal=False)) + formats.extend(self._extract_f4m_formats( + video_url, video_id, f4m_id='hds', fatal=False)) else: formats.append({ 'url': video_url, From 9f5715f54aef150e9dba238b56c1931ba882c3fa Mon Sep 17 00:00:00 2001 From: Sergey M Date: Sun, 1 Oct 2017 03:18:29 +0700 Subject: [PATCH 4/5] Update rtve.py --- youtube_dl/extractor/rtve.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/youtube_dl/extractor/rtve.py b/youtube_dl/extractor/rtve.py index a860ee0c2..5746ee18f 100644 --- a/youtube_dl/extractor/rtve.py +++ b/youtube_dl/extractor/rtve.py @@ -120,6 +120,7 @@ class RTVEALaCartaIE(InfoExtractor): video_id)['page']['items'][0] if info['state'] == 'DESPU': raise ExtractorError('The video is no longer available', expected=True) + title = info['title'] png_url = 'http://www.rtve.es/ztnr/movil/thumbnail/%s/videos/%s.png' % (self._manager, video_id) png_request = sanitized_Request(png_url) png_request.add_header('Referer', url) @@ -151,7 +152,7 @@ class RTVEALaCartaIE(InfoExtractor): return { 'id': video_id, - 'title': info['title'], + 'title': title, 'formats': formats, 'thumbnail': info.get('image'), 'page_url': url, From 6e2298245388123215a75614372e953eaa43a14e Mon Sep 17 00:00:00 2001 From: Sergey M Date: Sun, 1 Oct 2017 03:20:03 +0700 Subject: [PATCH 5/5] Update rtve.py --- youtube_dl/extractor/rtve.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/youtube_dl/extractor/rtve.py b/youtube_dl/extractor/rtve.py index 5746ee18f..d9edf9da2 100644 --- a/youtube_dl/extractor/rtve.py +++ b/youtube_dl/extractor/rtve.py @@ -136,7 +136,8 @@ class RTVEALaCartaIE(InfoExtractor): if ext == 'm3u8': formats.extend(self._extract_m3u8_formats( - video_url, video_id, ext='mp4', m3u8_id='hls', fatal=False)) + video_url, video_id, ext='mp4', entry_protocol='m3u8_native', + m3u8_id='hls', fatal=False)) elif ext == 'f4m': formats.extend(self._extract_f4m_formats( video_url, video_id, f4m_id='hds', fatal=False))