X-Git-Url: https://jfr.im/git/yt-dlp.git/blobdiff_plain/bfd973ece3369c593b5e82a88cc16de80088a73e..61edf57f8f13f6dfd81154174e647eb5fdd26089:/yt_dlp/extractor/vice.py diff --git a/yt_dlp/extractor/vice.py b/yt_dlp/extractor/vice.py index f3ad56bf1..3739a37e4 100644 --- a/yt_dlp/extractor/vice.py +++ b/yt_dlp/extractor/vice.py @@ -7,15 +7,12 @@ from .adobepass import AdobePassIE from .common import InfoExtractor from .youtube import YoutubeIE -from ..compat import ( - compat_HTTPError, - compat_str, -) +from ..networking.exceptions import HTTPError from ..utils import ( - clean_html, ExtractorError, - int_or_none, OnDemandPagedList, + clean_html, + int_or_none, parse_age_limit, str_or_none, try_get, @@ -30,7 +27,7 @@ def _call_api(self, resource, resource_key, resource_id, locale, fields, args='' %s(locale: "%s", %s: "%s"%s) { %s } -}''' % (resource, locale, resource_key, resource_id, args, fields), +}''' % (resource, locale, resource_key, resource_id, args, fields), # noqa: UP031 })['data'][resource] @@ -129,7 +126,7 @@ def _real_extract(self, url): query.update({ 'exp': exp, - 'sign': hashlib.sha512(('%s:GET:%d' % (video_id, exp)).encode()).hexdigest(), + 'sign': hashlib.sha512(f'{video_id}:GET:{exp}'.encode()).hexdigest(), 'skipadstitching': 1, 'platform': 'desktop', 'rn': random.randint(10000, 100000), @@ -137,20 +134,18 @@ def _real_extract(self, url): try: preplay = self._download_json( - 'https://vms.vice.com/%s/video/preplay/%s' % (locale, video_id), + f'https://vms.vice.com/{locale}/video/preplay/{video_id}', video_id, query=query) except ExtractorError as e: - if isinstance(e.cause, compat_HTTPError) and e.cause.code in (400, 401): - error = json.loads(e.cause.read().decode()) + if isinstance(e.cause, HTTPError) and e.cause.status in (400, 401): + error = json.loads(e.cause.response.read().decode()) error_message = error.get('error_description') or error['details'] - raise ExtractorError('%s said: %s' % ( - self.IE_NAME, error_message), expected=True) + raise ExtractorError(f'{self.IE_NAME} said: {error_message}', expected=True) raise video_data = preplay['video'] formats = self._extract_m3u8_formats( preplay['playURL'], video_id, 'mp4', 'm3u8_native') - self._sort_formats(formats) episode = video_data.get('episode') or {} channel = video_data.get('channel') or {} season = video_data.get('season') or {} @@ -160,7 +155,7 @@ def _real_extract(self, url): cc_url = subtitle.get('url') if not cc_url: continue - language_code = try_get(subtitle, lambda x: x['languages'][0]['language_code'], compat_str) or 'en' + language_code = try_get(subtitle, lambda x: x['languages'][0]['language_code'], str) or 'en' subtitles.setdefault(language_code, []).append({ 'url': cc_url, }) @@ -174,7 +169,7 @@ def _real_extract(self, url): 'duration': int_or_none(video_data.get('video_duration')), 'timestamp': int_or_none(video_data.get('created_at'), 1000), 'age_limit': parse_age_limit(video_data.get('video_rating') or rating), - 'series': try_get(video_data, lambda x: x['show']['base']['display_title'], compat_str), + 'series': try_get(video_data, lambda x: x['show']['base']['display_title'], str), 'episode_number': int_or_none(episode.get('episode_number')), 'episode_id': str_or_none(episode.get('id') or video_data.get('episode_id')), 'season_number': int_or_none(season.get('season_number')), @@ -205,7 +200,7 @@ class ViceShowIE(ViceBaseIE): def _fetch_page(self, locale, show_id, page): videos = self._call_api('videos', 'show_id', show_id, locale, '''body id - url''', ', page: %d, per_page: %d' % (page + 1, self._PAGE_SIZE)) + url''', f', page: {page + 1}, per_page: {self._PAGE_SIZE}') for video in videos: yield self.url_result( video['url'], ViceIE.ie_key(), video.get('id')) @@ -227,7 +222,7 @@ def _real_extract(self, url): class ViceArticleIE(ViceBaseIE): IE_NAME = 'vice:article' - _VALID_URL = r'https://(?:www\.)?vice\.com/(?P[^/]+)/article/(?:[0-9a-z]{6}/)?(?P[^?#]+)' + _VALID_URL = r'https?://(?:www\.)?vice\.com/(?P[^/]+)/article/(?:[0-9a-z]{6}/)?(?P[^?#]+)' _TESTS = [{ 'url': 'https://www.vice.com/en_us/article/on-set-with-the-woman-making-mormon-porn-in-utah', @@ -305,12 +300,6 @@ def _url_res(video_url, ie_key): if vice_url: return _url_res(vice_url, ViceIE.ie_key()) - embed_code = self._search_regex( - r'embedCode=([^&\'"]+)', body, - 'ooyala embed code', default=None) - if embed_code: - return _url_res('ooyala:%s' % embed_code, 'Ooyala') - youtube_url = YoutubeIE._extract_url(body) if youtube_url: return _url_res(youtube_url, YoutubeIE.ie_key())