diff options
Diffstat (limited to 'yt_dlp/extractor')
-rw-r--r-- | yt_dlp/extractor/common.py | 5 | ||||
-rw-r--r-- | yt_dlp/extractor/youtube.py | 38 |
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'): |