aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey M․ <dstftw@gmail.com>2021-02-04 13:07:43 +0700
committerSergey M․ <dstftw@gmail.com>2021-02-04 13:07:43 +0700
commit7215691ab7cabc858b17c16928c372da3e35ec59 (patch)
tree5baabccdd759f46a8a05250f4eabe22634617def
parentfc88e8f0e3e66f17f787cbc1ea45c87fdc70781e (diff)
[youtube] Prefer DASH formats (closes #28070)
-rw-r--r--youtube_dl/extractor/youtube.py12
1 files changed, 9 insertions, 3 deletions
diff --git a/youtube_dl/extractor/youtube.py b/youtube_dl/extractor/youtube.py
index 42b0f452c..a3b10c094 100644
--- a/youtube_dl/extractor/youtube.py
+++ b/youtube_dl/extractor/youtube.py
@@ -1549,16 +1549,22 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
if self._downloader.params.get('youtube_include_dash_manifest'):
dash_manifest_url = streaming_data.get('dashManifestUrl')
if dash_manifest_url:
+ dash_formats = []
for f in self._extract_mpd_formats(
dash_manifest_url, video_id, fatal=False):
- if f['format_id'] in itags:
- continue
filesize = int_or_none(self._search_regex(
r'/clen/(\d+)', f.get('fragment_base_url')
or f['url'], 'file size', default=None))
if filesize:
f['filesize'] = filesize
- formats.append(f)
+ dash_formats.append(f)
+ # Until further investigation prefer DASH formats as non-DASH
+ # may not be available (see [1])
+ # 1. https://github.com/ytdl-org/youtube-dl/issues/28070
+ if dash_formats:
+ dash_formats_keys = [f['format_id'] for f in dash_formats]
+ formats = [f for f in formats if f['format_id'] not in dash_formats_keys]
+ formats.extend(dash_formats)
if not formats:
if streaming_data.get('licenseInfos'):