f['height'] = int('720' if m.group('res') == 'hd' else '480')
formats.extend(video_format)
- self._sort_formats(formats, field_preference=('height', 'width', 'tbr', 'format_id'))
+ self._sort_formats(formats)
return {
'id': video_id,
'height': int_or_none(qs.get('h', [None])[0]),
})
formats.append(f)
- self._sort_formats(formats, ('width', 'height', 'tbr', 'format_id'))
+ self._sort_formats(formats)
return {
'id': video_id,
r'(\d+)[pP]', label or '', 'height',
default=None)),
})
- self._sort_formats(
- formats, field_preference=('height', 'width', 'tbr', 'format_id'))
+ self._sort_formats(formats)
info = self._search_json_ld(webpage, video_id, default={})
'url': s_url,
'preference': -1,
})
- self._sort_formats(
- formats, ('preference', 'width', 'height', 'vbr', 'filesize', 'tbr', 'ext', 'format_id'))
+ self._sort_formats(formats)
subtitles = {}
for subtitle in (try_get(video, lambda x: x['subtitles']['urls'], list) or []):
'ext': 'flv',
})
formats.append(format_info)
- self._sort_formats(formats, ('preference', 'language_preference', 'height', 'width', 'tbr', 'fps'))
+ self._sort_formats(formats)
metadata = self._call_rpc_api(
'VideoPlayer_GetMediaMetadata', video_id,
f['height'] = int_or_none(format_id[:-1])
formats.append(f)
- self._sort_formats(formats, ('height', 'quality', 'format_id'))
+ self._sort_formats(formats, ('res', 'quality'))
publish_time = parse_iso8601(self._html_search_regex(
r'发布时间 ([^<>]+) ', page, 'publish time', default=None),
streaming_url, video_slug, 'mp4',
'm3u8_native', m3u8_id='hls', fatal=False))
- self._sort_formats(formats, ('width', 'height', 'source_preference', 'tbr', 'abr'))
+ # It seems like this would be correctly handled by default
+ # However, unless someone can confirm this, the old
+ # behaviour is being kept as-is
+ self._sort_formats(formats, ('res', 'source_preference'))
return {
'id': self._get_video_id(video_data, course_slug, video_slug),
'vcodec': 'none' if format_id.startswith('Audio') else None,
})
- self._sort_formats(formats, ('width', 'height', 'filesize', 'tbr'))
+ self._sort_formats(formats)
return {
'id': episode,
'tbr': int_or_none(video.get('bitrate'), 1000) or None,
'ext': ext,
})
- self._sort_formats(formats, ('height', 'width', 'filesize', 'tbr', 'fps', 'format_id'))
+ self._sort_formats(formats)
thumbnails = []
for image in video_data.get('images', []):
'height': int_or_none(format_dict.get('height')),
'duration': duration,
})
- self._sort_formats(
- formats, field_preference=('height', 'width', 'tbr', 'format_id'))
+ self._sort_formats(formats)
description = data.get('description') or data.get('description_html') or data.get('seo_description')
timestamp = unified_timestamp(data.get('created_at'))
'https://v.redd.it/%s/DASHPlaylist.mpd' % video_id, video_id,
mpd_id='dash', fatal=False))
- self._sort_formats(formats, ('height', 'width'))
+ self._sort_formats(formats)
return {
'id': video_id,
'format_id': '%s-%d' % (determine_protocol(f), tbr),
'tbr': tbr,
})
- self._sort_formats(info_dict['formats'], ('tbr', 'height', 'width', 'format_id'))
+ # 'tbr' was explicitly set to be prefered over 'height' originally,
+ # So this is being kept unless someone can confirm this is unnecessary
+ self._sort_formats(info_dict['formats'], ('tbr', 'res'))
thumbnails = []
if video.get('thumbnailUrl'):
format_url = format_url[0]
extract_format(format_id, format_url)
- self._sort_formats(formats, field_preference=('preference', 'height', 'width', 'fps', 'tbr', 'format_id'))
+ self._sort_formats(formats)
info = self._search_json_ld(webpage, video_id, default={})
formats.extend(self._extract_m3u8_formats(
m3u8_url, video_id, 'mp4', entry_protocol='m3u8_native',
m3u8_id='hls', fatal=False))
- self._sort_formats(formats, ('height', 'tbr', 'width', 'format_id'))
+ self._sort_formats(formats)
view_count = str_to_int(video.get('viewed'))
f['preference'] = -40
elif f.get('vcodec') == 'none':
f['preference'] = -50
- self._sort_formats(formats, ('preference', 'width', 'height', 'source_preference', 'tbr', 'vbr', 'abr', 'ext', 'format_id'))
+ # It seems like this would be correctly handled by default
+ # However, unless someone can confirm this, the old
+ # behaviour is being kept as-is
+ self._sort_formats(formats, ('res', 'source_preference'))
subtitles = {}
for subtitle in (config.get('subtitles') or []):
if f.get('url'):
formats.append(f)
- self._sort_formats(formats, field_preference=('height', 'width', 'tbr', 'format_id'))
+ self._sort_formats(formats)
return {
'id': video_id,
if not formats:
for format_id in (867, 836, 940):
add_m3u8_format(format_id)
- self._sort_formats(formats, ('width', 'height', 'filesize', 'tbr'))
+ self._sort_formats(formats)
return {
'id': video_id,
if hls_url:
formats.extend(self._extract_m3u8_formats(
hls_url, film_id, 'mp4', 'm3u8_native', m3u8_id='hls', fatal=False))
- self._sort_formats(formats, ('height', 'tbr', 'format_id'))
+ self._sort_formats(formats)
info = {
'id': film_id,
def _vimeo_sort_formats(self, formats):
# Bitrates are completely broken. Single m3u8 may contain entries in kbps and bps
# at the same time without actual units specified. This lead to wrong sorting.
- self._sort_formats(formats, field_preference=('preference', 'height', 'width', 'fps', 'tbr', 'format_id'))
+ # But since yt-dlp prefers 'res,fps' anyway, 'field_preference' is not needed
+ self._sort_formats(formats)
def _parse_config(self, config, video_id):
video_data = config['video']
'Referer': standard_url,
},
})
- self._sort_formats(formats, field_preference=('height', 'width', 'tbr', 'format_id'))
+ self._sort_formats(formats)
categories_list = video.get('categories')
if isinstance(categories_list, list):