aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpukkandan <pukkandan.ytdlp@gmail.com>2022-08-15 13:58:39 +0530
committerpukkandan <pukkandan.ytdlp@gmail.com>2022-08-15 14:04:05 +0530
commit5c6d2ef9d1001508407d7825d731013f3cb99f5f (patch)
treee626d3b1e4945639b3046948f89540d025069cdd
parent460eb9c50e0970fdceb51485c5fe3268574c48e8 (diff)
downloadhypervideo-pre-5c6d2ef9d1001508407d7825d731013f3cb99f5f.tar.lz
hypervideo-pre-5c6d2ef9d1001508407d7825d731013f3cb99f5f.tar.xz
hypervideo-pre-5c6d2ef9d1001508407d7825d731013f3cb99f5f.zip
[youtube] Improve format sorting for IOS formats
When no itag/resolution is available for reference, use the closest resolution
-rw-r--r--yt_dlp/extractor/youtube.py9
1 files changed, 4 insertions, 5 deletions
diff --git a/yt_dlp/extractor/youtube.py b/yt_dlp/extractor/youtube.py
index 5ac481bd7..4f279b36d 100644
--- a/yt_dlp/extractor/youtube.py
+++ b/yt_dlp/extractor/youtube.py
@@ -3168,7 +3168,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
def _extract_formats_and_subtitles(self, streaming_data, video_id, player_url, is_live, duration):
itags, stream_ids = {}, []
- itag_qualities, res_qualities = {}, {}
+ itag_qualities, res_qualities = {}, {0: -1}
q = qualities([
# Normally tiny is the smallest video-only formats. But
# audio-only formats with unknown quality may get tagged as tiny
@@ -3320,10 +3320,9 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
f['format_id'] = itag
itags[itag] = proto
- f['quality'] = next((
- q(qdict[val])
- for val, qdict in ((f.get('format_id', '').split('-')[0], itag_qualities), (f.get('height'), res_qualities))
- if val in qdict), -1)
+ f['quality'] = itag_qualities.get(try_get(f, lambda f: f['format_id'].split('-')[0]), -1)
+ if f['quality'] == -1 and f.get('height'):
+ f['quality'] = q(res_qualities[min(res_qualities, key=lambda x: abs(x - f['height']))])
return True
subtitles = {}