diff options
Diffstat (limited to 'youtube_dl/extractor/xhamster.py')
| -rw-r--r-- | youtube_dl/extractor/xhamster.py | 39 | 
1 files changed, 23 insertions, 16 deletions
| diff --git a/youtube_dl/extractor/xhamster.py b/youtube_dl/extractor/xhamster.py index b4ad513a0..8938c0e45 100644 --- a/youtube_dl/extractor/xhamster.py +++ b/youtube_dl/extractor/xhamster.py @@ -4,7 +4,6 @@ import re  from .common import InfoExtractor  from ..utils import ( -    ExtractorError,      unified_strdate,      str_to_int,      int_or_none, @@ -22,7 +21,7 @@ class XHamsterIE(InfoExtractor):                  'ext': 'mp4',                  'title': 'FemaleAgent Shy beauty takes the bait',                  'upload_date': '20121014', -                'uploader_id': 'Ruseful2011', +                'uploader': 'Ruseful2011',                  'duration': 893,                  'age_limit': 18,              } @@ -34,7 +33,7 @@ class XHamsterIE(InfoExtractor):                  'ext': 'mp4',                  'title': 'Britney Spears  Sexy Booty',                  'upload_date': '20130914', -                'uploader_id': 'jojo747400', +                'uploader': 'jojo747400',                  'duration': 200,                  'age_limit': 18,              } @@ -46,12 +45,12 @@ class XHamsterIE(InfoExtractor):      ]      def _real_extract(self, url): -        def extract_video_url(webpage): -            mp4 = re.search(r'<video\s+.*?file="([^"]+)".*?>', webpage) -            if mp4 is None: -                raise ExtractorError('Unable to extract media URL') -            else: -                return mp4.group(1) +        def extract_video_url(webpage, name): +            return self._search_regex( +                [r'''file\s*:\s*(?P<q>["'])(?P<mp4>.+?)(?P=q)''', +                 r'''<a\s+href=(?P<q>["'])(?P<mp4>.+?)(?P=q)\s+class=["']mp4Thumb''', +                 r'''<video[^>]+file=(?P<q>["'])(?P<mp4>.+?)(?P=q)[^>]*>'''], +                webpage, name, group='mp4')          def is_hd(webpage):              return '<div class=\'icon iconHD\'' in webpage @@ -64,7 +63,9 @@ class XHamsterIE(InfoExtractor):          mrss_url = '%s://xhamster.com/movies/%s/%s.html' % (proto, video_id, seo)          webpage = self._download_webpage(mrss_url, video_id) -        title = self._html_search_regex(r'<title>(?P<title>.+?) - xHamster\.com</title>', webpage, 'title') +        title = self._html_search_regex( +            [r'<title>(?P<title>.+?)(?:, (?:[^,]+? )?Porn: xHamster| - xHamster\.com)</title>', +             r'<h1>([^<]+)</h1>'], webpage, 'title')          # Only a few videos have an description          mobj = re.search(r'<span>Description: </span>([^<]+)', webpage) @@ -75,10 +76,14 @@ class XHamsterIE(InfoExtractor):          if upload_date:              upload_date = unified_strdate(upload_date) -        uploader_id = self._html_search_regex(r'<a href=\'/user/[^>]+>(?P<uploader_id>[^<]+)', -                                              webpage, 'uploader id', default='anonymous') +        uploader = self._html_search_regex( +            r"<a href='[^']+xhamster\.com/user/[^>]+>(?P<uploader>[^<]+)", +            webpage, 'uploader', default='anonymous') -        thumbnail = self._html_search_regex(r'<video\s+.*?poster="([^"]+)".*?>', webpage, 'thumbnail', fatal=False) +        thumbnail = self._search_regex( +            [r'''thumb\s*:\s*(?P<q>["'])(?P<thumbnail>.+?)(?P=q)''', +             r'''<video[^>]+poster=(?P<q>["'])(?P<thumbnail>.+?)(?P=q)[^>]*>'''], +            webpage, 'thumbnail', fatal=False, group='thumbnail')          duration = parse_duration(self._html_search_regex(r'<span>Runtime:</span> (\d+:\d+)</div>',                                                            webpage, 'duration', fatal=False)) @@ -97,7 +102,9 @@ class XHamsterIE(InfoExtractor):          hd = is_hd(webpage) -        video_url = extract_video_url(webpage) +        format_id = 'hd' if hd else 'sd' + +        video_url = extract_video_url(webpage, format_id)          formats = [{              'url': video_url,              'format_id': 'hd' if hd else 'sd', @@ -108,7 +115,7 @@ class XHamsterIE(InfoExtractor):              mrss_url = self._search_regex(r'<link rel="canonical" href="([^"]+)', webpage, 'mrss_url')              webpage = self._download_webpage(mrss_url + '?hd', video_id, note='Downloading HD webpage')              if is_hd(webpage): -                video_url = extract_video_url(webpage) +                video_url = extract_video_url(webpage, 'hd')                  formats.append({                      'url': video_url,                      'format_id': 'hd', @@ -122,7 +129,7 @@ class XHamsterIE(InfoExtractor):              'title': title,              'description': description,              'upload_date': upload_date, -            'uploader_id': uploader_id, +            'uploader': uploader,              'thumbnail': thumbnail,              'duration': duration,              'view_count': view_count, | 
