From d948e09b6174179adb43ac10cdb95dffeb4854dd Mon Sep 17 00:00:00 2001 From: Yen Chi Hsuan Date: Sat, 2 May 2015 01:19:06 +0800 Subject: [PATCH] [viki] Extract m3u8 videos (#4855) --- youtube_dl/extractor/viki.py | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/youtube_dl/extractor/viki.py b/youtube_dl/extractor/viki.py index 0fc1ceb19..f85e43042 100644 --- a/youtube_dl/extractor/viki.py +++ b/youtube_dl/extractor/viki.py @@ -12,6 +12,8 @@ from ..utils import ( unified_strdate, US_RATINGS, clean_html, + determine_ext, + mimetype2ext, ) from .common import InfoExtractor @@ -45,6 +47,19 @@ class VikiIE(InfoExtractor): 'upload_date': '20150430', 'title': '\'The Avengers: Age of Ultron\' Press Conference', } + }, { + 'url': 'http://www.viki.com/videos/1048879v-ankhon-dekhi', + 'info_dict': { + 'id': '1048879v', + 'ext': 'mp4', + 'upload_date': '20140820', + 'description': 'md5:54ff56d51bdfc7a30441ec967394e91c', + 'title': 'Ankhon Dekhi', + }, + 'params': { + # requires ffmpeg + 'skip_download': True, + } }] def _real_extract(self, url): @@ -81,8 +96,21 @@ class VikiIE(InfoExtractor): expected=True) else: raise ExtractorError('Viki said: ' + err_msg) - video_url = self._html_search_regex( - r']+src="([^"]+)"', info_webpage, 'video URL') + mobj = re.search( + r']+type="(?P[^"]+)"[^>]+src="(?P[^"]+)"', info_webpage) + if not mobj: + raise ExtractorError('Unable to find video URL') + video_url = unescapeHTML(mobj.group('url')) + video_ext = mimetype2ext(mobj.group('mime_type')) + + if determine_ext(video_url) == 'm3u8': + formats = self._extract_m3u8_formats( + video_url, video_id, ext=video_ext) + else: + formats = [{ + 'url': video_url, + 'ext': video_ext, + }] upload_date_str = self._html_search_regex( r'"created_at":"([^"]+)"', info_webpage, 'upload date') @@ -98,7 +126,7 @@ class VikiIE(InfoExtractor): return { 'id': video_id, 'title': title, - 'url': video_url, + 'formats': formats, 'description': description, 'thumbnail': thumbnail, 'age_limit': age_limit, -- 2.22.2