aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpukkandan <pukkandan.ytdlp@gmail.com>2021-08-26 07:40:02 +0530
committerpukkandan <pukkandan.ytdlp@gmail.com>2021-08-26 08:08:34 +0530
commit26e8e04454d28b623c16f34496e31752086ff457 (patch)
tree8af671a49ad9365e0dc42bb9b73538b672fbdee7
parent198e3a04c9b147a5d63e8e5bfdb2bac5a356ae18 (diff)
downloadhypervideo-pre-26e8e04454d28b623c16f34496e31752086ff457.tar.lz
hypervideo-pre-26e8e04454d28b623c16f34496e31752086ff457.tar.xz
hypervideo-pre-26e8e04454d28b623c16f34496e31752086ff457.zip
[youtube] Prefer audio stream that YouTube considers default
Fixes: https://github.com/ytdl-org/youtube-dl/issues/29864 Related: https://github.com/clsid2/mpc-hc/issues/1268
-rw-r--r--yt_dlp/extractor/youtube.py6
1 files changed, 4 insertions, 2 deletions
diff --git a/yt_dlp/extractor/youtube.py b/yt_dlp/extractor/youtube.py
index 9ca81e6cb..80c3cc05e 100644
--- a/yt_dlp/extractor/youtube.py
+++ b/yt_dlp/extractor/youtube.py
@@ -2622,7 +2622,8 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
'filesize': int_or_none(fmt.get('contentLength')),
'format_id': itag,
'format_note': ', '.join(filter(None, (
- audio_track.get('displayName'),
+ '%s%s' % (audio_track.get('displayName') or '',
+ ' (default)' if audio_track.get('audioIsDefault') else ''),
fmt.get('qualityLabel') or quality.replace('audio_quality_', '')))),
'fps': int_or_none(fmt.get('fps')),
'height': height,
@@ -2631,6 +2632,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
'url': fmt_url,
'width': int_or_none(fmt.get('width')),
'language': audio_track.get('id', '').split('.')[0],
+ 'language_preference': 1 if audio_track.get('audioIsDefault') else -1,
}
mime_mobj = re.match(
r'((?:[^/]+)/(?:[^;]+))(?:;\s*codecs="([^"]+)")?', fmt.get('mimeType') or '')
@@ -2817,7 +2819,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
# Source is given priority since formats that throttle are given lower source_preference
# When throttling issue is fully fixed, remove this
- self._sort_formats(formats, ('quality', 'height', 'fps', 'source'))
+ self._sort_formats(formats, ('quality', 'res', 'fps', 'source', 'codec:vp9.2', 'size', 'br', 'lang'))
keywords = get_first(video_details, 'keywords', expected_type=list) or []
if not keywords and webpage: