diff options
Diffstat (limited to 'yt_dlp')
-rw-r--r-- | yt_dlp/extractor/acfun.py | 6 | ||||
-rw-r--r-- | yt_dlp/extractor/anvato.py | 4 | ||||
-rw-r--r-- | yt_dlp/extractor/audioboom.py | 7 | ||||
-rw-r--r-- | yt_dlp/extractor/bandcamp.py | 4 | ||||
-rw-r--r-- | yt_dlp/extractor/hrfensehen.py | 2 | ||||
-rw-r--r-- | yt_dlp/extractor/huya.py | 2 | ||||
-rw-r--r-- | yt_dlp/extractor/iltalehti.py | 2 | ||||
-rw-r--r-- | yt_dlp/extractor/instagram.py | 2 | ||||
-rw-r--r-- | yt_dlp/extractor/liputan6.py | 2 | ||||
-rw-r--r-- | yt_dlp/extractor/microsoftembed.py | 6 | ||||
-rw-r--r-- | yt_dlp/extractor/nbc.py | 2 | ||||
-rw-r--r-- | yt_dlp/extractor/rcs.py | 4 | ||||
-rw-r--r-- | yt_dlp/extractor/trovo.py | 2 | ||||
-rw-r--r-- | yt_dlp/extractor/tviplayer.py | 2 | ||||
-rw-r--r-- | yt_dlp/extractor/yandexvideo.py | 2 | ||||
-rw-r--r-- | yt_dlp/options.py | 4 | ||||
-rw-r--r-- | yt_dlp/utils.py | 8 |
17 files changed, 27 insertions, 34 deletions
diff --git a/yt_dlp/extractor/acfun.py b/yt_dlp/extractor/acfun.py index 615efd9bb..92b905fa7 100644 --- a/yt_dlp/extractor/acfun.py +++ b/yt_dlp/extractor/acfun.py @@ -84,7 +84,7 @@ class AcFunVideoIE(AcFunVideoBaseIE): video_id = self._match_id(url) webpage = self._download_webpage(url, video_id) - json_all = self._search_json(r'window.videoInfo\s*=\s*', webpage, 'videoInfo', video_id) + json_all = self._search_json(r'window.videoInfo\s*=', webpage, 'videoInfo', video_id) title = json_all.get('title') video_list = json_all.get('videoList') or [] @@ -164,7 +164,7 @@ class AcFunBangumiIE(AcFunVideoBaseIE): video_id = f'{video_id}{format_field(ac_idx, template="__%s")}' webpage = self._download_webpage(url, video_id) - json_bangumi_data = self._search_json(r'window.bangumiData\s*=\s*', webpage, 'bangumiData', video_id) + json_bangumi_data = self._search_json(r'window.bangumiData\s*=', webpage, 'bangumiData', video_id) if ac_idx: video_info = json_bangumi_data['hlVideoInfo'] @@ -181,7 +181,7 @@ class AcFunBangumiIE(AcFunVideoBaseIE): if v.get('id') == season_id), 1) json_bangumi_list = self._search_json( - r'window\.bangumiList\s*=\s*', webpage, 'bangumiList', video_id, fatal=False) + r'window\.bangumiList\s*=', webpage, 'bangumiList', video_id, fatal=False) video_internal_id = int_or_none(traverse_obj(json_bangumi_data, ('currentVideoInfo', 'id'))) episode_number = video_internal_id and next(( idx for idx, v in enumerate(json_bangumi_list.get('items') or [], 1) diff --git a/yt_dlp/extractor/anvato.py b/yt_dlp/extractor/anvato.py index 5d0307085..0d7575a1f 100644 --- a/yt_dlp/extractor/anvato.py +++ b/yt_dlp/extractor/anvato.py @@ -10,11 +10,11 @@ from ..aes import aes_encrypt from ..utils import ( bytes_to_intlist, determine_ext, - intlist_to_bytes, int_or_none, + intlist_to_bytes, join_nonempty, - strip_jsonp, smuggle_url, + strip_jsonp, traverse_obj, unescapeHTML, unsmuggle_url, diff --git a/yt_dlp/extractor/audioboom.py b/yt_dlp/extractor/audioboom.py index f1aa0201b..a23fcd299 100644 --- a/yt_dlp/extractor/audioboom.py +++ b/yt_dlp/extractor/audioboom.py @@ -1,10 +1,5 @@ from .common import InfoExtractor -from ..utils import ( - clean_html, - float_or_none, - unescapeHTML, - traverse_obj, -) +from ..utils import clean_html, float_or_none, traverse_obj, unescapeHTML class AudioBoomIE(InfoExtractor): diff --git a/yt_dlp/extractor/bandcamp.py b/yt_dlp/extractor/bandcamp.py index 2dae49e77..a864ff9ac 100644 --- a/yt_dlp/extractor/bandcamp.py +++ b/yt_dlp/extractor/bandcamp.py @@ -5,16 +5,16 @@ import time from .common import InfoExtractor from ..compat import compat_str from ..utils import ( + KNOWN_EXTENSIONS, ExtractorError, float_or_none, int_or_none, - KNOWN_EXTENSIONS, parse_filesize, str_or_none, try_get, - update_url_query, unified_strdate, unified_timestamp, + update_url_query, url_or_none, urljoin, ) diff --git a/yt_dlp/extractor/hrfensehen.py b/yt_dlp/extractor/hrfensehen.py index dd72d86d7..447782019 100644 --- a/yt_dlp/extractor/hrfensehen.py +++ b/yt_dlp/extractor/hrfensehen.py @@ -1,6 +1,7 @@ import json import re +from .common import InfoExtractor from ..utils import ( int_or_none, traverse_obj, @@ -8,7 +9,6 @@ from ..utils import ( unescapeHTML, unified_timestamp, ) -from .common import InfoExtractor class HRFernsehenIE(InfoExtractor): diff --git a/yt_dlp/extractor/huya.py b/yt_dlp/extractor/huya.py index 6d6f09956..c05e77c32 100644 --- a/yt_dlp/extractor/huya.py +++ b/yt_dlp/extractor/huya.py @@ -54,7 +54,7 @@ class HuyaLiveIE(InfoExtractor): def _real_extract(self, url): video_id = self._match_id(url) webpage = self._download_webpage(url, video_id=video_id) - stream_data = self._search_json(r'stream:\s+', webpage, 'stream', video_id=video_id, default=None) + stream_data = self._search_json(r'stream:\s', webpage, 'stream', video_id=video_id, default=None) room_info = try_get(stream_data, lambda x: x['data'][0]['gameLiveInfo']) if not room_info: raise ExtractorError('Can not extract the room info', expected=True) diff --git a/yt_dlp/extractor/iltalehti.py b/yt_dlp/extractor/iltalehti.py index a40307aed..0e7e82c9c 100644 --- a/yt_dlp/extractor/iltalehti.py +++ b/yt_dlp/extractor/iltalehti.py @@ -41,7 +41,7 @@ class IltalehtiIE(InfoExtractor): article_id = self._match_id(url) webpage = self._download_webpage(url, article_id) info = self._search_json( - r'<script>\s*window.App\s*=\s*', webpage, 'json', article_id, + r'<script>\s*window.App\s*=', webpage, 'json', article_id, transform_source=js_to_json) props = traverse_obj(info, ( 'state', 'articles', ..., 'items', (('main_media', 'properties'), ('body', ..., 'properties')))) diff --git a/yt_dlp/extractor/instagram.py b/yt_dlp/extractor/instagram.py index c9da7e36f..fc08f377c 100644 --- a/yt_dlp/extractor/instagram.py +++ b/yt_dlp/extractor/instagram.py @@ -452,7 +452,7 @@ class InstagramIE(InstagramBaseIE): webpage = self._download_webpage( f'{url}/embed/', video_id, note='Downloading embed webpage', fatal=False) additional_data = self._search_json( - r'window\.__additionalDataLoaded\s*\(\s*[^,]+,\s*', webpage, 'additional data', video_id, fatal=False) + r'window\.__additionalDataLoaded\s*\(\s*[^,]+,', webpage, 'additional data', video_id, fatal=False) if not additional_data and not media: self.raise_login_required('Requested content is not available, rate-limit reached or login required') diff --git a/yt_dlp/extractor/liputan6.py b/yt_dlp/extractor/liputan6.py index b5dbffe24..c4477b93e 100644 --- a/yt_dlp/extractor/liputan6.py +++ b/yt_dlp/extractor/liputan6.py @@ -57,7 +57,7 @@ class Liputan6IE(InfoExtractor): webpage = self._download_webpage(url, display_id) json_data = self._search_json( - r'window.kmklabs.gtm\s*=\s*', webpage, 'json_data', display_id) + r'window.kmklabs.gtm\s*=', webpage, 'json_data', display_id) video_id = json_data['videos']['video_1']['video_id'] return self.url_result( diff --git a/yt_dlp/extractor/microsoftembed.py b/yt_dlp/extractor/microsoftembed.py index 8cdf66778..1425a0159 100644 --- a/yt_dlp/extractor/microsoftembed.py +++ b/yt_dlp/extractor/microsoftembed.py @@ -1,9 +1,5 @@ from .common import InfoExtractor -from ..utils import ( - int_or_none, - traverse_obj, - unified_timestamp, -) +from ..utils import int_or_none, traverse_obj, unified_timestamp class MicrosoftEmbedIE(InfoExtractor): diff --git a/yt_dlp/extractor/nbc.py b/yt_dlp/extractor/nbc.py index 6b482620a..3de8c1508 100644 --- a/yt_dlp/extractor/nbc.py +++ b/yt_dlp/extractor/nbc.py @@ -643,7 +643,7 @@ class NBCStationsIE(InfoExtractor): webpage = self._download_webpage(url, video_id) nbc_data = self._search_json( - r'<script>var\s*nbc\s*=\s*', webpage, 'NBC JSON data', video_id) + r'<script>var\s*nbc\s*=', webpage, 'NBC JSON data', video_id) pdk_acct = nbc_data.get('pdkAcct') or 'Yh1nAC' fw_ssid = traverse_obj(nbc_data, ('video', 'fwSSID')) fw_network_id = traverse_obj(nbc_data, ('video', 'fwNetworkID'), default='382114') diff --git a/yt_dlp/extractor/rcs.py b/yt_dlp/extractor/rcs.py index e6185fec7..d69a1a216 100644 --- a/yt_dlp/extractor/rcs.py +++ b/yt_dlp/extractor/rcs.py @@ -2,10 +2,10 @@ import re from .common import InfoExtractor from ..utils import ( - clean_html, ExtractorError, - js_to_json, base_url, + clean_html, + js_to_json, url_basename, urljoin, ) diff --git a/yt_dlp/extractor/trovo.py b/yt_dlp/extractor/trovo.py index f4d4bcd17..b7aa74060 100644 --- a/yt_dlp/extractor/trovo.py +++ b/yt_dlp/extractor/trovo.py @@ -7,9 +7,9 @@ from .common import InfoExtractor from ..utils import ( ExtractorError, format_field, - traverse_obj, int_or_none, str_or_none, + traverse_obj, try_get, ) diff --git a/yt_dlp/extractor/tviplayer.py b/yt_dlp/extractor/tviplayer.py index f60cfb050..7e9b04d55 100644 --- a/yt_dlp/extractor/tviplayer.py +++ b/yt_dlp/extractor/tviplayer.py @@ -62,7 +62,7 @@ class TVIPlayerIE(InfoExtractor): webpage = self._download_webpage(url, video_id) json_data = self._search_json( - r'<script>\s*jsonData\s*=\s*', webpage, 'json_data', video_id) + r'<script>\s*jsonData\s*=', webpage, 'json_data', video_id) formats, subtitles = self._extract_m3u8_formats_and_subtitles( f'{json_data["videoUrl"]}?wmsAuthSign={self.wms_auth_sign_token}', diff --git a/yt_dlp/extractor/yandexvideo.py b/yt_dlp/extractor/yandexvideo.py index eadb1aaee..0b621dbd2 100644 --- a/yt_dlp/extractor/yandexvideo.py +++ b/yt_dlp/extractor/yandexvideo.py @@ -6,9 +6,9 @@ from ..utils import ( determine_ext, extract_attributes, int_or_none, + lowercase_escape, try_get, url_or_none, - lowercase_escape, ) diff --git a/yt_dlp/options.py b/yt_dlp/options.py index 861bbf786..5ff375fcf 100644 --- a/yt_dlp/options.py +++ b/yt_dlp/options.py @@ -1417,7 +1417,9 @@ def create_parser(): help='Do not load cookies from browser (default)') filesystem.add_option( '--cache-dir', dest='cachedir', default=None, metavar='DIR', - help='Location in the filesystem where yt-dlp can store some downloaded information (such as client ids and signatures) permanently. By default $XDG_CACHE_HOME/yt-dlp or ~/.cache/yt-dlp') + help=( + 'Location in the filesystem where yt-dlp can store some downloaded information ' + '(such as client ids and signatures) permanently. By default ${XDG_CACHE_HOME}/yt-dlp')) filesystem.add_option( '--no-cache-dir', action='store_false', dest='cachedir', help='Disable filesystem caching') diff --git a/yt_dlp/utils.py b/yt_dlp/utils.py index 6cba9299a..d0be7f19e 100644 --- a/yt_dlp/utils.py +++ b/yt_dlp/utils.py @@ -3180,6 +3180,10 @@ def multipart_encode(data, boundary=None): return out, content_type +def variadic(x, allowed_types=(str, bytes, dict)): + return x if isinstance(x, collections.abc.Iterable) and not isinstance(x, allowed_types) else (x,) + + def dict_get(d, key_or_keys, default=None, skip_false_values=True): for val in map(d.get, variadic(key_or_keys)): if val is not None and (val or not skip_false_values): @@ -5446,10 +5450,6 @@ def get_first(obj, keys, **kwargs): return traverse_obj(obj, (..., *variadic(keys)), **kwargs, get_all=False) -def variadic(x, allowed_types=(str, bytes, dict)): - return x if isinstance(x, collections.abc.Iterable) and not isinstance(x, allowed_types) else (x,) - - def time_seconds(**kwargs): t = datetime.datetime.now(datetime.timezone(datetime.timedelta(**kwargs))) return t.timestamp() |