mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	[extractor] Deprecate _sort_formats
				
					
				
			This commit is contained in:
		| @@ -41,7 +41,9 @@ class InfoExtractorTestRequestHandler(http.server.BaseHTTPRequestHandler): | ||||
| 
 | ||||
| 
 | ||||
| class DummyIE(InfoExtractor): | ||||
|     pass | ||||
|     def _sort_formats(self, formats, field_preference=[]): | ||||
|         self._downloader.sort_formats( | ||||
|             {'formats': formats, '_format_sort_fields': field_preference}) | ||||
| 
 | ||||
| 
 | ||||
| class TestInfoExtractor(unittest.TestCase): | ||||
|   | ||||
| @@ -68,8 +68,7 @@ class TestFormatSelection(unittest.TestCase): | ||||
|             {'ext': 'mp4', 'height': 460, 'url': TEST_URL}, | ||||
|         ] | ||||
|         info_dict = _make_result(formats) | ||||
|         yie = YoutubeIE(ydl) | ||||
|         yie._sort_formats(info_dict['formats']) | ||||
|         ydl.sort_formats(info_dict) | ||||
|         ydl.process_ie_result(info_dict) | ||||
|         downloaded = ydl.downloaded_info_dicts[0] | ||||
|         self.assertEqual(downloaded['ext'], 'webm') | ||||
| @@ -82,8 +81,7 @@ class TestFormatSelection(unittest.TestCase): | ||||
|             {'ext': 'mp4', 'height': 1080, 'url': TEST_URL}, | ||||
|         ] | ||||
|         info_dict['formats'] = formats | ||||
|         yie = YoutubeIE(ydl) | ||||
|         yie._sort_formats(info_dict['formats']) | ||||
|         ydl.sort_formats(info_dict) | ||||
|         ydl.process_ie_result(info_dict) | ||||
|         downloaded = ydl.downloaded_info_dicts[0] | ||||
|         self.assertEqual(downloaded['ext'], 'mp4') | ||||
| @@ -97,8 +95,7 @@ class TestFormatSelection(unittest.TestCase): | ||||
|             {'ext': 'flv', 'height': 720, 'url': TEST_URL}, | ||||
|         ] | ||||
|         info_dict['formats'] = formats | ||||
|         yie = YoutubeIE(ydl) | ||||
|         yie._sort_formats(info_dict['formats']) | ||||
|         ydl.sort_formats(info_dict) | ||||
|         ydl.process_ie_result(info_dict) | ||||
|         downloaded = ydl.downloaded_info_dicts[0] | ||||
|         self.assertEqual(downloaded['ext'], 'mp4') | ||||
| @@ -110,15 +107,14 @@ class TestFormatSelection(unittest.TestCase): | ||||
|             {'ext': 'webm', 'height': 720, 'url': TEST_URL}, | ||||
|         ] | ||||
|         info_dict['formats'] = formats | ||||
|         yie = YoutubeIE(ydl) | ||||
|         yie._sort_formats(info_dict['formats']) | ||||
|         ydl.sort_formats(info_dict) | ||||
|         ydl.process_ie_result(info_dict) | ||||
|         downloaded = ydl.downloaded_info_dicts[0] | ||||
|         self.assertEqual(downloaded['ext'], 'webm') | ||||
| 
 | ||||
|     def test_format_selection(self): | ||||
|         formats = [ | ||||
|             {'format_id': '35', 'ext': 'mp4', 'preference': 1, 'url': TEST_URL}, | ||||
|             {'format_id': '35', 'ext': 'mp4', 'preference': 0, 'url': TEST_URL}, | ||||
|             {'format_id': 'example-with-dashes', 'ext': 'webm', 'preference': 1, 'url': TEST_URL}, | ||||
|             {'format_id': '45', 'ext': 'webm', 'preference': 2, 'url': TEST_URL}, | ||||
|             {'format_id': '47', 'ext': 'webm', 'preference': 3, 'url': TEST_URL}, | ||||
| @@ -186,22 +182,19 @@ class TestFormatSelection(unittest.TestCase): | ||||
| 
 | ||||
|         info_dict = _make_result(formats) | ||||
|         ydl = YDL({'format': 'best'}) | ||||
|         ie = YoutubeIE(ydl) | ||||
|         ie._sort_formats(info_dict['formats']) | ||||
|         ydl.sort_formats(info_dict) | ||||
|         ydl.process_ie_result(copy.deepcopy(info_dict)) | ||||
|         downloaded = ydl.downloaded_info_dicts[0] | ||||
|         self.assertEqual(downloaded['format_id'], 'aac-64') | ||||
| 
 | ||||
|         ydl = YDL({'format': 'mp3'}) | ||||
|         ie = YoutubeIE(ydl) | ||||
|         ie._sort_formats(info_dict['formats']) | ||||
|         ydl.sort_formats(info_dict) | ||||
|         ydl.process_ie_result(copy.deepcopy(info_dict)) | ||||
|         downloaded = ydl.downloaded_info_dicts[0] | ||||
|         self.assertEqual(downloaded['format_id'], 'mp3-64') | ||||
| 
 | ||||
|         ydl = YDL({'prefer_free_formats': True}) | ||||
|         ie = YoutubeIE(ydl) | ||||
|         ie._sort_formats(info_dict['formats']) | ||||
|         ydl.sort_formats(info_dict) | ||||
|         ydl.process_ie_result(copy.deepcopy(info_dict)) | ||||
|         downloaded = ydl.downloaded_info_dicts[0] | ||||
|         self.assertEqual(downloaded['format_id'], 'ogg-64') | ||||
| @@ -346,8 +339,7 @@ class TestFormatSelection(unittest.TestCase): | ||||
| 
 | ||||
|         info_dict = _make_result(list(formats_order), extractor='youtube') | ||||
|         ydl = YDL({'format': 'bestvideo+bestaudio'}) | ||||
|         yie = YoutubeIE(ydl) | ||||
|         yie._sort_formats(info_dict['formats']) | ||||
|         ydl.sort_formats(info_dict) | ||||
|         ydl.process_ie_result(info_dict) | ||||
|         downloaded = ydl.downloaded_info_dicts[0] | ||||
|         self.assertEqual(downloaded['format_id'], '248+172') | ||||
| @@ -355,40 +347,35 @@ class TestFormatSelection(unittest.TestCase): | ||||
| 
 | ||||
|         info_dict = _make_result(list(formats_order), extractor='youtube') | ||||
|         ydl = YDL({'format': 'bestvideo[height>=999999]+bestaudio/best'}) | ||||
|         yie = YoutubeIE(ydl) | ||||
|         yie._sort_formats(info_dict['formats']) | ||||
|         ydl.sort_formats(info_dict) | ||||
|         ydl.process_ie_result(info_dict) | ||||
|         downloaded = ydl.downloaded_info_dicts[0] | ||||
|         self.assertEqual(downloaded['format_id'], '38') | ||||
| 
 | ||||
|         info_dict = _make_result(list(formats_order), extractor='youtube') | ||||
|         ydl = YDL({'format': 'bestvideo/best,bestaudio'}) | ||||
|         yie = YoutubeIE(ydl) | ||||
|         yie._sort_formats(info_dict['formats']) | ||||
|         ydl.sort_formats(info_dict) | ||||
|         ydl.process_ie_result(info_dict) | ||||
|         downloaded_ids = [info['format_id'] for info in ydl.downloaded_info_dicts] | ||||
|         self.assertEqual(downloaded_ids, ['137', '141']) | ||||
| 
 | ||||
|         info_dict = _make_result(list(formats_order), extractor='youtube') | ||||
|         ydl = YDL({'format': '(bestvideo[ext=mp4],bestvideo[ext=webm])+bestaudio'}) | ||||
|         yie = YoutubeIE(ydl) | ||||
|         yie._sort_formats(info_dict['formats']) | ||||
|         ydl.sort_formats(info_dict) | ||||
|         ydl.process_ie_result(info_dict) | ||||
|         downloaded_ids = [info['format_id'] for info in ydl.downloaded_info_dicts] | ||||
|         self.assertEqual(downloaded_ids, ['137+141', '248+141']) | ||||
| 
 | ||||
|         info_dict = _make_result(list(formats_order), extractor='youtube') | ||||
|         ydl = YDL({'format': '(bestvideo[ext=mp4],bestvideo[ext=webm])[height<=720]+bestaudio'}) | ||||
|         yie = YoutubeIE(ydl) | ||||
|         yie._sort_formats(info_dict['formats']) | ||||
|         ydl.sort_formats(info_dict) | ||||
|         ydl.process_ie_result(info_dict) | ||||
|         downloaded_ids = [info['format_id'] for info in ydl.downloaded_info_dicts] | ||||
|         self.assertEqual(downloaded_ids, ['136+141', '247+141']) | ||||
| 
 | ||||
|         info_dict = _make_result(list(formats_order), extractor='youtube') | ||||
|         ydl = YDL({'format': '(bestvideo[ext=none]/bestvideo[ext=webm])+bestaudio'}) | ||||
|         yie = YoutubeIE(ydl) | ||||
|         yie._sort_formats(info_dict['formats']) | ||||
|         ydl.sort_formats(info_dict) | ||||
|         ydl.process_ie_result(info_dict) | ||||
|         downloaded_ids = [info['format_id'] for info in ydl.downloaded_info_dicts] | ||||
|         self.assertEqual(downloaded_ids, ['248+141']) | ||||
| @@ -396,16 +383,14 @@ class TestFormatSelection(unittest.TestCase): | ||||
|         for f1, f2 in zip(formats_order, formats_order[1:]): | ||||
|             info_dict = _make_result([f1, f2], extractor='youtube') | ||||
|             ydl = YDL({'format': 'best/bestvideo'}) | ||||
|             yie = YoutubeIE(ydl) | ||||
|             yie._sort_formats(info_dict['formats']) | ||||
|             ydl.sort_formats(info_dict) | ||||
|             ydl.process_ie_result(info_dict) | ||||
|             downloaded = ydl.downloaded_info_dicts[0] | ||||
|             self.assertEqual(downloaded['format_id'], f1['format_id']) | ||||
| 
 | ||||
|             info_dict = _make_result([f2, f1], extractor='youtube') | ||||
|             ydl = YDL({'format': 'best/bestvideo'}) | ||||
|             yie = YoutubeIE(ydl) | ||||
|             yie._sort_formats(info_dict['formats']) | ||||
|             ydl.sort_formats(info_dict) | ||||
|             ydl.process_ie_result(info_dict) | ||||
|             downloaded = ydl.downloaded_info_dicts[0] | ||||
|             self.assertEqual(downloaded['format_id'], f1['format_id']) | ||||
| @@ -480,7 +465,7 @@ class TestFormatSelection(unittest.TestCase): | ||||
|         for f in formats: | ||||
|             f['url'] = 'http://_/' | ||||
|             f['ext'] = 'unknown' | ||||
|         info_dict = _make_result(formats) | ||||
|         info_dict = _make_result(formats, _format_sort_fields=('id', )) | ||||
| 
 | ||||
|         ydl = YDL({'format': 'best[filesize<3000]'}) | ||||
|         ydl.process_ie_result(info_dict) | ||||
|   | ||||
| @@ -155,8 +155,6 @@ class ABCIE(InfoExtractor): | ||||
|                 'format_id': format_id | ||||
|             }) | ||||
| 
 | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': video_id, | ||||
|             'title': self._og_search_title(webpage), | ||||
| @@ -221,7 +219,6 @@ class ABCIViewIE(InfoExtractor): | ||||
|                 entry_protocol='m3u8_native', m3u8_id='hls', fatal=False) | ||||
|             if formats: | ||||
|                 break | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         subtitles = {} | ||||
|         src_vtt = stream.get('captions', {}).get('src-vtt') | ||||
|   | ||||
| @@ -78,7 +78,6 @@ class ABCOTVSIE(InfoExtractor): | ||||
|                 'url': mp4_url, | ||||
|                 'width': 640, | ||||
|             }) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         image = video.get('image') or {} | ||||
| 
 | ||||
| @@ -119,7 +118,6 @@ class ABCOTVSClipsIE(InfoExtractor): | ||||
|         title = video_data['title'] | ||||
|         formats = self._extract_m3u8_formats( | ||||
|             video_data['videoURL'].split('?')[0], video_id, 'mp4') | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': video_id, | ||||
|   | ||||
| @@ -27,7 +27,6 @@ class AcFunVideoBaseIE(InfoExtractor): | ||||
|                     **parse_codecs(video.get('codecs', '')) | ||||
|                 }) | ||||
| 
 | ||||
|         self._sort_formats(formats) | ||||
|         return { | ||||
|             'id': video_id, | ||||
|             'formats': formats, | ||||
|   | ||||
| @@ -235,7 +235,6 @@ Format: Marked,Start,End,Style,Name,MarginL,MarginR,MarginV,Effect,Text''' | ||||
|                     for f in m3u8_formats: | ||||
|                         f['language'] = 'fr' | ||||
|                 formats.extend(m3u8_formats) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         video = (self._download_json( | ||||
|             self._API_BASE_URL + 'video/%s' % video_id, video_id, | ||||
|   | ||||
| @@ -70,7 +70,6 @@ class AdobeTVBaseIE(InfoExtractor): | ||||
|                     }) | ||||
|                     s3_extracted = True | ||||
|             formats.append(f) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': video_id, | ||||
| @@ -269,7 +268,6 @@ class AdobeTVVideoIE(AdobeTVBaseIE): | ||||
|                 'width': int_or_none(source.get('width') or None), | ||||
|                 'url': source_src, | ||||
|             }) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         # For both metadata and downloaded files the duration varies among | ||||
|         # formats. I just pick the max one | ||||
|   | ||||
| @@ -180,7 +180,6 @@ class AdultSwimIE(TurnerBaseIE): | ||||
|                         info['subtitles'].setdefault('en', []).append({ | ||||
|                             'url': asset_url, | ||||
|                         }) | ||||
|             self._sort_formats(info['formats']) | ||||
| 
 | ||||
|             return info | ||||
|         else: | ||||
|   | ||||
| @@ -62,7 +62,6 @@ class AENetworksBaseIE(ThePlatformIE):  # XXX: Do not subclass from concrete IE | ||||
|             subtitles = self._merge_subtitles(subtitles, tp_subtitles) | ||||
|         if last_e and not formats: | ||||
|             raise last_e | ||||
|         self._sort_formats(formats) | ||||
|         return { | ||||
|             'id': video_id, | ||||
|             'formats': formats, | ||||
|   | ||||
| @@ -338,7 +338,6 @@ class AfreecaTVIE(InfoExtractor): | ||||
|                     }] | ||||
|                 if not formats and not self.get_param('ignore_no_formats'): | ||||
|                     continue | ||||
|                 self._sort_formats(formats) | ||||
|                 file_info = common_entry.copy() | ||||
|                 file_info.update({ | ||||
|                     'id': format_id, | ||||
| @@ -464,8 +463,6 @@ class AfreecaTVLiveIE(AfreecaTVIE):  # XXX: Do not subclass from concrete IE | ||||
|                     'quality': quality_key(quality_str), | ||||
|                 }) | ||||
| 
 | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         station_info = self._download_json( | ||||
|             'https://st.afreecatv.com/api/get_station_status.php', broadcast_no, | ||||
|             query={'szBjId': broadcaster_id}, fatal=False, | ||||
|   | ||||
| @@ -55,7 +55,6 @@ class WyborczaVideoIE(InfoExtractor): | ||||
|         if meta['files'].get('dash'): | ||||
|             formats.extend(self._extract_mpd_formats(base_url + meta['files']['dash'], video_id)) | ||||
| 
 | ||||
|         self._sort_formats(formats) | ||||
|         return { | ||||
|             'id': video_id, | ||||
|             'formats': formats, | ||||
| @@ -179,7 +178,6 @@ class TokFMPodcastIE(InfoExtractor): | ||||
|                     'acodec': ext, | ||||
|                 }) | ||||
| 
 | ||||
|         self._sort_formats(formats) | ||||
|         return { | ||||
|             'id': media_id, | ||||
|             'formats': formats, | ||||
|   | ||||
| @@ -112,8 +112,6 @@ class AllocineIE(InfoExtractor): | ||||
|                 }) | ||||
|             duration, view_count, timestamp = [None] * 3 | ||||
| 
 | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': video_id, | ||||
|             'display_id': display_id, | ||||
|   | ||||
| @@ -22,7 +22,6 @@ class Alsace20TVBaseIE(InfoExtractor): | ||||
|                 self._extract_smil_formats(fmt_url, video_id, fatal=False) | ||||
|                 if '/smil:_' in fmt_url | ||||
|                 else self._extract_mpd_formats(fmt_url, video_id, mpd_id=res, fatal=False)) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         webpage = (url and self._download_webpage(url, video_id, fatal=False)) or '' | ||||
|         thumbnail = url_or_none(dict_get(info, ('image', 'preview', )) or self._og_search_thumbnail(webpage)) | ||||
|   | ||||
| @@ -63,8 +63,6 @@ class AluraIE(InfoExtractor): | ||||
|                             f['height'] = int('720' if m.group('res') == 'hd' else '480') | ||||
|                 formats.extend(video_format) | ||||
| 
 | ||||
|             self._sort_formats(formats) | ||||
| 
 | ||||
|             return { | ||||
|                 'id': video_id, | ||||
|                 'title': video_title, | ||||
|   | ||||
| @@ -106,7 +106,6 @@ class AMCNetworksIE(ThePlatformIE):  # XXX: Do not subclass from concrete IE | ||||
|         media_url = update_url_query(media_url, query) | ||||
|         formats, subtitles = self._extract_theplatform_smil( | ||||
|             media_url, video_id) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         thumbnails = [] | ||||
|         thumbnail_urls = [properties.get('imageDesktop')] | ||||
|   | ||||
| @@ -84,8 +84,6 @@ class AMPIE(InfoExtractor):  # XXX: Conventionally, base classes should end with | ||||
|                     'ext': ext, | ||||
|                 }) | ||||
| 
 | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         timestamp = unified_timestamp(item.get('pubDate'), ' ') or parse_iso8601(item.get('dc-date')) | ||||
| 
 | ||||
|         return { | ||||
|   | ||||
| @@ -19,7 +19,6 @@ class Ant1NewsGrBaseIE(InfoExtractor): | ||||
|             raise ExtractorError('no source found for %s' % video_id) | ||||
|         formats, subs = (self._extract_m3u8_formats_and_subtitles(source, video_id, 'mp4') | ||||
|                          if determine_ext(source) == 'm3u8' else ([{'url': source}], {})) | ||||
|         self._sort_formats(formats) | ||||
|         thumbnails = scale_thumbnails_to_max_format_width( | ||||
|             formats, [{'url': info['thumb']}], r'(?<=/imgHandler/)\d+') | ||||
|         return { | ||||
|   | ||||
| @@ -354,8 +354,6 @@ class AnvatoIE(InfoExtractor): | ||||
|                 }) | ||||
|             formats.append(a_format) | ||||
| 
 | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         subtitles = {} | ||||
|         for caption in video_data.get('captions', []): | ||||
|             a_caption = { | ||||
|   | ||||
| @@ -119,7 +119,6 @@ class AolIE(YahooIE):  # XXX: Do not subclass from concrete IE | ||||
|                         'height': int_or_none(qs.get('h', [None])[0]), | ||||
|                     }) | ||||
|                 formats.append(f) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': video_id, | ||||
|   | ||||
| @@ -72,7 +72,6 @@ class APAIE(InfoExtractor): | ||||
|                     'format_id': format_id, | ||||
|                     'height': height, | ||||
|                 }) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': video_id, | ||||
|   | ||||
| @@ -73,7 +73,6 @@ class AparatIE(InfoExtractor): | ||||
|                             r'(\d+)[pP]', label or '', 'height', | ||||
|                             default=None)), | ||||
|                     }) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         info = self._search_json_ld(webpage, video_id, default={}) | ||||
| 
 | ||||
|   | ||||
| @@ -120,7 +120,6 @@ class AppleTrailersIE(InfoExtractor): | ||||
|                             'height': int_or_none(size_data.get('height')), | ||||
|                             'language': version[:2], | ||||
|                         }) | ||||
|                 self._sort_formats(formats) | ||||
| 
 | ||||
|                 entries.append({ | ||||
|                     'id': movie + '-' + re.sub(r'[^a-zA-Z0-9]', '', clip_title).lower(), | ||||
| @@ -185,8 +184,6 @@ class AppleTrailersIE(InfoExtractor): | ||||
|                     'height': int_or_none(format['height']), | ||||
|                 }) | ||||
| 
 | ||||
|             self._sort_formats(formats) | ||||
| 
 | ||||
|             playlist.append({ | ||||
|                 '_type': 'video', | ||||
|                 'id': video_id, | ||||
|   | ||||
| @@ -312,7 +312,7 @@ class ArchiveOrgIE(InfoExtractor): | ||||
|                 }) | ||||
| 
 | ||||
|         for entry in entries.values(): | ||||
|             self._sort_formats(entry['formats'], ('source', )) | ||||
|             entry['_format_sort_fields'] = ('source', ) | ||||
| 
 | ||||
|         if len(entries) == 1: | ||||
|             # If there's only one item, use it as the main info dict | ||||
|   | ||||
| @@ -144,7 +144,6 @@ class ArcPublishingIE(InfoExtractor): | ||||
|                     'url': s_url, | ||||
|                     'quality': -10, | ||||
|                 }) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         subtitles = {} | ||||
|         for subtitle in (try_get(video, lambda x: x['subtitles']['urls'], list) or []): | ||||
|   | ||||
| @@ -40,8 +40,6 @@ class ARDMediathekBaseIE(InfoExtractor): | ||||
|                     'This video is not available due to geoblocking', | ||||
|                     countries=self._GEO_COUNTRIES, metadata_available=True) | ||||
| 
 | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         subtitles = {} | ||||
|         subtitle_url = media_info.get('_subtitleUrl') | ||||
|         if subtitle_url: | ||||
| @@ -262,7 +260,6 @@ class ARDMediathekIE(ARDMediathekBaseIE): | ||||
|                     'format_id': fid, | ||||
|                     'url': furl, | ||||
|                 }) | ||||
|             self._sort_formats(formats) | ||||
|             info = { | ||||
|                 'formats': formats, | ||||
|             } | ||||
| @@ -371,7 +368,6 @@ class ARDIE(InfoExtractor): | ||||
|                     continue | ||||
|                 f['url'] = format_url | ||||
|             formats.append(f) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         _SUB_FORMATS = ( | ||||
|             ('./dataTimedText', 'ttml'), | ||||
|   | ||||
| @@ -136,7 +136,6 @@ class ArkenaIE(InfoExtractor): | ||||
|                         elif mime_type == 'application/vnd.ms-sstr+xml': | ||||
|                             formats.extend(self._extract_ism_formats( | ||||
|                                 href, video_id, ism_id='mss', fatal=False)) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': video_id, | ||||
|   | ||||
| @@ -73,7 +73,6 @@ class ArnesIE(InfoExtractor): | ||||
|                 'width': int_or_none(media.get('width')), | ||||
|                 'height': int_or_none(media.get('height')), | ||||
|             }) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         channel = video.get('channel') or {} | ||||
|         channel_id = channel.get('url') | ||||
|   | ||||
| @@ -186,7 +186,6 @@ class ArteTVIE(ArteTVBaseIE): | ||||
| 
 | ||||
|         formats.extend(secondary_formats) | ||||
|         self._remove_duplicate_formats(formats) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         metadata = config['data']['attributes']['metadata'] | ||||
| 
 | ||||
|   | ||||
| @@ -84,7 +84,6 @@ class AtresPlayerIE(InfoExtractor): | ||||
|             elif src_type == 'application/dash+xml': | ||||
|                 formats, subtitles = self._extract_mpd_formats( | ||||
|                     src, video_id, mpd_id='dash', fatal=False) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         heartbeat = episode.get('heartbeat') or {} | ||||
|         omniture = episode.get('omniture') or {} | ||||
|   | ||||
| @@ -49,7 +49,6 @@ class ATVAtIE(InfoExtractor): | ||||
|                     'url': source_url, | ||||
|                     'format_id': protocol, | ||||
|                 }) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': clip_id, | ||||
|   | ||||
| @@ -76,7 +76,6 @@ class AudiMediaIE(InfoExtractor): | ||||
|                         'format_id': 'http-%s' % bitrate, | ||||
|                     }) | ||||
|                 formats.append(f) | ||||
|             self._sort_formats(formats) | ||||
| 
 | ||||
|             return { | ||||
|                 'id': video_id, | ||||
|   | ||||
| @@ -80,8 +80,6 @@ class BanByeIE(BanByeBaseIE): | ||||
|             'url': f'{self._CDN_BASE}/video/{video_id}/{quality}.mp4', | ||||
|         } for quality in data['quality']] | ||||
| 
 | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': video_id, | ||||
|             'title': data.get('title'), | ||||
|   | ||||
| @@ -184,8 +184,6 @@ class BandcampIE(InfoExtractor): | ||||
|                             'acodec': format_id.split('-')[0], | ||||
|                         }) | ||||
| 
 | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         title = '%s - %s' % (artist, track) if artist else track | ||||
| 
 | ||||
|         if not duration: | ||||
| @@ -363,7 +361,6 @@ class BandcampWeeklyIE(BandcampIE):  # XXX: Do not subclass from concrete IE | ||||
|                 'ext': ext, | ||||
|                 'vcodec': 'none', | ||||
|             }) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         title = show.get('audio_title') or 'Bandcamp Weekly' | ||||
|         subtitle = show.get('subtitle') | ||||
|   | ||||
| @@ -135,7 +135,6 @@ query GetCommentReplies($id: String!) { | ||||
|             formats.extend(self._extract_m3u8_formats( | ||||
|                 video_info.get('streamUrl'), video_id, 'mp4', | ||||
|                 entry_protocol='m3u8_native', m3u8_id='hls', live=True)) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': video_id, | ||||
|   | ||||
| @@ -575,8 +575,6 @@ class BBCCoUkIE(InfoExtractor): | ||||
|         else: | ||||
|             programme_id, title, description, duration, formats, subtitles = self._download_playlist(group_id) | ||||
| 
 | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': programme_id, | ||||
|             'title': title, | ||||
| @@ -890,7 +888,6 @@ class BBCIE(BBCCoUkIE):  # XXX: Do not subclass from concrete IE | ||||
|     def _extract_from_playlist_sxml(self, url, playlist_id, timestamp): | ||||
|         programme_id, title, description, duration, formats, subtitles = \ | ||||
|             self._process_legacy_playlist_url(url, playlist_id) | ||||
|         self._sort_formats(formats) | ||||
|         return { | ||||
|             'id': programme_id, | ||||
|             'title': title, | ||||
| @@ -954,7 +951,6 @@ class BBCIE(BBCCoUkIE):  # XXX: Do not subclass from concrete IE | ||||
|                             duration = int_or_none(items[0].get('duration')) | ||||
|                             programme_id = items[0].get('vpid') | ||||
|                             formats, subtitles = self._download_media_selector(programme_id) | ||||
|                             self._sort_formats(formats) | ||||
|                             entries.append({ | ||||
|                                 'id': programme_id, | ||||
|                                 'title': title, | ||||
| @@ -991,7 +987,6 @@ class BBCIE(BBCCoUkIE):  # XXX: Do not subclass from concrete IE | ||||
|                                         continue | ||||
|                                     raise | ||||
|                             if entry: | ||||
|                                 self._sort_formats(entry['formats']) | ||||
|                                 entries.append(entry) | ||||
| 
 | ||||
|         if entries: | ||||
| @@ -1015,7 +1010,6 @@ class BBCIE(BBCCoUkIE):  # XXX: Do not subclass from concrete IE | ||||
| 
 | ||||
|         if programme_id: | ||||
|             formats, subtitles = self._download_media_selector(programme_id) | ||||
|             self._sort_formats(formats) | ||||
|             # digitalData may be missing (e.g. http://www.bbc.com/autos/story/20130513-hyundais-rock-star) | ||||
|             digital_data = self._parse_json( | ||||
|                 self._search_regex( | ||||
| @@ -1047,7 +1041,6 @@ class BBCIE(BBCCoUkIE):  # XXX: Do not subclass from concrete IE | ||||
|             if version_id: | ||||
|                 title = smp_data['title'] | ||||
|                 formats, subtitles = self._download_media_selector(version_id) | ||||
|                 self._sort_formats(formats) | ||||
|                 image_url = smp_data.get('holdingImageURL') | ||||
|                 display_date = init_data.get('displayDate') | ||||
|                 topic_title = init_data.get('topicTitle') | ||||
| @@ -1089,7 +1082,6 @@ class BBCIE(BBCCoUkIE):  # XXX: Do not subclass from concrete IE | ||||
|                     continue | ||||
|                 title = lead_media.get('title') or self._og_search_title(webpage) | ||||
|                 formats, subtitles = self._download_media_selector(programme_id) | ||||
|                 self._sort_formats(formats) | ||||
|                 description = lead_media.get('summary') | ||||
|                 uploader = lead_media.get('masterBrand') | ||||
|                 uploader_id = lead_media.get('mid') | ||||
| @@ -1118,7 +1110,6 @@ class BBCIE(BBCCoUkIE):  # XXX: Do not subclass from concrete IE | ||||
|             if current_programme and programme_id and current_programme.get('type') == 'playable_item': | ||||
|                 title = current_programme.get('titles', {}).get('tertiary') or playlist_title | ||||
|                 formats, subtitles = self._download_media_selector(programme_id) | ||||
|                 self._sort_formats(formats) | ||||
|                 synopses = current_programme.get('synopses') or {} | ||||
|                 network = current_programme.get('network') or {} | ||||
|                 duration = int_or_none( | ||||
| @@ -1151,7 +1142,6 @@ class BBCIE(BBCCoUkIE):  # XXX: Do not subclass from concrete IE | ||||
|             clip_title = clip.get('title') | ||||
|             if clip_vpid and clip_title: | ||||
|                 formats, subtitles = self._download_media_selector(clip_vpid) | ||||
|                 self._sort_formats(formats) | ||||
|                 return { | ||||
|                     'id': clip_vpid, | ||||
|                     'title': clip_title, | ||||
| @@ -1173,7 +1163,6 @@ class BBCIE(BBCCoUkIE):  # XXX: Do not subclass from concrete IE | ||||
|                     if not programme_id: | ||||
|                         continue | ||||
|                     formats, subtitles = self._download_media_selector(programme_id) | ||||
|                     self._sort_formats(formats) | ||||
|                     entries.append({ | ||||
|                         'id': programme_id, | ||||
|                         'title': playlist_title, | ||||
| @@ -1205,7 +1194,6 @@ class BBCIE(BBCCoUkIE):  # XXX: Do not subclass from concrete IE | ||||
|                     if not (item_id and item_title): | ||||
|                         continue | ||||
|                     formats, subtitles = self._download_media_selector(item_id) | ||||
|                     self._sort_formats(formats) | ||||
|                     item_desc = None | ||||
|                     blocks = try_get(media, lambda x: x['summary']['blocks'], list) | ||||
|                     if blocks: | ||||
| @@ -1306,7 +1294,6 @@ class BBCIE(BBCCoUkIE):  # XXX: Do not subclass from concrete IE | ||||
|             formats, subtitles = self._extract_from_media_meta(media_meta, playlist_id) | ||||
|             if not formats and not self.get_param('ignore_no_formats'): | ||||
|                 continue | ||||
|             self._sort_formats(formats) | ||||
| 
 | ||||
|             video_id = media_meta.get('externalId') | ||||
|             if not video_id: | ||||
|   | ||||
| @@ -74,7 +74,6 @@ class BeatportIE(InfoExtractor): | ||||
|                 fmt['abr'] = 96 | ||||
|                 fmt['asr'] = 44100 | ||||
|             formats.append(fmt) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         images = [] | ||||
|         for name, info in track['images'].items(): | ||||
|   | ||||
| @@ -76,8 +76,6 @@ class BeegIE(InfoExtractor): | ||||
|                 f['height'] = height | ||||
|             formats.extend(current_formats) | ||||
| 
 | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': video_id, | ||||
|             'display_id': first_fact.get('id'), | ||||
|   | ||||
| @@ -63,8 +63,6 @@ class BigflixIE(InfoExtractor): | ||||
|                     'url': decode_url(file_url), | ||||
|                 }) | ||||
| 
 | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         description = self._html_search_meta('description', webpage) | ||||
| 
 | ||||
|         return { | ||||
|   | ||||
| @@ -67,7 +67,6 @@ class BilibiliBaseIE(InfoExtractor): | ||||
|             self.to_screen(f'Format(s) {", ".join(format_names[i] for i in missing_formats)} are missing; ' | ||||
|                            f'you have to login or become premium member to download them. {self._login_hint()}') | ||||
| 
 | ||||
|         self._sort_formats(formats) | ||||
|         return formats | ||||
| 
 | ||||
|     def json2srt(self, json_data): | ||||
| @@ -879,7 +878,6 @@ class BiliIntlBaseIE(InfoExtractor): | ||||
|                 'filesize': aud.get('size'), | ||||
|             }) | ||||
| 
 | ||||
|         self._sort_formats(formats) | ||||
|         return formats | ||||
| 
 | ||||
|     def _extract_video_info(self, video_data, *, ep_id=None, aid=None): | ||||
| @@ -1105,7 +1103,6 @@ class BiliLiveIE(InfoExtractor): | ||||
|             }) | ||||
|             for fmt in traverse_obj(stream_data, ('playurl_info', 'playurl', 'stream', ..., 'format', ...)) or []: | ||||
|                 formats.extend(self._parse_formats(qn, fmt)) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': room_id, | ||||
|   | ||||
| @@ -86,7 +86,6 @@ class BIQLEIE(InfoExtractor): | ||||
|                     'height': int_or_none(height), | ||||
|                     'ext': ext, | ||||
|                 }) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         thumbnails = [] | ||||
|         for k, v in item.items(): | ||||
|   | ||||
| @@ -117,7 +117,6 @@ class BitChuteIE(InfoExtractor): | ||||
|             self.raise_no_formats( | ||||
|                 'Video is unavailable. Please make sure this video is playable in the browser ' | ||||
|                 'before reporting this issue.', expected=True, video_id=video_id) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': video_id, | ||||
|   | ||||
| @@ -45,7 +45,6 @@ class BitwaveStreamIE(InfoExtractor): | ||||
|         formats = self._extract_m3u8_formats( | ||||
|             channel['data']['url'], username, | ||||
|             'mp4') | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': username, | ||||
|   | ||||
| @@ -67,7 +67,6 @@ class BloombergIE(InfoExtractor): | ||||
|             else: | ||||
|                 formats.extend(self._extract_f4m_formats( | ||||
|                     stream_url, video_id, f4m_id='hds', fatal=False)) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': video_id, | ||||
|   | ||||
| @@ -21,8 +21,6 @@ class BokeCCBaseIE(InfoExtractor): | ||||
|             'quality': int(quality.attrib['value']), | ||||
|         } for quality in info_xml.findall('./video/quality')] | ||||
| 
 | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return formats | ||||
| 
 | ||||
| 
 | ||||
|   | ||||
| @@ -57,7 +57,6 @@ class BongaCamsIE(InfoExtractor): | ||||
|         formats = self._extract_m3u8_formats( | ||||
|             '%s/hls/stream_%s/playlist.m3u8' % (server_url, uploader_id), | ||||
|             channel_id, 'mp4', m3u8_id='hls', live=True) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': channel_id, | ||||
|   | ||||
| @@ -67,7 +67,6 @@ class BooyahClipsIE(BooyahBaseIE): | ||||
|                 'height': video_data.get('resolution'), | ||||
|                 'preference': -10, | ||||
|             })) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': video_id, | ||||
|   | ||||
| @@ -79,8 +79,6 @@ class BoxIE(InfoExtractor): | ||||
|                 'url': update_url_query(authenticated_download_url, query), | ||||
|             }) | ||||
| 
 | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         creator = f.get('created_by') or {} | ||||
| 
 | ||||
|         return { | ||||
|   | ||||
| @@ -48,8 +48,6 @@ class BpbIE(InfoExtractor): | ||||
|                 'format_id': '%s-%s' % (quality, determine_ext(video_url)), | ||||
|             }) | ||||
| 
 | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': video_id, | ||||
|             'formats': formats, | ||||
|   | ||||
| @@ -157,7 +157,6 @@ class BRIE(InfoExtractor): | ||||
|                         'format_id': 'rtmp-%s' % asset_type, | ||||
|                     }) | ||||
|                     formats.append(rtmp_format_info) | ||||
|         self._sort_formats(formats) | ||||
|         return formats | ||||
| 
 | ||||
|     def _extract_thumbnails(self, variants, base_url): | ||||
| @@ -272,7 +271,6 @@ class BRMediathekIE(InfoExtractor): | ||||
|                     'tbr': tbr, | ||||
|                     'filesize': int_or_none(node.get('fileSize')), | ||||
|                 }) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         subtitles = {} | ||||
|         for edge in clip.get('captionFiles', {}).get('edges', []): | ||||
|   | ||||
| @@ -63,7 +63,6 @@ class BreakIE(InfoExtractor): | ||||
|                 'format_id': 'http-%d' % bitrate if bitrate else 'http', | ||||
|                 'tbr': bitrate, | ||||
|             }) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         title = self._search_regex( | ||||
|             (r'title["\']\s*:\s*(["\'])(?P<value>(?:(?!\1).)+)\1', | ||||
|   | ||||
| @@ -24,7 +24,6 @@ class BreitBartIE(InfoExtractor): | ||||
|         webpage = self._download_webpage(url, video_id) | ||||
| 
 | ||||
|         formats = self._extract_m3u8_formats(f'https://cdn.jwplayer.com/manifests/{video_id}.m3u8', video_id, ext='mp4') | ||||
|         self._sort_formats(formats) | ||||
|         return { | ||||
|             'id': video_id, | ||||
|             'title': self._generic_title('', webpage), | ||||
|   | ||||
| @@ -546,8 +546,6 @@ class BrightcoveNewIE(AdobePassIE): | ||||
|                 self.raise_no_formats( | ||||
|                     error.get('message') or error.get('error_subcode') or error['error_code'], expected=True) | ||||
| 
 | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         for f in formats: | ||||
|             f.setdefault('http_headers', {}).update(headers) | ||||
| 
 | ||||
|   | ||||
| @@ -108,7 +108,6 @@ class BYUtvIE(InfoExtractor): | ||||
|                 'thumbnail': ep.get('imageThumbnail'), | ||||
|                 'duration': parse_duration(ep.get('length')), | ||||
|             }) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return merge_dicts(info, { | ||||
|             'id': video_id, | ||||
|   | ||||
| @@ -49,7 +49,6 @@ class C56IE(InfoExtractor): | ||||
|                 'url': f['url'] | ||||
|             } for f in info['rfiles'] | ||||
|         ] | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': info['vid'], | ||||
|   | ||||
| @@ -22,7 +22,6 @@ class CableAVIE(InfoExtractor): | ||||
|         video_url = self._og_search_video_url(webpage, secure=False) | ||||
| 
 | ||||
|         formats = self._extract_m3u8_formats(video_url, video_id, 'mp4') | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': video_id, | ||||
|   | ||||
| @@ -54,7 +54,6 @@ class CallinIE(InfoExtractor): | ||||
|         title = episode.get('title') or self._generic_title('', webpage) | ||||
|         url = episode['m3u8'] | ||||
|         formats = self._extract_m3u8_formats(url, display_id, ext='ts') | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         show = traverse_obj(episode, ('show', 'title')) | ||||
|         show_id = traverse_obj(episode, ('show', 'id')) | ||||
|   | ||||
| @@ -27,7 +27,6 @@ class CaltransIE(InfoExtractor): | ||||
|         video_stream = self._search_regex(r'videoStreamURL\s*=\s*"([^"]+)"', global_vars, 'Video Stream URL', fatal=False) | ||||
| 
 | ||||
|         formats = self._extract_m3u8_formats(video_stream, video_id, 'ts', live=True) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': video_id, | ||||
|   | ||||
| @@ -20,7 +20,6 @@ class CAM4IE(InfoExtractor): | ||||
|         m3u8_playlist = self._download_json('https://www.cam4.com/rest/v1.0/profile/{}/streamInfo'.format(channel_id), channel_id).get('cdnURL') | ||||
| 
 | ||||
|         formats = self._extract_m3u8_formats(m3u8_playlist, channel_id, 'mp4', m3u8_id='hls', live=True) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': channel_id, | ||||
|   | ||||
| @@ -84,7 +84,6 @@ class CamModelsIE(InfoExtractor): | ||||
|                 else: | ||||
|                     continue | ||||
|                 formats.append(f) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': user_id, | ||||
|   | ||||
| @@ -47,8 +47,6 @@ class CamsodaIE(InfoExtractor): | ||||
|         if not formats: | ||||
|             self.raise_no_formats('No active streams found', expected=True) | ||||
| 
 | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': video_id, | ||||
|             'title': self._html_extract_title(webpage), | ||||
|   | ||||
| @@ -82,7 +82,6 @@ class CanalAlphaIE(InfoExtractor): | ||||
|             dash_frmts, dash_subs = self._parse_mpd_formats_and_subtitles(manifests['dash']) | ||||
|             formats.extend(dash_frmts) | ||||
|             subtitles = self._merge_subtitles(subtitles, dash_subs) | ||||
|         self._sort_formats(formats) | ||||
|         return { | ||||
|             'id': id, | ||||
|             'title': data_json.get('title').strip(), | ||||
|   | ||||
| @@ -58,8 +58,6 @@ class Canalc2IE(InfoExtractor): | ||||
|         else: | ||||
|             info = self._parse_html5_media_entries(url, webpage, url)[0] | ||||
| 
 | ||||
|         self._sort_formats(info['formats']) | ||||
| 
 | ||||
|         info.update({ | ||||
|             'id': video_id, | ||||
|             'title': title, | ||||
|   | ||||
| @@ -86,7 +86,6 @@ class CanalplusIE(InfoExtractor): | ||||
|                     'format_id': format_id, | ||||
|                     'quality': preference(format_id), | ||||
|                 }) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         thumbnails = [{ | ||||
|             'id': image_id, | ||||
|   | ||||
| @@ -118,7 +118,6 @@ class CanvasIE(InfoExtractor): | ||||
|                     'format_id': format_type, | ||||
|                     'url': format_url, | ||||
|                 }) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         subtitle_urls = data.get('subtitleUrls') | ||||
|         if isinstance(subtitle_urls, list): | ||||
|   | ||||
| @@ -43,7 +43,6 @@ class CarambaTVIE(InfoExtractor): | ||||
|             'height': int_or_none(f.get('height')), | ||||
|             'format_id': format_field(f, 'height', '%sp'), | ||||
|         } for f in video['qualities'] if f.get('fn')] | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         thumbnail = video.get('splash') | ||||
|         duration = float_or_none(try_get( | ||||
|   | ||||
| @@ -380,8 +380,6 @@ class CBCGemIE(InfoExtractor): | ||||
|                 if 'descriptive' in format['format_id'].lower(): | ||||
|                     format['preference'] = -2 | ||||
| 
 | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': video_id, | ||||
|             'title': video_info['title'], | ||||
|   | ||||
| @@ -52,7 +52,6 @@ class CBSBaseIE(ThePlatformFeedIE):  # XXX: Do not subclass from concrete IE | ||||
|             subtitles = self._merge_subtitles(subtitles, tp_subtitles) | ||||
|         if last_e and not formats: | ||||
|             self.raise_no_formats(last_e, True, content_id) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         extra_info.update({ | ||||
|             'id': content_id, | ||||
|   | ||||
| @@ -132,7 +132,6 @@ class CBSNewsLiveVideoIE(InfoExtractor): | ||||
|             }) | ||||
| 
 | ||||
|         formats = self._extract_akamai_formats(video_info['url'], display_id) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': display_id, | ||||
|   | ||||
| @@ -40,7 +40,6 @@ class CBSSportsEmbedIE(InfoExtractor): | ||||
|         formats = self._extract_m3u8_formats( | ||||
|             metadata['files'][0]['url'], video_id, 'mp4', | ||||
|             'm3u8_native', m3u8_id='hls', fatal=False) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         image = video.get('image') | ||||
|         thumbnails = None | ||||
|   | ||||
| @@ -64,7 +64,6 @@ class CCCIE(InfoExtractor): | ||||
|                 'language': language, | ||||
|                 'vcodec': vcodec, | ||||
|             }) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': event_id, | ||||
|   | ||||
| @@ -81,7 +81,6 @@ class CCMAIE(InfoExtractor): | ||||
|                 'url': media_url, | ||||
|                 'vcodec': 'none' if media_type == 'audio' else None, | ||||
|             }) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         informacio = media['informacio'] | ||||
|         title = informacio['titol'] | ||||
|   | ||||
| @@ -170,8 +170,6 @@ class CCTVIE(InfoExtractor): | ||||
|                 hls_url, video_id, 'mp4', entry_protocol='m3u8_native', | ||||
|                 m3u8_id='hls', fatal=False)) | ||||
| 
 | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         uploader = data.get('editer_name') | ||||
|         description = self._html_search_meta( | ||||
|             'description', webpage, default=None) | ||||
|   | ||||
| @@ -151,8 +151,6 @@ class CDAIE(InfoExtractor): | ||||
|             'filesize': quality.get('length'), | ||||
|         } for quality in meta['qualities'] if quality.get('file')] | ||||
| 
 | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': video_id, | ||||
|             'title': meta.get('title'), | ||||
| @@ -304,6 +302,4 @@ class CDAIE(InfoExtractor): | ||||
| 
 | ||||
|             extract_format(webpage, resolution) | ||||
| 
 | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return merge_dicts(info_dict, info) | ||||
|   | ||||
| @@ -50,7 +50,6 @@ class CellebriteIE(InfoExtractor): | ||||
|             f'https://play.vidyard.com/player/{player_uuid}.json', display_id)['payload']['chapters'][0] | ||||
| 
 | ||||
|         formats, subtitles = self._get_formats_and_subtitles(json_data['sources'], display_id) | ||||
|         self._sort_formats(formats) | ||||
|         return { | ||||
|             'id': str(json_data['videoId']), | ||||
|             'title': json_data.get('name') or self._og_search_title(webpage), | ||||
|   | ||||
| @@ -249,9 +249,6 @@ class CeskaTelevizeIE(InfoExtractor): | ||||
|                     'is_live': is_live, | ||||
|                 }) | ||||
| 
 | ||||
|         for e in entries: | ||||
|             self._sort_formats(e['formats']) | ||||
| 
 | ||||
|         if len(entries) == 1: | ||||
|             return entries[0] | ||||
|         return self.playlist_result(entries, playlist_id, playlist_title, playlist_description) | ||||
|   | ||||
| @@ -185,7 +185,6 @@ class Channel9IE(InfoExtractor): | ||||
|             if not formats and not slides and not zip_file: | ||||
|                 self.raise_no_formats( | ||||
|                     'None of recording, slides or zip are available for %s' % content_path) | ||||
|             self._sort_formats(formats) | ||||
| 
 | ||||
|             subtitles = {} | ||||
|             for caption in content_data.get('Captions', []): | ||||
|   | ||||
| @@ -38,8 +38,6 @@ class CharlieRoseIE(InfoExtractor): | ||||
|         info_dict = self._parse_html5_media_entries( | ||||
|             self._PLAYER_BASE % video_id, webpage, video_id, | ||||
|             m3u8_entry_protocol='m3u8_native')[0] | ||||
| 
 | ||||
|         self._sort_formats(info_dict['formats']) | ||||
|         self._remove_duplicate_formats(info_dict['formats']) | ||||
| 
 | ||||
|         info_dict.update({ | ||||
|   | ||||
| @@ -95,7 +95,6 @@ class ChaturbateIE(InfoExtractor): | ||||
|                 # ffmpeg skips segments for fast m3u8 | ||||
|                 preference=-10 if m3u8_id == 'fast' else None, | ||||
|                 m3u8_id=m3u8_id, fatal=False, live=True)) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': video_id, | ||||
|   | ||||
| @@ -32,7 +32,6 @@ class ChingariBaseIE(InfoExtractor): | ||||
|                 'url': base_url + '/apipublic' + media_data['path'], | ||||
|                 'quality': 10, | ||||
|             }) | ||||
|         self._sort_formats(formats) | ||||
|         timestamp = str_to_int(post_data.get('created_at')) | ||||
|         if timestamp: | ||||
|             timestamp = int_or_none(timestamp, 1000) | ||||
|   | ||||
| @@ -47,7 +47,6 @@ class CinchcastIE(InfoExtractor): | ||||
|                 'format_id': 'backup', | ||||
|                 'url': backup_url, | ||||
|             }) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': video_id, | ||||
|   | ||||
| @@ -72,7 +72,6 @@ class CiscoWebexIE(InfoExtractor): | ||||
|                     'vcodec': 'none', | ||||
|                     'acodec': 'mp3', | ||||
|                 }) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': video_id, | ||||
|   | ||||
| @@ -62,7 +62,6 @@ class CliphunterIE(InfoExtractor): | ||||
|                 'height': int_or_none(height), | ||||
|                 'tbr': int_or_none(f.get('br')), | ||||
|             }) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         thumbnail = self._search_regex( | ||||
|             r"var\s+mov_thumb\s*=\s*'([^']+)';", | ||||
|   | ||||
| @@ -51,7 +51,6 @@ class CloudflareStreamIE(InfoExtractor): | ||||
|             'm3u8_native', m3u8_id='hls', fatal=False) | ||||
|         formats.extend(self._extract_mpd_formats( | ||||
|             manifest_base_url + 'mpd', video_id, mpd_id='dash', fatal=False)) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': video_id, | ||||
|   | ||||
| @@ -42,7 +42,6 @@ class ClubicIE(InfoExtractor): | ||||
|             'url': src['src'], | ||||
|             'quality': quality_order(src['streamQuality']), | ||||
|         } for src in sources] | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': video_id, | ||||
|   | ||||
| @@ -60,7 +60,6 @@ class ClypIE(InfoExtractor): | ||||
|                         'format_id': format_id, | ||||
|                         'vcodec': 'none', | ||||
|                     }) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         title = metadata['Title'] | ||||
|         description = metadata.get('Description') | ||||
|   | ||||
| @@ -1699,7 +1699,14 @@ class InfoExtractor: | ||||
|         return FormatSort | ||||
| 
 | ||||
|     def _sort_formats(self, formats, field_preference=[]): | ||||
|         if formats and field_preference: | ||||
|         if not field_preference: | ||||
|             self._downloader.deprecation_warning( | ||||
|                 'yt_dlp.InfoExtractor._sort_formats is deprecated and is no longer required') | ||||
|             return | ||||
|         self._downloader.deprecation_warning( | ||||
|             'yt_dlp.InfoExtractor._sort_formats is deprecated and no longer works as expected. ' | ||||
|             'Return _format_sort_fields in the info_dict instead') | ||||
|         if formats: | ||||
|             formats[0]['__sort_fields'] = field_preference | ||||
| 
 | ||||
|     def _check_formats(self, formats, video_id): | ||||
| @@ -2431,7 +2438,6 @@ class InfoExtractor: | ||||
|                     'width': int_or_none(location.get(xpath_with_ns('s1:width', NS_MAP))), | ||||
|                     'height': int_or_none(location.get(xpath_with_ns('s1:height', NS_MAP))), | ||||
|                 }) | ||||
|             self._sort_formats(formats) | ||||
| 
 | ||||
|             entries.append({ | ||||
|                 'id': playlist_id, | ||||
| @@ -3269,7 +3275,6 @@ class InfoExtractor: | ||||
|                     'url': formats[0]['url'], | ||||
|                 }) | ||||
|             else: | ||||
|                 self._sort_formats(formats) | ||||
|                 entry['formats'] = formats | ||||
|             entries.append(entry) | ||||
|         if len(entries) == 1: | ||||
|   | ||||
| @@ -197,7 +197,6 @@ class CondeNastIE(InfoExtractor): | ||||
|                 'ext': ext, | ||||
|                 'quality': 1 if quality == 'high' else 0, | ||||
|             }) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         subtitles = {} | ||||
|         for t, caption in video_info.get('captions', {}).items(): | ||||
|   | ||||
| @@ -69,8 +69,6 @@ class CONtvIE(InfoExtractor): | ||||
|                 'url': media_mp4_url, | ||||
|             }) | ||||
| 
 | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         subtitles = {} | ||||
|         captions = m_details.get('captions') or {} | ||||
|         for caption_url in captions.values(): | ||||
|   | ||||
| @@ -126,7 +126,6 @@ class CorusIE(ThePlatformFeedIE):  # XXX: Do not subclass from concrete IE | ||||
|                 smil, smil_url, video_id, namespace)) | ||||
|         if not formats and video.get('drm'): | ||||
|             self.report_drm(video_id) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         subtitles = {} | ||||
|         for track in video.get('tracks', []): | ||||
|   | ||||
| @@ -104,8 +104,6 @@ class CoubIE(InfoExtractor): | ||||
|                 'source_preference': preference_key(MOBILE), | ||||
|             }) | ||||
| 
 | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         thumbnail = coub.get('picture') | ||||
|         duration = float_or_none(coub.get('duration')) | ||||
|         timestamp = parse_iso8601(coub.get('published_at') or coub.get('created_at')) | ||||
|   | ||||
| @@ -54,8 +54,6 @@ class CPACIE(InfoExtractor): | ||||
|                 else: | ||||
|                     fmt['language_preference'] = -10 | ||||
| 
 | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         category = str_or_none(content['details']['category_%s_t' % (url_lang, )]) | ||||
| 
 | ||||
|         def is_live(v_type): | ||||
|   | ||||
| @@ -177,7 +177,6 @@ class CrackleIE(InfoExtractor): | ||||
|                 }) | ||||
|         if not formats and has_drm: | ||||
|             self.report_drm(video_id) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         description = media.get('Description') | ||||
|         duration = int_or_none(media.get( | ||||
|   | ||||
| @@ -45,7 +45,6 @@ class CrooksAndLiarsIE(InfoExtractor): | ||||
|             'format_id': item['type'], | ||||
|             'quality': quality(item['type']), | ||||
|         } for item in manifest['flavors'] if item['mime'].startswith('video/')] | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'url': url, | ||||
|   | ||||
| @@ -60,7 +60,6 @@ class CrowdBunkerIE(InfoExtractor): | ||||
|             'width': int_or_none(image.get('width')), | ||||
|         } for image in video_json.get('thumbnails') or [] if image.get('url')] | ||||
| 
 | ||||
|         self._sort_formats(formats) | ||||
|         return { | ||||
|             'id': id, | ||||
|             'title': video_json.get('title'), | ||||
|   | ||||
| @@ -208,7 +208,6 @@ class CrunchyrollBetaIE(CrunchyrollBaseIE): | ||||
|                     f['language'] = stream_response.get('audio_locale') | ||||
|                 f['quality'] = hardsub_preference(hardsub_lang.lower()) | ||||
|             formats.extend(adaptive_formats) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': internal_id, | ||||
|   | ||||
| @@ -218,7 +218,6 @@ class CSpanIE(InfoExtractor): | ||||
|                     path, video_id, 'mp4', entry_protocol='m3u8_native', | ||||
|                     m3u8_id='hls') if determine_ext(path) == 'm3u8' else [{'url': path, }] | ||||
|             add_referer(formats) | ||||
|             self._sort_formats(formats) | ||||
|             entries.append({ | ||||
|                 'id': '%s_%d' % (video_id, partnum + 1), | ||||
|                 'title': ( | ||||
|   | ||||
| @@ -117,7 +117,6 @@ class CuriosityStreamIE(CuriosityStreamBaseIE): | ||||
|                             'format_id': 'http', | ||||
|                         }) | ||||
|                     formats.append(fmt) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         title = media['title'] | ||||
| 
 | ||||
|   | ||||
| @@ -81,7 +81,6 @@ class DaftsexIE(InfoExtractor): | ||||
|                     'height': int_or_none(height), | ||||
|                     'ext': ext, | ||||
|                 }) | ||||
|             self._sort_formats(formats) | ||||
| 
 | ||||
|             return { | ||||
|                 'id': video_id, | ||||
| @@ -117,7 +116,6 @@ class DaftsexIE(InfoExtractor): | ||||
|                     'height': int_or_none(height), | ||||
|                     'ext': ext, | ||||
|                 }) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         thumbnails = [] | ||||
|         for k, v in item.items(): | ||||
|   | ||||
| @@ -63,7 +63,6 @@ class DailyMailIE(InfoExtractor): | ||||
|                 'protocol': protocol, | ||||
|                 'ext': 'mp4' if is_hls else None, | ||||
|             }) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': video_id, | ||||
|   | ||||
| @@ -293,7 +293,6 @@ class DailymotionIE(DailymotionBaseInfoExtractor): | ||||
|             f['url'] = f['url'].split('#')[0] | ||||
|             if not f.get('fps') and f['format_id'].endswith('@60'): | ||||
|                 f['fps'] = 60 | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         subtitles = {} | ||||
|         subtitles_data = try_get(metadata, lambda x: x['subtitles']['data'], dict) or {} | ||||
|   | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user
	 pukkandan
					pukkandan