From 0bfd0b598a4f66ca86af57708b37b87931ef9e8c Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Tue, 9 Oct 2012 12:28:44 +0200 Subject: [PATCH] Re-engineered Dailymotion qualities selection (thanks @knagano, sort of merges #176) --- youtube_dl/InfoExtractors.py | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/youtube_dl/InfoExtractors.py b/youtube_dl/InfoExtractors.py index f97611cb9..693f07332 100644 --- a/youtube_dl/InfoExtractors.py +++ b/youtube_dl/InfoExtractors.py @@ -658,15 +658,21 @@ class DailymotionIE(InfoExtractor): self._downloader.trouble(u'ERROR: unable to extract media URL') return flashvars = urllib.unquote(mobj.group(1)) - if 'hqURL' in flashvars: max_quality = 'hqURL' - elif 'sdURL' in flashvars: max_quality = 'sdURL' - else: max_quality = 'ldURL' + + for key in ['hd1080URL', 'hd720URL', 'hqURL', 'sdURL', 'ldURL', 'video_url']: + if key in flashvars: + max_quality = key + self._downloader.to_screen(u'[dailymotion] Using %s' % key) + break + else: + self._downloader.trouble(u'ERROR: unable to extract video URL') + return + mobj = re.search(r'"' + max_quality + r'":"(.+?)"', flashvars) if mobj is None: - mobj = re.search(r'"video_url":"(.*?)",', flashvars) - if mobj is None: - self._downloader.trouble(u'ERROR: unable to extract media URL') + self._downloader.trouble(u'ERROR: unable to extract video URL') return + video_url = urllib.unquote(mobj.group(1)).replace('\\/', '/') # TODO: support choosing qualities @@ -677,11 +683,12 @@ class DailymotionIE(InfoExtractor): return video_title = unescapeHTML(mobj.group('title').decode('utf-8')) + video_uploader = u'NA' mobj = re.search(r'(?im)[^<]+?]+?>([^<]+?)', webpage) if mobj is None: - self._downloader.trouble(u'ERROR: unable to extract uploader nickname') - return - video_uploader = mobj.group(1) + self._downloader.trouble(u'WARNING: unable to extract uploader nickname') + else: + video_uploader = mobj.group(1) video_upload_date = u'NA' mobj = re.search(r'
([0-9]{2})-([0-9]{2})-([0-9]{4})
', webpage)