aboutsummaryrefslogtreecommitdiffstats
path: root/yt_dlp
diff options
context:
space:
mode:
authorpukkandan <pukkandan.ytdlp@gmail.com>2021-05-18 01:11:57 +0530
committerpukkandan <pukkandan.ytdlp@gmail.com>2021-05-19 18:29:20 +0530
commitd3fc8074a4de0ceca369d4c22c7f2fe88e9d983a (patch)
tree0192e59c98328ab1e8a935303613f9130a58cdbc /yt_dlp
parent9c2b75b5616f058c3970e54c664e9543f86b9f0c (diff)
downloadhypervideo-pre-d3fc8074a4de0ceca369d4c22c7f2fe88e9d983a.tar.lz
hypervideo-pre-d3fc8074a4de0ceca369d4c22c7f2fe88e9d983a.tar.xz
hypervideo-pre-d3fc8074a4de0ceca369d4c22c7f2fe88e9d983a.zip
[youtube] Sort audio-only formats correctly
Closes #317
Diffstat (limited to 'yt_dlp')
-rw-r--r--yt_dlp/extractor/youtube.py10
1 files changed, 6 insertions, 4 deletions
diff --git a/yt_dlp/extractor/youtube.py b/yt_dlp/extractor/youtube.py
index 4ffb90cb9..5e836f883 100644
--- a/yt_dlp/extractor/youtube.py
+++ b/yt_dlp/extractor/youtube.py
@@ -1994,7 +1994,10 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
formats, itags, stream_ids = [], [], []
itag_qualities = {}
player_url = None
- q = qualities(['tiny', 'small', 'medium', 'large', 'hd720', 'hd1080', 'hd1440', 'hd2160', 'hd2880', 'highres'])
+ q = qualities([
+ 'tiny', 'audio_quality_low', 'audio_quality_medium', 'audio_quality_high', # Audio only formats
+ 'small', 'medium', 'large', 'hd720', 'hd1080', 'hd1440', 'hd2160', 'hd2880', 'highres'
+ ])
streaming_data = player_response.get('streamingData') or {}
streaming_formats = streaming_data.get('formats') or []
@@ -2013,6 +2016,8 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
continue
quality = fmt.get('quality')
+ if quality == 'tiny' or not quality:
+ quality = fmt.get('audioQuality', '').lower() or quality
if itag and quality:
itag_qualities[itag] = quality
# FORMAT_STREAM_TYPE_OTF(otf=1) requires downloading the init fragment
@@ -2102,9 +2107,6 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
if itag in itags:
continue
if itag in itag_qualities:
- # Not actually usefull since the sorting is already done with "quality,res,fps,codec"
- # but kept to maintain feature parity (and code similarity) with youtube-dl
- # Remove if this causes any issues with sorting in future
f['quality'] = q(itag_qualities[itag])
filesize = int_or_none(self._search_regex(
r'/clen/(\d+)', f.get('fragment_base_url')