diff options
author | Jaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com> | 2013-07-05 14:15:26 +0200 |
---|---|---|
committer | Jaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com> | 2013-07-05 14:15:26 +0200 |
commit | b27c856fbc1d36537a6caaaffe18e07ccc2bf4cf (patch) | |
tree | e0039b086696ee1506b79cb7d6cffe9e6d63c5e8 | |
parent | 9941ceb33146e4552cf7a1008c36e5858660605d (diff) |
Dailymotion: fix the download of the video in the max quality (closes #986)
-rw-r--r-- | youtube_dl/extractor/dailymotion.py | 40 |
1 files changed, 20 insertions, 20 deletions
diff --git a/youtube_dl/extractor/dailymotion.py b/youtube_dl/extractor/dailymotion.py index 3297a8549..0b47d652a 100644 --- a/youtube_dl/extractor/dailymotion.py +++ b/youtube_dl/extractor/dailymotion.py @@ -1,9 +1,9 @@ import re +import json from .common import InfoExtractor from ..utils import ( compat_urllib_request, - compat_urllib_parse, ExtractorError, unescapeHTML, @@ -39,26 +39,7 @@ class DailymotionIE(InfoExtractor): # Extract URL, uploader and title from webpage self.report_extraction(video_id) - mobj = re.search(r'\s*var flashvars = (.*)', webpage) - if mobj is None: - raise ExtractorError(u'Unable to extract media URL') - flashvars = compat_urllib_parse.unquote(mobj.group(1)) - for key in ['hd1080URL', 'hd720URL', 'hqURL', 'sdURL', 'ldURL', 'video_url']: - if key in flashvars: - max_quality = key - self.to_screen(u'Using %s' % key) - break - else: - raise ExtractorError(u'Unable to extract video URL') - - mobj = re.search(r'"' + max_quality + r'":"(.+?)"', flashvars) - if mobj is None: - raise ExtractorError(u'Unable to extract video URL') - - video_url = compat_urllib_parse.unquote(mobj.group(1)).replace('\\/', '/') - - # TODO: support choosing qualities mobj = re.search(r'<meta property="og:title" content="(?P<title>[^"]*)" />', webpage) if mobj is None: @@ -76,6 +57,25 @@ class DailymotionIE(InfoExtractor): if mobj is not None: video_upload_date = mobj.group(3) + mobj.group(2) + mobj.group(1) + embed_url = 'http://www.dailymotion.com/embed/video/%s' % video_id + embed_page = self._download_webpage(embed_url, video_id, + u'Downloading embed page') + info = self._search_regex(r'var info = ({.*?}),', embed_page, 'video info') + info = json.loads(info) + + # TODO: support choosing qualities + + for key in ['stream_h264_hd1080_url','stream_h264_hd_url', + 'stream_h264_hq_url','stream_h264_url', + 'stream_h264_ld_url']: + if info.get(key):#key in info and info[key]: + max_quality = key + self.to_screen(u'Using %s' % key) + break + else: + raise ExtractorError(u'Unable to extract video URL') + video_url = info[max_quality] + return [{ 'id': video_id, 'url': video_url, |