aboutsummaryrefslogtreecommitdiffstats
path: root/yt_dlp/extractor
diff options
context:
space:
mode:
Diffstat (limited to 'yt_dlp/extractor')
-rw-r--r--yt_dlp/extractor/common.py5
-rw-r--r--yt_dlp/extractor/youtube.py38
2 files changed, 25 insertions, 18 deletions
diff --git a/yt_dlp/extractor/common.py b/yt_dlp/extractor/common.py
index d210ec02f..bb9d8fba5 100644
--- a/yt_dlp/extractor/common.py
+++ b/yt_dlp/extractor/common.py
@@ -70,6 +70,7 @@ from ..utils import (
str_or_none,
str_to_int,
strip_or_none,
+ traverse_obj,
unescapeHTML,
unified_strdate,
unified_timestamp,
@@ -3567,6 +3568,10 @@ class InfoExtractor(object):
else 'public' if all_known
else None)
+ def _configuration_arg(self, key):
+ return traverse_obj(
+ self._downloader.params, ('extractor_args', self.ie_key().lower(), key))
+
class SearchInfoExtractor(InfoExtractor):
"""
diff --git a/yt_dlp/extractor/youtube.py b/yt_dlp/extractor/youtube.py
index c16f16165..2c4e9b657 100644
--- a/yt_dlp/extractor/youtube.py
+++ b/yt_dlp/extractor/youtube.py
@@ -2119,8 +2119,12 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
dct['container'] = dct['ext'] + '_dash'
formats.append(dct)
+ skip_manifests = self._configuration_arg('skip') or []
+ get_dash = 'dash' not in skip_manifests and self.get_param('youtube_include_dash_manifest', True)
+ get_hls = 'hls' not in skip_manifests and self.get_param('youtube_include_hls_manifest', True)
+
for sd in (streaming_data, ytm_streaming_data):
- hls_manifest_url = sd.get('hlsManifestUrl')
+ hls_manifest_url = get_hls and sd.get('hlsManifestUrl')
if hls_manifest_url:
for f in self._extract_m3u8_formats(
hls_manifest_url, video_id, 'mp4', fatal=False):
@@ -2130,23 +2134,21 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
f['format_id'] = itag
formats.append(f)
- if self.get_param('youtube_include_dash_manifest', True):
- for sd in (streaming_data, ytm_streaming_data):
- dash_manifest_url = sd.get('dashManifestUrl')
- if dash_manifest_url:
- for f in self._extract_mpd_formats(
- dash_manifest_url, video_id, fatal=False):
- itag = f['format_id']
- if itag in itags:
- continue
- if itag in itag_qualities:
- f['quality'] = q(itag_qualities[itag])
- 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_manifest_url = get_dash and sd.get('dashManifestUrl')
+ if dash_manifest_url:
+ for f in self._extract_mpd_formats(
+ dash_manifest_url, video_id, fatal=False):
+ itag = f['format_id']
+ if itag in itags:
+ continue
+ if itag in itag_qualities:
+ f['quality'] = q(itag_qualities[itag])
+ 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)
if not formats:
if not self.get_param('allow_unplayable_formats') and streaming_data.get('licenseInfos'):