[ie/facebook] Improve format sorting (#8074)

Authored by: fireattack
This commit is contained in:
fireattack 2023-09-17 05:18:04 +08:00 committed by GitHub
parent 5be7e97886
commit 308936619c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -505,7 +505,6 @@ def process_formats(info):
# with non-browser User-Agent. # with non-browser User-Agent.
for f in info['formats']: for f in info['formats']:
f.setdefault('http_headers', {})['User-Agent'] = 'facebookexternalhit/1.1' f.setdefault('http_headers', {})['User-Agent'] = 'facebookexternalhit/1.1'
info['_format_sort_fields'] = ('res', 'quality')
def extract_relay_data(_filter): def extract_relay_data(_filter):
return self._parse_json(self._search_regex( return self._parse_json(self._search_regex(
@ -552,7 +551,8 @@ def parse_graphql_video(video):
else: else:
formats.append({ formats.append({
'format_id': format_id, 'format_id': format_id,
'quality': q(format_id), # sd, hd formats w/o resolution info should be deprioritized below DASH
'quality': q(format_id) - 3,
'url': playable_url, 'url': playable_url,
}) })
extract_dash_manifest(video, formats) extract_dash_manifest(video, formats)
@ -719,9 +719,11 @@ def parse_attachment(attachment, key='media'):
for src_type in ('src', 'src_no_ratelimit'): for src_type in ('src', 'src_no_ratelimit'):
src = f[0].get('%s_%s' % (quality, src_type)) src = f[0].get('%s_%s' % (quality, src_type))
if src: if src:
preference = -10 if format_id == 'progressive' else -1 # sd, hd formats w/o resolution info should be deprioritized below DASH
# TODO: investigate if progressive or src formats still exist
preference = -10 if format_id == 'progressive' else -3
if quality == 'hd': if quality == 'hd':
preference += 5 preference += 1
formats.append({ formats.append({
'format_id': '%s_%s_%s' % (format_id, quality, src_type), 'format_id': '%s_%s_%s' % (format_id, quality, src_type),
'url': src, 'url': src,