diff options
| author | Sergey M․ <dstftw@gmail.com> | 2021-02-04 13:07:43 +0700 | 
|---|---|---|
| committer | Sergey M․ <dstftw@gmail.com> | 2021-02-04 13:07:43 +0700 | 
| commit | 7215691ab7cabc858b17c16928c372da3e35ec59 (patch) | |
| tree | 5baabccdd759f46a8a05250f4eabe22634617def | |
| parent | fc88e8f0e3e66f17f787cbc1ea45c87fdc70781e (diff) | |
[youtube] Prefer DASH formats (closes #28070)
| -rw-r--r-- | youtube_dl/extractor/youtube.py | 12 | 
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'):  | 
