diff --git a/youtube_dl/extractor/spankwire.py b/youtube_dl/extractor/spankwire.py index 6cdec6ce5..7cde073e3 100644 --- a/youtube_dl/extractor/spankwire.py +++ b/youtube_dl/extractor/spankwire.py @@ -4,10 +4,16 @@ import re from .common import InfoExtractor from ..utils import ( + ExtractorError, int_or_none, sanitized_Request, unified_strdate, ) +from youtube_dl.aes import aes_decrypt_text +from youtube_dl.compat import ( + compat_urllib_parse_urlparse, + compat_urllib_parse_unquote, +) class SpankwireIE(InfoExtractor): @@ -48,9 +54,9 @@ class SpankwireIE(InfoExtractor): req = sanitized_Request('http://www.' + mobj.group('url')) req.add_header('Cookie', 'age_verified=1') - webpage = self._download_webpage(req, video_id) - video_data = self._download_json( - sanitized_Request('https://www.spankwire.com/api/video/' + video_id + '.json'), video_id) + webpage = self._download_webpage(req, video_id, fatal=False) + video_data = self._download_json('https://www.spankwire.com/api/video/' + + video_id + '.json', video_id) title = video_data.get('title') or self._html_search_regex( r'

([^<]+)', webpage, 'title') @@ -58,8 +64,9 @@ class SpankwireIE(InfoExtractor): description = video_data.get('description') uploader = self._search_regex( - r']+class="uploaded__by"[^>]*>(.+?)', - webpage, 'uploader', flags=re.DOTALL, fatal=False) + re.compile(r']+class="uploaded__by"[^>]*>(.+?)', re.DOTALL), + webpage, 'uploader', fatal=False) + uploader_id = self._html_search_regex( r'by\s*\d+)[pP]_(?P\d+)[kK]', path) + if m: + tbr = int(m.group('tbr')) + height = int(m.group('height')) + else: + tbr = None + formats.append({ + 'url': video_url, + 'format_id': '%dp' % height, + 'height': height, + 'tbr': tbr, + }) + else: + for quality, video_url in video_data.get('videos').items(): + height = quality.replace('quality_', '').replace('p', '') + formats.append({ + 'url': video_url, + 'format_id': quality, + 'height': int_or_none(height), + }) + self._sort_formats(formats) age_limit = self._rta_search(webpage)