[youtube] Prefer DASH formats (closes #28070)

This commit is contained in:
Sergey M․ 2021-02-04 13:07:43 +07:00
parent fc88e8f0e3
commit 7215691ab7
No known key found for this signature in database
GPG key ID: 2C393E0F18A9236D

View file

@ -1549,16 +1549,22 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
if self._downloader.params.get('youtube_include_dash_manifest'): if self._downloader.params.get('youtube_include_dash_manifest'):
dash_manifest_url = streaming_data.get('dashManifestUrl') dash_manifest_url = streaming_data.get('dashManifestUrl')
if dash_manifest_url: if dash_manifest_url:
dash_formats = []
for f in self._extract_mpd_formats( for f in self._extract_mpd_formats(
dash_manifest_url, video_id, fatal=False): dash_manifest_url, video_id, fatal=False):
if f['format_id'] in itags:
continue
filesize = int_or_none(self._search_regex( filesize = int_or_none(self._search_regex(
r'/clen/(\d+)', f.get('fragment_base_url') r'/clen/(\d+)', f.get('fragment_base_url')
or f['url'], 'file size', default=None)) or f['url'], 'file size', default=None))
if filesize: if filesize:
f['filesize'] = 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 not formats:
if streaming_data.get('licenseInfos'): if streaming_data.get('licenseInfos'):