youtube-dl

Another place where youtube-dl lives on
git clone git://git.oshgnacknak.de/youtube-dl.git
Log | Files | Refs | README | LICENSE

commit 9be31e771cd9481ea690c01eed398645deadc1de
parent 7f176ac4775aed5e5a72d2f0c4b579d1b886d419
Author: Yen Chi Hsuan <yan12125@gmail.com>
Date:   Tue, 11 Jul 2017 15:48:34 +0800

[twitter] Support HLS streams in vmap URLs

Diffstat:
MChangeLog | 1+
Myoutube_dl/extractor/twitter.py | 23++++++++++++++---------
2 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -1,6 +1,7 @@ version <unreleased> Extractors ++ [twitter] Support HLS streams in vmap URLs + [periscope] Support pscp.tv URLs in embedded frames * [niconico] Fix authentication error handling (#12486) * [giantbomb] Extract m3u8 formats (#13626) diff --git a/youtube_dl/extractor/twitter.py b/youtube_dl/extractor/twitter.py @@ -20,9 +20,16 @@ from .periscope import PeriscopeIE class TwitterBaseIE(InfoExtractor): - def _get_vmap_video_url(self, vmap_url, video_id): + def _extract_formats_from_vmap_url(self, vmap_url, video_id): vmap_data = self._download_xml(vmap_url, video_id) - return xpath_text(vmap_data, './/MediaFile').strip() + video_url = xpath_text(vmap_data, './/MediaFile').strip() + if determine_ext(video_url) == 'm3u8': + return self._extract_m3u8_formats( + video_url, video_id, ext='mp4', m3u8_id='hls', + entry_protocol='m3u8_native') + return [{ + 'url': video_url, + }] @staticmethod def _search_dimensions_in_video_url(a_format, video_url): @@ -197,9 +204,8 @@ class TwitterCardIE(TwitterBaseIE): vmap_url = config.get('vmapUrl') or config.get('vmap_url') if vmap_url: - formats.append({ - 'url': self._get_vmap_video_url(vmap_url, video_id), - }) + formats.extend( + self._extract_formats_from_vmap_url(vmap_url, video_id)) media_info = None @@ -449,7 +455,7 @@ class TwitterAmplifyIE(TwitterBaseIE): vmap_url = self._html_search_meta( 'twitter:amplify:vmap', webpage, 'vmap url') - video_url = self._get_vmap_video_url(vmap_url, video_id) + formats = self._extract_formats_from_vmap_url(vmap_url, video_id) thumbnails = [] thumbnail = self._html_search_meta( @@ -471,11 +477,10 @@ class TwitterAmplifyIE(TwitterBaseIE): }) video_w, video_h = _find_dimension('player') - formats = [{ - 'url': video_url, + formats[0].update({ 'width': video_w, 'height': video_h, - }] + }) return { 'id': video_id,