aboutsummaryrefslogtreecommitdiffstats
path: root/yt_dlp
diff options
context:
space:
mode:
Diffstat (limited to 'yt_dlp')
-rw-r--r--yt_dlp/extractor/acfun.py6
-rw-r--r--yt_dlp/extractor/anvato.py4
-rw-r--r--yt_dlp/extractor/audioboom.py7
-rw-r--r--yt_dlp/extractor/bandcamp.py4
-rw-r--r--yt_dlp/extractor/hrfensehen.py2
-rw-r--r--yt_dlp/extractor/huya.py2
-rw-r--r--yt_dlp/extractor/iltalehti.py2
-rw-r--r--yt_dlp/extractor/instagram.py2
-rw-r--r--yt_dlp/extractor/liputan6.py2
-rw-r--r--yt_dlp/extractor/microsoftembed.py6
-rw-r--r--yt_dlp/extractor/nbc.py2
-rw-r--r--yt_dlp/extractor/rcs.py4
-rw-r--r--yt_dlp/extractor/trovo.py2
-rw-r--r--yt_dlp/extractor/tviplayer.py2
-rw-r--r--yt_dlp/extractor/yandexvideo.py2
-rw-r--r--yt_dlp/options.py4
-rw-r--r--yt_dlp/utils.py8
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()