X-Git-Url: https://jfr.im/git/yt-dlp.git/blobdiff_plain/b85703d11a150967b9430f38ac938c7f41a4ad76..61edf57f8f13f6dfd81154174e647eb5fdd26089:/yt_dlp/extractor/redbee.py diff --git a/yt_dlp/extractor/redbee.py b/yt_dlp/extractor/redbee.py index ee510eb40..d43bb0bab 100644 --- a/yt_dlp/extractor/redbee.py +++ b/yt_dlp/extractor/redbee.py @@ -41,8 +41,8 @@ def _get_bearer_token(self, asset_id, jwt=None): return self._download_json( f'{self._API_URL}/auth/{"gigyaLogin" if jwt else "anonymous"}', - asset_id, data=json.dumps(request).encode('utf-8'), headers={ - 'Content-Type': 'application/json;charset=utf-8' + asset_id, data=json.dumps(request).encode(), headers={ + 'Content-Type': 'application/json;charset=utf-8', })['sessionToken'] def _get_formats_and_subtitles(self, asset_id, **kwargs): @@ -51,26 +51,26 @@ def _get_formats_and_subtitles(self, asset_id, **kwargs): f'{self._API_URL}/entitlement/{asset_id}/play', asset_id, headers={ 'Authorization': f'Bearer {bearer_token}', - 'Accept': 'application/json, text/plain, */*' + 'Accept': 'application/json, text/plain, */*', }) formats, subtitles = [], {} - for format in api_response['formats']: - if not format.get('mediaLocator'): + for format_data in api_response['formats']: + if not format_data.get('mediaLocator'): continue fmts, subs = [], {} - if format.get('format') == 'DASH': + if format_data.get('format') == 'DASH': fmts, subs = self._extract_mpd_formats_and_subtitles( - format['mediaLocator'], asset_id, fatal=False) - elif format.get('format') == 'SMOOTHSTREAMING': + format_data['mediaLocator'], asset_id, fatal=False) + elif format_data.get('format') == 'SMOOTHSTREAMING': fmts, subs = self._extract_ism_formats_and_subtitles( - format['mediaLocator'], asset_id, fatal=False) - elif format.get('format') == 'HLS': + format_data['mediaLocator'], asset_id, fatal=False) + elif format_data.get('format') == 'HLS': fmts, subs = self._extract_m3u8_formats_and_subtitles( - format['mediaLocator'], asset_id, fatal=False) + format_data['mediaLocator'], asset_id, fatal=False) - if format.get('drm'): + if format_data.get('drm'): for f in fmts: f['has_drm'] = True @@ -117,13 +117,10 @@ def _real_extract(self, url): video_id = self._match_id(url) formats, subtitles = self._get_formats_and_subtitles(video_id) - self._sort_formats(formats) video_info = self._download_json( f'https://www.parliamentlive.tv/Event/GetShareVideo/{video_id}', video_id, fatal=False) - self._sort_formats(formats, ['res', 'proto']) - return { 'id': video_id, 'formats': formats, @@ -132,10 +129,12 @@ def _real_extract(self, url): 'thumbnail': traverse_obj(video_info, 'thumbnailUrl'), 'timestamp': traverse_obj( video_info, ('event', 'publishedStartTime'), expected_type=unified_timestamp), + '_format_sort_fields': ('res', 'proto'), } class RTBFIE(RedBeeBaseIE): + _WORKING = False _VALID_URL = r'''(?x) https?://(?:www\.)?rtbf\.be/ (?: @@ -241,12 +240,12 @@ def _perform_login(self, username, password): 'APIKey': self._GIGYA_API_KEY, 'targetEnv': 'jssdk', 'sessionExpiration': '-2', - }).encode('utf-8'), headers={ + }).encode(), headers={ 'Content-Type': 'application/x-www-form-urlencoded', }) if login_response['statusCode'] != 200: - raise ExtractorError('Login failed. Server message: %s' % login_response['errorMessage'], expected=True) + raise ExtractorError('Login failed. Server message: {}'.format(login_response['errorMessage']), expected=True) self._set_cookie('.rtbf.be', self._LOGIN_COOKIE_ID, login_response['sessionInfo']['login_token'], secure=True, expire_time=time.time() + 3600) @@ -288,7 +287,7 @@ def _real_extract(self, url): error = data.get('error') if error: - raise ExtractorError('%s said: %s' % (self.IE_NAME, error), expected=True) + raise ExtractorError(f'{self.IE_NAME} said: {error}', expected=True) provider = data.get('provider') if provider in self._PROVIDERS: @@ -366,7 +365,6 @@ def _real_extract(self, url): formats.extend(fmts) self._merge_subtitles(subs, target=subtitles) - self._sort_formats(formats, ['res', 'proto']) return { 'id': media_id, 'formats': formats, @@ -378,4 +376,5 @@ def _real_extract(self, url): 'series': data.get('programLabel'), 'subtitles': subtitles, 'is_live': is_live, + '_format_sort_fields': ('res', 'proto'), }