]> jfr.im git - yt-dlp.git/blobdiff - yt_dlp/extractor/theplatform.py
[cleanup] Add more ruff rules (#10149)
[yt-dlp.git] / yt_dlp / extractor / theplatform.py
index eeb33a6606dbb79ada011c657b4d1f1ac39e7bef..7c1769c2dfd0def159c69ce79e4da8e3f1bc6a7f 100644 (file)
@@ -1,4 +1,3 @@
-import binascii
 import hashlib
 import hmac
 import re
@@ -42,8 +41,7 @@ def _extract_theplatform_smil(self, smil_url, video_id, note='Downloading SMIL d
                 if exception.get('value') == 'GeoLocationBlocked':
                     self.raise_geo_restricted(error_element.attrib['abstract'])
                 elif error_element.attrib['src'].startswith(
-                        'http://link.theplatform.%s/s/errorFiles/Unavailable.'
-                        % self._TP_TLD):
+                        f'http://link.theplatform.{self._TP_TLD}/s/errorFiles/Unavailable.'):
                     raise ExtractorError(
                         error_element.attrib['abstract'], expected=True)
 
@@ -70,7 +68,7 @@ def _extract_theplatform_smil(self, smil_url, video_id, note='Downloading SMIL d
         return formats, subtitles
 
     def _download_theplatform_metadata(self, path, video_id):
-        info_url = 'http://link.theplatform.%s/s/%s?format=preview' % (self._TP_TLD, path)
+        info_url = f'http://link.theplatform.{self._TP_TLD}/s/{path}?format=preview'
         return self._download_json(info_url, video_id)
 
     def _parse_theplatform_metadata(self, info):
@@ -140,7 +138,7 @@ class ThePlatformIE(ThePlatformBaseIE, AdobePassIE):
             <meta\s+
                 property=(["'])(?:og:video(?::(?:secure_)?url)?|twitter:player)\1\s+
                 content=(["'])(?P<url>https?://player\.theplatform\.com/p/.+?)\2''',
-        r'(?s)<(?:iframe|script)[^>]+src=(["\'])(?P<url>(?:https?:)?//player\.theplatform\.com/p/.+?)\1'
+        r'(?s)<(?:iframe|script)[^>]+src=(["\'])(?P<url>(?:https?:)?//player\.theplatform\.com/p/.+?)\1',
     ]
 
     _TESTS = [{
@@ -225,17 +223,14 @@ def _sign_url(url, sig_key, sig_secret, life=600, include_qs=False):
         flags = '10' if include_qs else '00'
         expiration_date = '%x' % (int(time.time()) + life)
 
-        def str_to_hex(str):
-            return binascii.b2a_hex(str.encode('ascii')).decode('ascii')
-
-        def hex_to_bytes(hex):
-            return binascii.a2b_hex(hex.encode('ascii'))
+        def str_to_hex(str_data):
+            return str_data.encode('ascii').hex()
 
         relative_path = re.match(r'https?://link\.theplatform\.com/s/([^?]+)', url).group(1)
-        clear_text = hex_to_bytes(flags + expiration_date + str_to_hex(relative_path))
+        clear_text = bytes.fromhex(flags + expiration_date + str_to_hex(relative_path))
         checksum = hmac.new(sig_key.encode('ascii'), clear_text, hashlib.sha1).hexdigest()
         sig = flags + expiration_date + checksum + str_to_hex(sig_secret)
-        return '%s&sig=%s' % (url, sig)
+        return f'{url}&sig={sig}'
 
     def _real_extract(self, url):
         url, smuggled_data = unsmuggle_url(url, {})
@@ -274,7 +269,7 @@ def _real_extract(self, url):
                     break
             if feed_id is None:
                 raise ExtractorError('Unable to find feed id')
-            return self.url_result('http://feed.theplatform.com/f/%s/%s?byGuid=%s' % (
+            return self.url_result('http://feed.theplatform.com/f/{}/{}?byGuid={}'.format(
                 provider_id, feed_id, qs_dict['guid'][0]))
 
         if smuggled_data.get('force_smil_url', False):
@@ -298,13 +293,10 @@ def _real_extract(self, url):
             config_url = config_url.replace('swf/', 'config/')
             config_url = config_url.replace('onsite/', 'onsite/config/')
             config = self._download_json(config_url, video_id, 'Downloading config')
-            if 'releaseUrl' in config:
-                release_url = config['releaseUrl']
-            else:
-                release_url = 'http://link.theplatform.com/s/%s?mbr=true' % path
+            release_url = config.get('releaseUrl') or f'http://link.theplatform.com/s/{path}?mbr=true'
             smil_url = release_url + '&formats=MPEG4&manifest=f4m'
         else:
-            smil_url = 'http://link.theplatform.com/s/%s?mbr=true' % path
+            smil_url = f'http://link.theplatform.com/s/{path}?mbr=true'
 
         sig = smuggled_data.get('sig')
         if sig:
@@ -387,7 +379,7 @@ def _extract_feed_info(self, provider_id, feed_id, filter_query, video_id, custo
                 if asset_type in asset_types_query:
                     query.update(asset_types_query[asset_type])
                 cur_formats, cur_subtitles = self._extract_theplatform_smil(update_url_query(
-                    main_smil_url or smil_url, query), video_id, 'Downloading SMIL data for %s' % asset_type)
+                    main_smil_url or smil_url, query), video_id, f'Downloading SMIL data for {asset_type}')
                 formats.extend(cur_formats)
                 subtitles = self._merge_subtitles(subtitles, cur_subtitles)
 
@@ -400,7 +392,7 @@ def _extract_feed_info(self, provider_id, feed_id, filter_query, video_id, custo
         timestamp = int_or_none(entry.get('media$availableDate'), scale=1000)
         categories = [item['media$name'] for item in entry.get('media$categories', [])]
 
-        ret = self._extract_theplatform_metadata('%s/%s' % (provider_id, first_video_id), video_id)
+        ret = self._extract_theplatform_metadata(f'{provider_id}/{first_video_id}', video_id)
         subtitles = self._merge_subtitles(subtitles, ret['subtitles'])
         ret.update({
             'id': video_id,