]> jfr.im git - yt-dlp.git/commitdiff
[ie/facebook] Improve format sorting (#8074)
authorfireattack <redacted>
Sat, 16 Sep 2023 21:18:04 +0000 (05:18 +0800)
committerGitHub <redacted>
Sat, 16 Sep 2023 21:18:04 +0000 (21:18 +0000)
Authored by: fireattack

yt_dlp/extractor/facebook.py

index c30a6b06a0135bbec3e3d99829d0f1edf56b5408..50a750d3b127092e26d883ab4146c1bd77dbeced 100644 (file)
@@ -505,7 +505,6 @@ def process_formats(info):
             # with non-browser User-Agent.
             for f in info['formats']:
                 f.setdefault('http_headers', {})['User-Agent'] = 'facebookexternalhit/1.1'
-            info['_format_sort_fields'] = ('res', 'quality')
 
         def extract_relay_data(_filter):
             return self._parse_json(self._search_regex(
@@ -552,7 +551,8 @@ def parse_graphql_video(video):
                         else:
                             formats.append({
                                 '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,
                             })
                     extract_dash_manifest(video, formats)
@@ -719,9 +719,11 @@ def parse_attachment(attachment, key='media'):
                 for src_type in ('src', 'src_no_ratelimit'):
                     src = f[0].get('%s_%s' % (quality, src_type))
                     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':
-                            preference += 5
+                            preference += 1
                         formats.append({
                             'format_id': '%s_%s_%s' % (format_id, quality, src_type),
                             'url': src,