]> jfr.im git - yt-dlp.git/blobdiff - yt_dlp/extractor/prosiebensat1.py
[cleanup] Add more ruff rules (#10149)
[yt-dlp.git] / yt_dlp / extractor / prosiebensat1.py
index 307ab81e93db7b7cfb3e4f3afc63bd14d831bdd4..6a3e0971cde6e55792c4dbd00050e2dc9d1a0ab4 100644 (file)
@@ -1,11 +1,7 @@
-# coding: utf-8
-from __future__ import unicode_literals
-
+import hashlib
 import re
 
-from hashlib import sha1
 from .common import InfoExtractor
-from ..compat import compat_str
 from ..utils import (
     ExtractorError,
     determine_ext,
@@ -34,8 +30,8 @@ def _extract_video_info(self, url, clip_id):
                 'ids': clip_id,
             })[0]
 
-        if not self._downloader.params.get('allow_unplayable_formats') and video.get('is_protected') is True:
-            raise ExtractorError('This video is DRM protected.', expected=True)
+        if not self.get_param('allow_unplayable_formats') and video.get('is_protected') is True:
+            self.report_drm(clip_id)
 
         formats = []
         if self._ACCESS_ID:
@@ -45,7 +41,7 @@ def _extract_video_info(self, url, clip_id):
                 'Downloading protocols JSON',
                 headers=self.geo_verification_headers(), query={
                     'access_id': self._ACCESS_ID,
-                    'client_token': sha1((raw_ct).encode()).hexdigest(),
+                    'client_token': hashlib.sha1((raw_ct).encode()).hexdigest(),
                     'video_id': clip_id,
                 }, fatal=False, expected_status=(403,)) or {}
             error = protocols.get('error') or {}
@@ -56,7 +52,7 @@ def _extract_video_info(self, url, clip_id):
                 urls = (self._download_json(
                     self._V4_BASE_URL + 'urls', clip_id, 'Downloading urls JSON', query={
                         'access_id': self._ACCESS_ID,
-                        'client_token': sha1((raw_ct + server_token + self._SUPPORTED_PROTOCOLS).encode()).hexdigest(),
+                        'client_token': hashlib.sha1((raw_ct + server_token + self._SUPPORTED_PROTOCOLS).encode()).hexdigest(),
                         'protocols': self._SUPPORTED_PROTOCOLS,
                         'server_token': server_token,
                         'video_id': clip_id,
@@ -78,12 +74,12 @@ def _extract_video_info(self, url, clip_id):
                             'format_id': protocol,
                         })
         if not formats:
-            source_ids = [compat_str(source['id']) for source in video['sources']]
+            source_ids = [str(source['id']) for source in video['sources']]
 
-            client_id = self._SALT[:2] + sha1(''.join([clip_id, self._SALT, self._TOKEN, client_location, self._SALT, self._CLIENT_NAME]).encode('utf-8')).hexdigest()
+            client_id = self._SALT[:2] + hashlib.sha1(''.join([clip_id, self._SALT, self._TOKEN, client_location, self._SALT, self._CLIENT_NAME]).encode()).hexdigest()
 
             sources = self._download_json(
-                'http://vas.sim-technik.de/vas/live/v2/videos/%s/sources' % clip_id,
+                f'http://vas.sim-technik.de/vas/live/v2/videos/{clip_id}/sources',
                 clip_id, 'Downloading sources JSON', query={
                     'access_token': self._TOKEN,
                     'client_id': client_id,
@@ -99,9 +95,9 @@ def fix_bitrate(bitrate):
                 return (bitrate // 1000) if bitrate % 1000 == 0 else bitrate
 
             for source_id in source_ids:
-                client_id = self._SALT[:2] + sha1(''.join([self._SALT, clip_id, self._TOKEN, server_id, client_location, source_id, self._SALT, self._CLIENT_NAME]).encode('utf-8')).hexdigest()
+                client_id = self._SALT[:2] + hashlib.sha1(''.join([self._SALT, clip_id, self._TOKEN, server_id, client_location, source_id, self._SALT, self._CLIENT_NAME]).encode()).hexdigest()
                 urls = self._download_json(
-                    'http://vas.sim-technik.de/vas/live/v2/videos/%s/sources/url' % clip_id,
+                    f'http://vas.sim-technik.de/vas/live/v2/videos/{clip_id}/sources/url',
                     clip_id, 'Downloading urls JSON', fatal=False, query={
                         'access_token': self._TOKEN,
                         'client_id': client_id,
@@ -144,22 +140,21 @@ def fix_bitrate(bitrate):
                             app = path[:mp4colon_index]
                             play_path = path[mp4colon_index:]
                             formats.append({
-                                'url': '%s/%s' % (mobj.group('url'), app),
+                                'url': '{}/{}'.format(mobj.group('url'), app),
                                 'app': app,
                                 'play_path': play_path,
                                 'player_url': 'http://livepassdl.conviva.com/hf/ver/2.79.0.17083/LivePassModuleMain.swf',
                                 'page_url': 'http://www.prosieben.de',
                                 'tbr': tbr,
                                 'ext': 'flv',
-                                'format_id': 'rtmp%s' % ('-%d' % tbr if tbr else ''),
+                                'format_id': 'rtmp{}'.format(f'-{tbr}' if tbr else ''),
                             })
                         else:
                             formats.append({
                                 'url': source_url,
                                 'tbr': tbr,
-                                'format_id': 'http%s' % ('-%d' % tbr if tbr else ''),
+                                'format_id': 'http{}'.format(f'-{tbr}' if tbr else ''),
                             })
-        self._sort_formats(formats)
 
         return {
             'duration': float_or_none(video.get('duration')),
@@ -497,4 +492,4 @@ def _real_extract(self, url):
             return self._extract_playlist(url, webpage)
         else:
             raise ExtractorError(
-                'Unsupported page type %s' % page_type, expected=True)
+                f'Unsupported page type {page_type}', expected=True)