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,  | 
