diff options
| -rw-r--r-- | youtube_dl/extractor/spankwire.py | 105 | 
1 files changed, 45 insertions, 60 deletions
| diff --git a/youtube_dl/extractor/spankwire.py b/youtube_dl/extractor/spankwire.py index 0f2d8d0de..0a47441b1 100644 --- a/youtube_dl/extractor/spankwire.py +++ b/youtube_dl/extractor/spankwire.py @@ -18,33 +18,34 @@ from ..aes import aes_decrypt_text  class SpankwireIE(InfoExtractor):      _VALID_URL = r'https?://(?:www\.)?(?P<url>spankwire\.com/[^/]*/video(?P<videoid>[0-9]+)/?)'      _TESTS = [{ -                'url': 'http://www.spankwire.com/Buckcherry-s-X-Rated-Music-Video-Crazy-Bitch/video103545/', -                'md5': '8bbfde12b101204b39e4b9fe7eb67095', -                    'info_dict': { -                                    'id': '103545', -                                    'ext': 'mp4', -                                    'title': 'Buckcherry`s X Rated Music Video Crazy Bitch', -                                    'description': 'Crazy Bitch X rated music video.', -                                    'uploader': 'oreusz', -                                    'uploader_id': '124697', -                                    'upload_date': '20070507', -                                    'age_limit': 18, -                    } -              }, -              { -                'url': 'http://www.spankwire.com/Titcums-Compiloation-I/video1921551/', -                'md5': '09b3c20833308b736ae8902db2f8d7e6', -                    'info_dict': { -                                    'id': '1921551', -                                    'ext': 'mp4', -                                    'title': 'Titcums Compiloation I', -                                    'description': 'cum on tits', -                                    'uploader': 'dannyh78999', -                                    'uploader_id': '3056053', -                                    'upload_date': '20150822', -                                    'age_limit': 18, -                    } -              }] +        # download URL pattern: */<height>P_<tbr>K_<video_id>.mp4 +        'url': 'http://www.spankwire.com/Buckcherry-s-X-Rated-Music-Video-Crazy-Bitch/video103545/', +        'md5': '8bbfde12b101204b39e4b9fe7eb67095', +        'info_dict': { +            'id': '103545', +            'ext': 'mp4', +            'title': 'Buckcherry`s X Rated Music Video Crazy Bitch', +            'description': 'Crazy Bitch X rated music video.', +            'uploader': 'oreusz', +            'uploader_id': '124697', +            'upload_date': '20070507', +            'age_limit': 18, +        } +    }, { +        # download URL pattern: */mp4_<format_id>_<video_id>.mp4 +        'url': 'http://www.spankwire.com/Titcums-Compiloation-I/video1921551/', +        'md5': '09b3c20833308b736ae8902db2f8d7e6', +        'info_dict': { +            'id': '1921551', +            'ext': 'mp4', +            'title': 'Titcums Compiloation I', +            'description': 'cum on tits', +            'uploader': 'dannyh78999', +            'uploader_id': '3056053', +            'upload_date': '20150822', +            'age_limit': 18, +        }, +    }]      def _real_extract(self, url):          mobj = re.match(self._VALID_URL, url) @@ -81,9 +82,10 @@ class SpankwireIE(InfoExtractor):              r'<span\s+id="spCommentCount"[^>]*>([\d,\.]+)</span>',              webpage, 'comment count', fatal=False)) -        video_urls = list(map( -            compat_urllib_parse_unquote, -            re.findall(r'playerData\.cdnPath[0-9]{3,}\s*=\s*(?:encodeURIComponent\()?["\']([^"\']+)["\']', webpage))) +        videos = re.findall( +            r'playerData\.cdnPath([0-9]{3,})\s*=\s*(?:encodeURIComponent\()?["\']([^"\']+)["\']', webpage) +        heights = [int(video[0]) for video in videos] +        video_urls = list(map(compat_urllib_parse_unquote, [video[1] for video in videos]))          if webpage.find('flashvars\.encrypted = "true"') != -1:              password = self._search_regex(                  r'flashvars\.video_title = "([^"]+)', @@ -93,39 +95,22 @@ class SpankwireIE(InfoExtractor):                  video_urls))          formats = [] -        for video_url in video_urls: +        for height, video_url in zip(heights, video_urls):              path = compat_urllib_parse_urlparse(video_url).path -            format = path.split('/')[4].split('_')[:2] -            if format[0] == 'mp4': -                format_id, quality = format -                format = "-".join(format) -                if quality == 'normal': -                    height = 180 -                elif quality == 'high': -                    height = 240 -                elif quality == 'ultra': -                    height = 480 -                elif quality == '720p': -                    height = 720 -                formats.append({ -                    'url': video_url, -                    'format': format, -                    'height': height, -                    'format_id': format, +            _, quality = path.split('/')[4].split('_')[:2] +            f = { +                'url': video_url, +                'height': height, +            } +            tbr = self._search_regex(r'^(\d+)[Kk]$', quality, 'tbr', default=None) +            if tbr: +                f.update({ +                    'tbr': int(tbr), +                    'format_id': '%dp' % height,                  })              else: -                resolution, bitrate_str = format -                format = "-".join(format) -                height = int(resolution.rstrip('Pp')) -                tbr = int(bitrate_str.rstrip('Kk')) -                formats.append({ -                    'url': video_url, -                    'resolution': resolution, -                    'format': format, -                    'tbr': tbr, -                    'height': height, -                    'format_id': format, -                }) +                f['format_id'] = quality +            formats.append(f)          self._sort_formats(formats)          age_limit = self._rta_search(webpage) | 
