diff options
| author | Sergey M․ <dstftw@gmail.com> | 2014-09-13 21:45:53 +0700 | 
|---|---|---|
| committer | Sergey M․ <dstftw@gmail.com> | 2014-09-13 21:45:53 +0700 | 
| commit | ceff3fd8ef8d22df88cee55b6e4a9f783c3dd8cb (patch) | |
| tree | 0772ad78f3ac20c694945ac00f6791961c2d3d82 | |
| parent | 7e6a715380fa0a99e496e1eab6162b4d7a115dc6 (diff) | |
[pornhd] Fix extraction (Closes #3739)
| -rw-r--r-- | youtube_dl/extractor/pornhd.py | 51 | 
1 files changed, 22 insertions, 29 deletions
| diff --git a/youtube_dl/extractor/pornhd.py b/youtube_dl/extractor/pornhd.py index 718fe9aba..48ce6e730 100644 --- a/youtube_dl/extractor/pornhd.py +++ b/youtube_dl/extractor/pornhd.py @@ -27,47 +27,40 @@ class PornHdIE(InfoExtractor):          webpage = self._download_webpage(url, video_id) -        title = self._og_search_title(webpage) -        TITLE_SUFFIX = ' porn HD Video | PornHD.com ' -        if title.endswith(TITLE_SUFFIX): -            title = title[:-len(TITLE_SUFFIX)] - +        title = self._html_search_regex( +            r'<title>(.+) porn HD.+?</title>', webpage, 'title')          description = self._html_search_regex(              r'<div class="description">([^<]+)</div>', webpage, 'description', fatal=False)          view_count = int_or_none(self._html_search_regex( -            r'(\d+) views 	</span>', webpage, 'view count', fatal=False)) +            r'(\d+) views\s*</span>', webpage, 'view count', fatal=False)) -        formats = [ -            { -                'url': format_url, -                'ext': format.lower(), -                'format_id': '%s-%s' % (format.lower(), quality.lower()), -                'quality': 1 if quality.lower() == 'high' else 0, -            } for format, quality, format_url in re.findall( -                r'var __video([\da-zA-Z]+?)(Low|High)StreamUrl = \'(http://.+?)\?noProxy=1\'', webpage) -        ] +        videos = re.findall( +            r'var __video([\da-zA-Z]+?)(Low|High)StreamUrl = \'(http://.+?)\?noProxy=1\'', webpage)          mobj = re.search(r'flashVars = (?P<flashvars>{.+?});', webpage)          if mobj:              flashvars = json.loads(mobj.group('flashvars')) -            formats.extend([ -                { -                    'url': flashvars['hashlink'].replace('?noProxy=1', ''), -                    'ext': 'flv', -                    'format_id': 'flv-low', -                    'quality': 0, -                }, -                { -                    'url': flashvars['hd'].replace('?noProxy=1', ''), -                    'ext': 'flv', -                    'format_id': 'flv-high', -                    'quality': 1, -                } -            ]) +            for key, quality in [('hashlink', 'low'), ('hd', 'high')]: +                redirect_url = flashvars.get(key) +                if redirect_url: +                    videos.append(('flv', quality, redirect_url))              thumbnail = flashvars['urlWallpaper']          else:              thumbnail = self._og_search_thumbnail(webpage) +        formats = [] +        for format_, quality, redirect_url in videos: +            format_id = '%s-%s' % (format_.lower(), quality.lower()) +            video_url = self._download_webpage( +                redirect_url, video_id, 'Downloading %s video link' % format_id, fatal=False) +            if not video_url: +                continue +            formats.append({ +                'url': video_url, +                'ext': format_.lower(), +                'format_id': format_id, +                'quality': 1 if quality.lower() == 'high' else 0, +            })          self._sort_formats(formats)          return { | 
