mirror of https://github.com/yt-dlp/yt-dlp.git
[core] Populate format sorting fields before dependent fields (#11353)
Authored by: Grub4K
This commit is contained in:
parent
21cdcf03a2
commit
5c880ef42e
|
@ -2849,13 +2849,10 @@ class YoutubeDL:
|
||||||
sanitize_string_field(fmt, 'format_id')
|
sanitize_string_field(fmt, 'format_id')
|
||||||
sanitize_numeric_fields(fmt)
|
sanitize_numeric_fields(fmt)
|
||||||
fmt['url'] = sanitize_url(fmt['url'])
|
fmt['url'] = sanitize_url(fmt['url'])
|
||||||
if fmt.get('ext') is None:
|
FormatSorter._fill_sorting_fields(fmt)
|
||||||
fmt['ext'] = determine_ext(fmt['url']).lower()
|
|
||||||
if fmt['ext'] in ('aac', 'opus', 'mp3', 'flac', 'vorbis'):
|
if fmt['ext'] in ('aac', 'opus', 'mp3', 'flac', 'vorbis'):
|
||||||
if fmt.get('acodec') is None:
|
if fmt.get('acodec') is None:
|
||||||
fmt['acodec'] = fmt['ext']
|
fmt['acodec'] = fmt['ext']
|
||||||
if fmt.get('protocol') is None:
|
|
||||||
fmt['protocol'] = determine_protocol(fmt)
|
|
||||||
if fmt.get('resolution') is None:
|
if fmt.get('resolution') is None:
|
||||||
fmt['resolution'] = self.format_resolution(fmt, default=None)
|
fmt['resolution'] = self.format_resolution(fmt, default=None)
|
||||||
if fmt.get('dynamic_range') is None and fmt.get('vcodec') != 'none':
|
if fmt.get('dynamic_range') is None and fmt.get('vcodec') != 'none':
|
||||||
|
|
|
@ -5578,14 +5578,15 @@ class FormatSorter:
|
||||||
value = get_value(field)
|
value = get_value(field)
|
||||||
return self._calculate_field_preference_from_value(format_, field, type_, value)
|
return self._calculate_field_preference_from_value(format_, field, type_, value)
|
||||||
|
|
||||||
def calculate_preference(self, format):
|
@staticmethod
|
||||||
|
def _fill_sorting_fields(format):
|
||||||
# Determine missing protocol
|
# Determine missing protocol
|
||||||
if not format.get('protocol'):
|
if not format.get('protocol'):
|
||||||
format['protocol'] = determine_protocol(format)
|
format['protocol'] = determine_protocol(format)
|
||||||
|
|
||||||
# Determine missing ext
|
# Determine missing ext
|
||||||
if not format.get('ext') and 'url' in format:
|
if not format.get('ext') and 'url' in format:
|
||||||
format['ext'] = determine_ext(format['url'])
|
format['ext'] = determine_ext(format['url']).lower()
|
||||||
if format.get('vcodec') == 'none':
|
if format.get('vcodec') == 'none':
|
||||||
format['audio_ext'] = format['ext'] if format.get('acodec') != 'none' else 'none'
|
format['audio_ext'] = format['ext'] if format.get('acodec') != 'none' else 'none'
|
||||||
format['video_ext'] = 'none'
|
format['video_ext'] = 'none'
|
||||||
|
@ -5613,6 +5614,8 @@ class FormatSorter:
|
||||||
if not format.get('tbr'):
|
if not format.get('tbr'):
|
||||||
format['tbr'] = try_call(lambda: format['vbr'] + format['abr']) or None
|
format['tbr'] = try_call(lambda: format['vbr'] + format['abr']) or None
|
||||||
|
|
||||||
|
def calculate_preference(self, format):
|
||||||
|
self._fill_sorting_fields(format)
|
||||||
return tuple(self._calculate_field_preference(format, field) for field in self._order)
|
return tuple(self._calculate_field_preference(format, field) for field in self._order)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue