yt-dlp 2025.12.6.232939.dev0__py3-none-any.whl → 2025.12.8__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- yt_dlp/cookies.py +8 -1
- yt_dlp/extractor/youtube/_video.py +4 -4
- yt_dlp/extractor/youtube/jsc/_builtin/ejs.py +3 -1
- yt_dlp/extractor/youtube/jsc/_builtin/vendor/_info.py +1 -1
- yt_dlp/options.py +1 -1
- yt_dlp/postprocessor/ffmpeg.py +2 -2
- yt_dlp/utils/_jsruntime.py +5 -10
- yt_dlp/utils/_utils.py +3 -2
- yt_dlp/version.py +5 -5
- {yt_dlp-2025.12.6.232939.dev0.data → yt_dlp-2025.12.8.data}/data/share/doc/yt_dlp/README.txt +17 -16
- {yt_dlp-2025.12.6.232939.dev0.data → yt_dlp-2025.12.8.data}/data/share/fish/vendor_completions.d/yt-dlp.fish +2 -2
- {yt_dlp-2025.12.6.232939.dev0.data → yt_dlp-2025.12.8.data}/data/share/man/man1/yt-dlp.1 +15 -14
- {yt_dlp-2025.12.6.232939.dev0.dist-info → yt_dlp-2025.12.8.dist-info}/METADATA +14 -14
- {yt_dlp-2025.12.6.232939.dev0.dist-info → yt_dlp-2025.12.8.dist-info}/RECORD +19 -19
- {yt_dlp-2025.12.6.232939.dev0.data → yt_dlp-2025.12.8.data}/data/share/bash-completion/completions/yt-dlp +0 -0
- {yt_dlp-2025.12.6.232939.dev0.data → yt_dlp-2025.12.8.data}/data/share/zsh/site-functions/_yt-dlp +0 -0
- {yt_dlp-2025.12.6.232939.dev0.dist-info → yt_dlp-2025.12.8.dist-info}/WHEEL +0 -0
- {yt_dlp-2025.12.6.232939.dev0.dist-info → yt_dlp-2025.12.8.dist-info}/entry_points.txt +0 -0
- {yt_dlp-2025.12.6.232939.dev0.dist-info → yt_dlp-2025.12.8.dist-info}/licenses/LICENSE +0 -0
yt_dlp/cookies.py
CHANGED
|
@@ -212,9 +212,16 @@ def _firefox_browser_dirs():
|
|
|
212
212
|
|
|
213
213
|
else:
|
|
214
214
|
yield from map(os.path.expanduser, (
|
|
215
|
+
# New installations of FF147+ respect the XDG base directory specification
|
|
216
|
+
# Ref: https://bugzilla.mozilla.org/show_bug.cgi?id=259356
|
|
217
|
+
os.path.join(_config_home(), 'mozilla/firefox'),
|
|
218
|
+
# Existing FF version<=146 installations
|
|
215
219
|
'~/.mozilla/firefox',
|
|
216
|
-
|
|
220
|
+
# Flatpak XDG: https://docs.flatpak.org/en/latest/conventions.html#xdg-base-directories
|
|
221
|
+
'~/.var/app/org.mozilla.firefox/config/mozilla/firefox',
|
|
217
222
|
'~/.var/app/org.mozilla.firefox/.mozilla/firefox',
|
|
223
|
+
# Snap installations do not respect the XDG base directory specification
|
|
224
|
+
'~/snap/firefox/common/.mozilla/firefox',
|
|
218
225
|
))
|
|
219
226
|
|
|
220
227
|
|
|
@@ -2914,10 +2914,10 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
|
|
2914
2914
|
|
|
2915
2915
|
if not (requested_clients or excluded_clients) and default_clients == self._DEFAULT_JSLESS_CLIENTS:
|
|
2916
2916
|
self.report_warning(
|
|
2917
|
-
f'No supported JavaScript runtime could be found.
|
|
2918
|
-
f'
|
|
2919
|
-
f'
|
|
2920
|
-
f'
|
|
2917
|
+
f'No supported JavaScript runtime could be found. Only deno is enabled by default; '
|
|
2918
|
+
f'to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. '
|
|
2919
|
+
f'YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. '
|
|
2920
|
+
f'See {_EJS_WIKI_URL} for details on installing one', only_once=True)
|
|
2921
2921
|
|
|
2922
2922
|
if not requested_clients:
|
|
2923
2923
|
requested_clients.extend(default_clients)
|
|
@@ -21,6 +21,7 @@ from yt_dlp.extractor.youtube.jsc.provider import (
|
|
|
21
21
|
)
|
|
22
22
|
from yt_dlp.extractor.youtube.pot._provider import configuration_arg
|
|
23
23
|
from yt_dlp.extractor.youtube.pot.provider import provider_bug_report_message
|
|
24
|
+
from yt_dlp.utils import version_tuple
|
|
24
25
|
from yt_dlp.utils._jsruntime import JsRuntimeInfo
|
|
25
26
|
|
|
26
27
|
if _has_ejs:
|
|
@@ -223,7 +224,8 @@ class EJSBaseJCP(JsChallengeProvider):
|
|
|
223
224
|
skipped_components.append(script)
|
|
224
225
|
continue
|
|
225
226
|
if not self.is_dev:
|
|
226
|
-
|
|
227
|
+
# Matching patch version is expected to have same hash
|
|
228
|
+
if version_tuple(script.version, lenient=True)[:2] != version_tuple(self._SCRIPT_VERSION, lenient=True)[:2]:
|
|
227
229
|
self.logger.warning(
|
|
228
230
|
f'Challenge solver {script_type.value} script version {script.version} '
|
|
229
231
|
f'is not supported (source: {script.source.value}, variant: {script.variant}, supported version: {self._SCRIPT_VERSION})')
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# This file is generated by devscripts/update_ejs.py. DO NOT MODIFY!
|
|
2
2
|
|
|
3
|
-
VERSION = '0.3.
|
|
3
|
+
VERSION = '0.3.2'
|
|
4
4
|
HASHES = {
|
|
5
5
|
'yt.solver.bun.lib.js': '6ff45e94de9f0ea936a183c48173cfa9ce526ee4b7544cd556428427c1dd53c8073ef0174e79b320252bf0e7c64b0032cc1cf9c4358f3fda59033b7caa01c241',
|
|
6
6
|
'yt.solver.core.js': '0cd96b2d3f319dfa62cae689efa7d930ef1706e95f5921794db5089b2262957ec0a17d73938d8975ea35d0309cbfb4c8e4418d5e219837215eee242890c8b64d',
|
yt_dlp/options.py
CHANGED
|
@@ -689,7 +689,7 @@ def create_parser():
|
|
|
689
689
|
'-I', '--playlist-items',
|
|
690
690
|
dest='playlist_items', metavar='ITEM_SPEC', default=None,
|
|
691
691
|
help=(
|
|
692
|
-
'Comma
|
|
692
|
+
'Comma-separated playlist_index of the items to download. '
|
|
693
693
|
'You can specify a range using "[START]:[STOP][:STEP]". For backward compatibility, START-STOP is also supported. '
|
|
694
694
|
'Use negative indices to count from the right and negative STEP to download in reverse order. '
|
|
695
695
|
'E.g. "-I 1:3,7,-5::2" used on a playlist of size 15 will download the items at index 1,2,3,7,11,13,15'))
|
yt_dlp/postprocessor/ffmpeg.py
CHANGED
|
@@ -750,8 +750,8 @@ class FFmpegMetadataPP(FFmpegPostProcessor):
|
|
|
750
750
|
add('track', 'track_number')
|
|
751
751
|
add('artist', ('artist', 'artists', 'creator', 'creators', 'uploader', 'uploader_id'))
|
|
752
752
|
add('composer', ('composer', 'composers'))
|
|
753
|
-
add('genre', ('genre', 'genres'))
|
|
754
|
-
add('album')
|
|
753
|
+
add('genre', ('genre', 'genres', 'categories', 'tags'))
|
|
754
|
+
add('album', ('album', 'series'))
|
|
755
755
|
add('album_artist', ('album_artist', 'album_artists'))
|
|
756
756
|
add('disc', 'disc_number')
|
|
757
757
|
add('show', 'series')
|
yt_dlp/utils/_jsruntime.py
CHANGED
|
@@ -6,12 +6,7 @@ import functools
|
|
|
6
6
|
import os.path
|
|
7
7
|
import sys
|
|
8
8
|
|
|
9
|
-
from ._utils import _get_exe_version_output, detect_exe_version,
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
def _runtime_version_tuple(v):
|
|
13
|
-
# NB: will return (0,) if `v` is an invalid version string
|
|
14
|
-
return tuple(int_or_none(x, default=0) for x in v.split('.'))
|
|
9
|
+
from ._utils import _get_exe_version_output, detect_exe_version, version_tuple
|
|
15
10
|
|
|
16
11
|
|
|
17
12
|
_FALLBACK_PATHEXT = ('.COM', '.EXE', '.BAT', '.CMD')
|
|
@@ -92,7 +87,7 @@ class DenoJsRuntime(JsRuntime):
|
|
|
92
87
|
if not out:
|
|
93
88
|
return None
|
|
94
89
|
version = detect_exe_version(out, r'^deno (\S+)', 'unknown')
|
|
95
|
-
vt =
|
|
90
|
+
vt = version_tuple(version, lenient=True)
|
|
96
91
|
return JsRuntimeInfo(
|
|
97
92
|
name='deno', path=path, version=version, version_tuple=vt,
|
|
98
93
|
supported=vt >= self.MIN_SUPPORTED_VERSION)
|
|
@@ -107,7 +102,7 @@ class BunJsRuntime(JsRuntime):
|
|
|
107
102
|
if not out:
|
|
108
103
|
return None
|
|
109
104
|
version = detect_exe_version(out, r'^(\S+)', 'unknown')
|
|
110
|
-
vt =
|
|
105
|
+
vt = version_tuple(version, lenient=True)
|
|
111
106
|
return JsRuntimeInfo(
|
|
112
107
|
name='bun', path=path, version=version, version_tuple=vt,
|
|
113
108
|
supported=vt >= self.MIN_SUPPORTED_VERSION)
|
|
@@ -122,7 +117,7 @@ class NodeJsRuntime(JsRuntime):
|
|
|
122
117
|
if not out:
|
|
123
118
|
return None
|
|
124
119
|
version = detect_exe_version(out, r'^v(\S+)', 'unknown')
|
|
125
|
-
vt =
|
|
120
|
+
vt = version_tuple(version, lenient=True)
|
|
126
121
|
return JsRuntimeInfo(
|
|
127
122
|
name='node', path=path, version=version, version_tuple=vt,
|
|
128
123
|
supported=vt >= self.MIN_SUPPORTED_VERSION)
|
|
@@ -140,7 +135,7 @@ class QuickJsRuntime(JsRuntime):
|
|
|
140
135
|
is_ng = 'QuickJS-ng' in out
|
|
141
136
|
|
|
142
137
|
version = detect_exe_version(out, r'^QuickJS(?:-ng)?\s+version\s+(\S+)', 'unknown')
|
|
143
|
-
vt =
|
|
138
|
+
vt = version_tuple(version, lenient=True)
|
|
144
139
|
if is_ng:
|
|
145
140
|
return JsRuntimeInfo(
|
|
146
141
|
name='quickjs-ng', path=path, version=version, version_tuple=vt,
|
yt_dlp/utils/_utils.py
CHANGED
|
@@ -2895,8 +2895,9 @@ def limit_length(s, length):
|
|
|
2895
2895
|
return s
|
|
2896
2896
|
|
|
2897
2897
|
|
|
2898
|
-
def version_tuple(v):
|
|
2899
|
-
|
|
2898
|
+
def version_tuple(v, *, lenient=False):
|
|
2899
|
+
parse = int_or_none(default=-1) if lenient else int
|
|
2900
|
+
return tuple(parse(e) for e in re.split(r'[-.]', v))
|
|
2900
2901
|
|
|
2901
2902
|
|
|
2902
2903
|
def is_outdated_version(version, limit, assume_new=True):
|
yt_dlp/version.py
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
# Autogenerated by devscripts/update-version.py
|
|
2
2
|
|
|
3
|
-
__version__ = '2025.12.
|
|
3
|
+
__version__ = '2025.12.08'
|
|
4
4
|
|
|
5
|
-
RELEASE_GIT_HEAD = '
|
|
5
|
+
RELEASE_GIT_HEAD = '7a52ff29d86efc8f3adeba977b2009ce40b8e52e'
|
|
6
6
|
|
|
7
7
|
VARIANT = 'pip'
|
|
8
8
|
|
|
9
9
|
UPDATE_HINT = 'You installed yt-dlp with pip or using the wheel from PyPi; Use that to update'
|
|
10
10
|
|
|
11
|
-
CHANNEL = '
|
|
11
|
+
CHANNEL = 'stable'
|
|
12
12
|
|
|
13
|
-
ORIGIN = 'yt-dlp/yt-dlp
|
|
13
|
+
ORIGIN = 'yt-dlp/yt-dlp'
|
|
14
14
|
|
|
15
|
-
_pkg_version = '2025.12.
|
|
15
|
+
_pkg_version = '2025.12.08'
|
{yt_dlp-2025.12.6.232939.dev0.data → yt_dlp-2025.12.8.data}/data/share/doc/yt_dlp/README.txt
RENAMED
|
@@ -247,7 +247,8 @@ Python versions 3.10+ (CPython) and 3.11+ (PyPy) are supported. Other
|
|
|
247
247
|
versions and implementations may or may not work correctly.
|
|
248
248
|
|
|
249
249
|
While all the other dependencies are optional, ffmpeg, ffprobe,
|
|
250
|
-
yt-dlp-ejs and a JavaScript runtime are highly
|
|
250
|
+
yt-dlp-ejs and a supported JavaScript runtime/engine are highly
|
|
251
|
+
recommended
|
|
251
252
|
|
|
252
253
|
Strongly recommended
|
|
253
254
|
|
|
@@ -267,8 +268,8 @@ Strongly recommended
|
|
|
267
268
|
- yt-dlp-ejs - Required for deciphering YouTube n/sig values. Licensed
|
|
268
269
|
under Unlicense, bundles MIT and ISC components.
|
|
269
270
|
|
|
270
|
-
A JavaScript runtime like deno (recommended), node.js, bun,
|
|
271
|
-
QuickJS is also required to run yt-dlp-ejs. See the wiki.
|
|
271
|
+
A JavaScript runtime/engine like deno (recommended), node.js, bun,
|
|
272
|
+
or QuickJS is also required to run yt-dlp-ejs. See the wiki.
|
|
272
273
|
|
|
273
274
|
Networking
|
|
274
275
|
|
|
@@ -289,7 +290,7 @@ may be required for some sites that employ TLS fingerprinting.
|
|
|
289
290
|
- curl_cffi (recommended) - Python binding for curl-impersonate.
|
|
290
291
|
Provides impersonation targets for Chrome, Edge and Safari. Licensed
|
|
291
292
|
under MIT
|
|
292
|
-
- Can be installed with the curl-cffi
|
|
293
|
+
- Can be installed with the curl-cffi extra, e.g.
|
|
293
294
|
pip install "yt-dlp[default,curl-cffi]"
|
|
294
295
|
- Currently included in most builds except yt-dlp (Unix zipimport
|
|
295
296
|
binary), yt-dlp_x86 (Windows 32-bit) and
|
|
@@ -343,7 +344,7 @@ will be built for the same CPU architecture as the Python used.
|
|
|
343
344
|
|
|
344
345
|
You can run the following commands:
|
|
345
346
|
|
|
346
|
-
python devscripts/install_deps.py --include-
|
|
347
|
+
python devscripts/install_deps.py --include-extra pyinstaller
|
|
347
348
|
python devscripts/make_lazy_extractors.py
|
|
348
349
|
python -m bundle.pyinstaller
|
|
349
350
|
|
|
@@ -408,7 +409,7 @@ General Options:
|
|
|
408
409
|
--no-update Do not check for updates (default)
|
|
409
410
|
--update-to [CHANNEL]@[TAG] Upgrade/downgrade to a specific version.
|
|
410
411
|
CHANNEL can be a repository as well. CHANNEL
|
|
411
|
-
and TAG default to "
|
|
412
|
+
and TAG default to "stable" and "latest"
|
|
412
413
|
respectively if omitted; See "UPDATE" for
|
|
413
414
|
details. Supported channels: stable,
|
|
414
415
|
nightly, master
|
|
@@ -580,7 +581,7 @@ Geo-restriction:
|
|
|
580
581
|
|
|
581
582
|
Video Selection:
|
|
582
583
|
|
|
583
|
-
-I, --playlist-items ITEM_SPEC Comma
|
|
584
|
+
-I, --playlist-items ITEM_SPEC Comma-separated playlist_index of the items
|
|
584
585
|
to download. You can specify a range using
|
|
585
586
|
"[START]:[STOP][:STEP]". For backward
|
|
586
587
|
compatibility, START-STOP is also supported.
|
|
@@ -1481,7 +1482,7 @@ have some special formatting:
|
|
|
1481
1482
|
7. More Conversions: In addition to the normal format types
|
|
1482
1483
|
diouxXeEfFgGcrs, yt-dlp additionally supports converting to B =
|
|
1483
1484
|
Bytes, j = json (flag # for pretty-printing, + for Unicode), h =
|
|
1484
|
-
HTML escaping, l = a comma
|
|
1485
|
+
HTML escaping, l = a comma-separated list (flag # for \n
|
|
1485
1486
|
newline-separated), q = a string quoted for the terminal (flag # to
|
|
1486
1487
|
split a list into different arguments), D = add Decimal suffixes
|
|
1487
1488
|
(e.g. 10M) (flag # to use 1024 as factor), and S = Sanitize as
|
|
@@ -2223,9 +2224,9 @@ metadata:
|
|
|
2223
2224
|
|
|
2224
2225
|
composer composer or composers
|
|
2225
2226
|
|
|
2226
|
-
genre genre or
|
|
2227
|
+
genre genre, genres, categories or tags
|
|
2227
2228
|
|
|
2228
|
-
album album
|
|
2229
|
+
album album or series
|
|
2229
2230
|
|
|
2230
2231
|
album_artist album_artist or album_artists
|
|
2231
2232
|
|
|
@@ -2297,7 +2298,7 @@ youtube
|
|
|
2297
2298
|
available clients are web, web_safari, web_embedded, web_music,
|
|
2298
2299
|
web_creator, mweb, ios, android, android_sdkless, android_vr, tv,
|
|
2299
2300
|
tv_simply, tv_downgraded, and tv_embedded. By default,
|
|
2300
|
-
tv,android_sdkless,web is used. If no JavaScript runtime is
|
|
2301
|
+
tv,android_sdkless,web is used. If no JavaScript runtime/engine is
|
|
2301
2302
|
available, then android_sdkless,web_safari,web is used. If logged-in
|
|
2302
2303
|
cookies are passed to yt-dlp, then tv_downgraded,web_safari,web is
|
|
2303
2304
|
used for free accounts and tv_downgraded,web_creator,web is used for
|
|
@@ -2363,7 +2364,7 @@ youtube
|
|
|
2363
2364
|
without cookies. Note: this may have adverse effects if used
|
|
2364
2365
|
improperly. If a session from a browser is wanted, you should pass
|
|
2365
2366
|
cookies instead (which contain the Visitor ID)
|
|
2366
|
-
- po_token: Proof of Origin (PO) Token(s) to use. Comma
|
|
2367
|
+
- po_token: Proof of Origin (PO) Token(s) to use. Comma-separated list
|
|
2367
2368
|
of PO Tokens in the format CLIENT.CONTEXT+PO_TOKEN, e.g.
|
|
2368
2369
|
youtube:po_token=web.gvs+XXX,web.player=XXX,web_safari.gvs+YYY.
|
|
2369
2370
|
Context can be any of gvs (Google Video Server URLs), player
|
|
@@ -2385,10 +2386,10 @@ youtube
|
|
|
2385
2386
|
|
|
2386
2387
|
youtube-ejs
|
|
2387
2388
|
|
|
2388
|
-
- jitless: Run
|
|
2389
|
-
runtimes are deno, node and bun. Provides better security
|
|
2390
|
-
cost of performance/speed. Do note that node and bun are
|
|
2391
|
-
considered
|
|
2389
|
+
- jitless: Run supported Javascript engines in JIT-less mode.
|
|
2390
|
+
Supported runtimes are deno, node and bun. Provides better security
|
|
2391
|
+
at the cost of performance/speed. Do note that node and bun are
|
|
2392
|
+
still considered insecure. Either true or false (default)
|
|
2392
2393
|
|
|
2393
2394
|
youtubepot-webpo
|
|
2394
2395
|
|
|
@@ -3,7 +3,7 @@ complete --command yt-dlp --long-option help --short-option h --description 'Pri
|
|
|
3
3
|
complete --command yt-dlp --long-option version --description 'Print program version and exit'
|
|
4
4
|
complete --command yt-dlp --long-option update --short-option U --description 'Check if updates are available. You installed yt-dlp from a manual build or with a package manager; Use that to update'
|
|
5
5
|
complete --command yt-dlp --long-option no-update --description 'Do not check for updates (default)'
|
|
6
|
-
complete --command yt-dlp --long-option update-to --description 'Upgrade/downgrade to a specific version. CHANNEL can be a repository as well. CHANNEL and TAG default to "
|
|
6
|
+
complete --command yt-dlp --long-option update-to --description 'Upgrade/downgrade to a specific version. CHANNEL can be a repository as well. CHANNEL and TAG default to "stable" and "latest" respectively if omitted; See "UPDATE" for details. Supported channels: stable, nightly, master'
|
|
7
7
|
complete --command yt-dlp --long-option ignore-errors --short-option i --description 'Ignore download and postprocessing errors. The download will be considered successful even if the postprocessing fails'
|
|
8
8
|
complete --command yt-dlp --long-option no-abort-on-error --description 'Continue with next video on download errors; e.g. to skip unavailable videos in a playlist (default)'
|
|
9
9
|
complete --command yt-dlp --long-option abort-on-error --description 'Abort downloading of further videos if an error occurs (Alias: --no-ignore-errors)'
|
|
@@ -50,7 +50,7 @@ complete --command yt-dlp --long-option geo-bypass-country
|
|
|
50
50
|
complete --command yt-dlp --long-option geo-bypass-ip-block
|
|
51
51
|
complete --command yt-dlp --long-option playlist-start
|
|
52
52
|
complete --command yt-dlp --long-option playlist-end
|
|
53
|
-
complete --command yt-dlp --long-option playlist-items --short-option I --description 'Comma
|
|
53
|
+
complete --command yt-dlp --long-option playlist-items --short-option I --description 'Comma-separated playlist_index of the items to download. You can specify a range using "[START]:[STOP][:STEP]". For backward compatibility, START-STOP is also supported. Use negative indices to count from the right and negative STEP to download in reverse order. E.g. "-I 1:3,7,-5::2" used on a playlist of size 15 will download the items at index 1,2,3,7,11,13,15'
|
|
54
54
|
complete --command yt-dlp --long-option match-title
|
|
55
55
|
complete --command yt-dlp --long-option reject-title
|
|
56
56
|
complete --command yt-dlp --long-option min-filesize --description 'Abort download if filesize is smaller than SIZE, e.g. 50k or 44.6M'
|
|
@@ -48,7 +48,7 @@ Do not check for updates (default)
|
|
|
48
48
|
--update-to \f[I][CHANNEL]\[at][TAG]\f[R]
|
|
49
49
|
Upgrade/downgrade to a specific version.
|
|
50
50
|
CHANNEL can be a repository as well.
|
|
51
|
-
CHANNEL and TAG default to \[dq]
|
|
51
|
+
CHANNEL and TAG default to \[dq]stable\[dq] and \[dq]latest\[dq]
|
|
52
52
|
respectively if omitted; See \[dq]UPDATE\[dq] for details.
|
|
53
53
|
Supported channels: stable, nightly, master
|
|
54
54
|
.TP
|
|
@@ -265,7 +265,7 @@ One of \[dq]default\[dq] (only when known to be useful),
|
|
|
265
265
|
.SS Video Selection:
|
|
266
266
|
.TP
|
|
267
267
|
-I, --playlist-items \f[I]ITEM_SPEC\f[R]
|
|
268
|
-
Comma
|
|
268
|
+
Comma-separated playlist_index of the items to download.
|
|
269
269
|
You can specify a range using \[dq][START]:[STOP][:STEP]\[dq].
|
|
270
270
|
For backward compatibility, START-STOP is also supported.
|
|
271
271
|
Use negative indices to count from the right and negative STEP to
|
|
@@ -1513,7 +1513,7 @@ E.g.
|
|
|
1513
1513
|
\f[V]diouxXeEfFgGcrs\f[R], yt-dlp additionally supports converting to
|
|
1514
1514
|
\f[V]B\f[R] = \f[B]B\f[R]ytes, \f[V]j\f[R] = \f[B]j\f[R]son (flag
|
|
1515
1515
|
\f[V]#\f[R] for pretty-printing, \f[V]+\f[R] for Unicode), \f[V]h\f[R] =
|
|
1516
|
-
HTML escaping, \f[V]l\f[R] = a comma
|
|
1516
|
+
HTML escaping, \f[V]l\f[R] = a comma-separated \f[B]l\f[R]ist (flag
|
|
1517
1517
|
\f[V]#\f[R] for \f[V]\[rs]n\f[R] newline-separated), \f[V]q\f[R] = a
|
|
1518
1518
|
string \f[B]q\f[R]uoted for the terminal (flag \f[V]#\f[R] to split a
|
|
1519
1519
|
list into different arguments), \f[V]D\f[R] = add \f[B]D\f[R]ecimal
|
|
@@ -2582,12 +2582,13 @@ T}
|
|
|
2582
2582
|
T{
|
|
2583
2583
|
\f[V]genre\f[R]
|
|
2584
2584
|
T}@T{
|
|
2585
|
-
\f[V]genre\f[R]
|
|
2585
|
+
\f[V]genre\f[R], \f[V]genres\f[R], \f[V]categories\f[R] or
|
|
2586
|
+
\f[V]tags\f[R]
|
|
2586
2587
|
T}
|
|
2587
2588
|
T{
|
|
2588
2589
|
\f[V]album\f[R]
|
|
2589
2590
|
T}@T{
|
|
2590
|
-
\f[V]album\f[R]
|
|
2591
|
+
\f[V]album\f[R] or \f[V]series\f[R]
|
|
2591
2592
|
T}
|
|
2592
2593
|
T{
|
|
2593
2594
|
\f[V]album_artist\f[R]
|
|
@@ -2695,7 +2696,7 @@ The currently available clients are \f[V]web\f[R], \f[V]web_safari\f[R],
|
|
|
2695
2696
|
\f[V]android_sdkless\f[R], \f[V]android_vr\f[R], \f[V]tv\f[R],
|
|
2696
2697
|
\f[V]tv_simply\f[R], \f[V]tv_downgraded\f[R], and \f[V]tv_embedded\f[R].
|
|
2697
2698
|
By default, \f[V]tv,android_sdkless,web\f[R] is used.
|
|
2698
|
-
If no JavaScript runtime is available, then
|
|
2699
|
+
If no JavaScript runtime/engine is available, then
|
|
2699
2700
|
\f[V]android_sdkless,web_safari,web\f[R] is used.
|
|
2700
2701
|
If logged-in cookies are passed to yt-dlp, then
|
|
2701
2702
|
\f[V]tv_downgraded,web_safari,web\f[R] is used for free accounts and
|
|
@@ -2801,7 +2802,7 @@ If a session from a browser is wanted, you should pass cookies instead
|
|
|
2801
2802
|
(which contain the Visitor ID)
|
|
2802
2803
|
.IP \[bu] 2
|
|
2803
2804
|
\f[V]po_token\f[R]: Proof of Origin (PO) Token(s) to use.
|
|
2804
|
-
Comma
|
|
2805
|
+
Comma-separated list of PO Tokens in the format
|
|
2805
2806
|
\f[V]CLIENT.CONTEXT+PO_TOKEN\f[R], e.g.
|
|
2806
2807
|
\f[V]youtube:po_token=web.gvs+XXX,web.player=XXX,web_safari.gvs+YYY\f[R].
|
|
2807
2808
|
Context can be any of \f[V]gvs\f[R] (Google Video Server URLs),
|
|
@@ -2830,11 +2831,11 @@ Only effective with the \f[V]web\f[R], \f[V]web_safari\f[R],
|
|
|
2830
2831
|
Either \f[V]true\f[R] or \f[V]false\f[R] (default)
|
|
2831
2832
|
.SS youtube-ejs
|
|
2832
2833
|
.IP \[bu] 2
|
|
2833
|
-
\f[V]jitless\f[R]: Run
|
|
2834
|
+
\f[V]jitless\f[R]: Run supported Javascript engines in JIT-less mode.
|
|
2834
2835
|
Supported runtimes are \f[V]deno\f[R], \f[V]node\f[R] and \f[V]bun\f[R].
|
|
2835
2836
|
Provides better security at the cost of performance/speed.
|
|
2836
2837
|
Do note that \f[V]node\f[R] and \f[V]bun\f[R] are still considered
|
|
2837
|
-
|
|
2838
|
+
insecure.
|
|
2838
2839
|
Either \f[V]true\f[R] or \f[V]false\f[R] (default)
|
|
2839
2840
|
.SS youtubepot-webpo
|
|
2840
2841
|
.IP \[bu] 2
|
|
@@ -3164,8 +3165,8 @@ Python versions 3.10+ (CPython) and 3.11+ (PyPy) are supported.
|
|
|
3164
3165
|
Other versions and implementations may or may not work correctly.
|
|
3165
3166
|
.PP
|
|
3166
3167
|
While all the other dependencies are optional, \f[V]ffmpeg\f[R],
|
|
3167
|
-
\f[V]ffprobe\f[R], \f[V]yt-dlp-ejs\f[R] and a JavaScript
|
|
3168
|
-
highly recommended
|
|
3168
|
+
\f[V]ffprobe\f[R], \f[V]yt-dlp-ejs\f[R] and a supported JavaScript
|
|
3169
|
+
runtime/engine are highly recommended
|
|
3169
3170
|
.SS Strongly recommended
|
|
3170
3171
|
.IP \[bu] 2
|
|
3171
3172
|
\f[B]ffmpeg\f[R] and \f[B]ffprobe\f[R] (https://www.ffmpeg.org) -
|
|
@@ -3197,7 +3198,7 @@ ISC (https://github.com/meriyah/meriyah/blob/main/LICENSE.md)
|
|
|
3197
3198
|
components.
|
|
3198
3199
|
.RS 2
|
|
3199
3200
|
.PP
|
|
3200
|
-
A JavaScript runtime like \f[B]deno\f[R] (https://deno.land)
|
|
3201
|
+
A JavaScript runtime/engine like \f[B]deno\f[R] (https://deno.land)
|
|
3201
3202
|
(recommended), \f[B]node.js\f[R] (https://nodejs.org),
|
|
3202
3203
|
\f[B]bun\f[R] (https://bun.sh), or
|
|
3203
3204
|
\f[B]QuickJS\f[R] (https://bellard.org/quickjs/) is also required to run
|
|
@@ -3240,7 +3241,7 @@ Licensed under
|
|
|
3240
3241
|
MIT (https://github.com/lexiforest/curl_cffi/blob/main/LICENSE)
|
|
3241
3242
|
.RS 2
|
|
3242
3243
|
.IP \[bu] 2
|
|
3243
|
-
Can be installed with the \f[V]curl-cffi\f[R]
|
|
3244
|
+
Can be installed with the \f[V]curl-cffi\f[R] extra, e.g.
|
|
3244
3245
|
\f[V]pip install \[dq]yt-dlp[default,curl-cffi]\[dq]\f[R]
|
|
3245
3246
|
.IP \[bu] 2
|
|
3246
3247
|
Currently included in most builds \f[I]except\f[R] \f[V]yt-dlp\f[R]
|
|
@@ -3329,7 +3330,7 @@ You can run the following commands:
|
|
|
3329
3330
|
.IP
|
|
3330
3331
|
.nf
|
|
3331
3332
|
\f[C]
|
|
3332
|
-
python devscripts/install_deps.py --include-
|
|
3333
|
+
python devscripts/install_deps.py --include-extra pyinstaller
|
|
3333
3334
|
python devscripts/make_lazy_extractors.py
|
|
3334
3335
|
python -m bundle.pyinstaller
|
|
3335
3336
|
\f[R]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: yt-dlp
|
|
3
|
-
Version: 2025.12.
|
|
3
|
+
Version: 2025.12.8
|
|
4
4
|
Summary: A feature-rich command-line audio/video downloader
|
|
5
5
|
Project-URL: Documentation, https://github.com/yt-dlp/yt-dlp#readme
|
|
6
6
|
Project-URL: Repository, https://github.com/yt-dlp/yt-dlp
|
|
@@ -43,7 +43,7 @@ Requires-Dist: pycryptodomex; extra == 'default'
|
|
|
43
43
|
Requires-Dist: requests<3,>=2.32.2; extra == 'default'
|
|
44
44
|
Requires-Dist: urllib3<3,>=2.0.2; extra == 'default'
|
|
45
45
|
Requires-Dist: websockets>=13.0; extra == 'default'
|
|
46
|
-
Requires-Dist: yt-dlp-ejs==0.3.
|
|
46
|
+
Requires-Dist: yt-dlp-ejs==0.3.2; extra == 'default'
|
|
47
47
|
Provides-Extra: dev
|
|
48
48
|
Requires-Dist: autopep8~=2.0; extra == 'dev'
|
|
49
49
|
Requires-Dist: pre-commit; extra == 'dev'
|
|
@@ -272,7 +272,7 @@ Python versions 3.10+ (CPython) and 3.11+ (PyPy) are supported. Other versions a
|
|
|
272
272
|
On Windows, [Microsoft Visual C++ 2010 SP1 Redistributable Package (x86)](https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x86.exe) is also necessary to run yt-dlp. You probably already have this, but if the executable throws an error due to missing `MSVCR100.dll` you need to install it manually.
|
|
273
273
|
-->
|
|
274
274
|
|
|
275
|
-
While all the other dependencies are optional, `ffmpeg`, `ffprobe`, `yt-dlp-ejs` and a JavaScript runtime are highly recommended
|
|
275
|
+
While all the other dependencies are optional, `ffmpeg`, `ffprobe`, `yt-dlp-ejs` and a supported JavaScript runtime/engine are highly recommended
|
|
276
276
|
|
|
277
277
|
### Strongly recommended
|
|
278
278
|
|
|
@@ -284,7 +284,7 @@ While all the other dependencies are optional, `ffmpeg`, `ffprobe`, `yt-dlp-ejs`
|
|
|
284
284
|
|
|
285
285
|
* [**yt-dlp-ejs**](https://github.com/yt-dlp/ejs) - Required for deciphering YouTube n/sig values. Licensed under [Unlicense](https://github.com/yt-dlp/ejs/blob/main/LICENSE), bundles [MIT](https://github.com/davidbonnet/astring/blob/main/LICENSE) and [ISC](https://github.com/meriyah/meriyah/blob/main/LICENSE.md) components.
|
|
286
286
|
|
|
287
|
-
A JavaScript runtime like [**deno**](https://deno.land) (recommended), [**node.js**](https://nodejs.org), [**bun**](https://bun.sh), or [**QuickJS**](https://bellard.org/quickjs/) is also required to run yt-dlp-ejs. See [the wiki](https://github.com/yt-dlp/yt-dlp/wiki/EJS).
|
|
287
|
+
A JavaScript runtime/engine like [**deno**](https://deno.land) (recommended), [**node.js**](https://nodejs.org), [**bun**](https://bun.sh), or [**QuickJS**](https://bellard.org/quickjs/) is also required to run yt-dlp-ejs. See [the wiki](https://github.com/yt-dlp/yt-dlp/wiki/EJS).
|
|
288
288
|
|
|
289
289
|
### Networking
|
|
290
290
|
* [**certifi**](https://github.com/certifi/python-certifi)\* - Provides Mozilla's root certificate bundle. Licensed under [MPLv2](https://github.com/certifi/python-certifi/blob/master/LICENSE)
|
|
@@ -297,7 +297,7 @@ While all the other dependencies are optional, `ffmpeg`, `ffprobe`, `yt-dlp-ejs`
|
|
|
297
297
|
The following provide support for impersonating browser requests. This may be required for some sites that employ TLS fingerprinting.
|
|
298
298
|
|
|
299
299
|
* [**curl_cffi**](https://github.com/lexiforest/curl_cffi) (recommended) - Python binding for [curl-impersonate](https://github.com/lexiforest/curl-impersonate). Provides impersonation targets for Chrome, Edge and Safari. Licensed under [MIT](https://github.com/lexiforest/curl_cffi/blob/main/LICENSE)
|
|
300
|
-
* Can be installed with the `curl-cffi`
|
|
300
|
+
* Can be installed with the `curl-cffi` extra, e.g. `pip install "yt-dlp[default,curl-cffi]"`
|
|
301
301
|
* Currently included in most builds *except* `yt-dlp` (Unix zipimport binary), `yt-dlp_x86` (Windows 32-bit) and `yt-dlp_musllinux_aarch64`
|
|
302
302
|
|
|
303
303
|
|
|
@@ -334,7 +334,7 @@ To build the standalone executable, you must have Python and `pyinstaller` (plus
|
|
|
334
334
|
You can run the following commands:
|
|
335
335
|
|
|
336
336
|
```
|
|
337
|
-
python devscripts/install_deps.py --include-
|
|
337
|
+
python devscripts/install_deps.py --include-extra pyinstaller
|
|
338
338
|
python devscripts/make_lazy_extractors.py
|
|
339
339
|
python -m bundle.pyinstaller
|
|
340
340
|
```
|
|
@@ -383,7 +383,7 @@ Tip: Use `CTRL`+`F` (or `Command`+`F`) to search by keywords
|
|
|
383
383
|
--no-update Do not check for updates (default)
|
|
384
384
|
--update-to [CHANNEL]@[TAG] Upgrade/downgrade to a specific version.
|
|
385
385
|
CHANNEL can be a repository as well. CHANNEL
|
|
386
|
-
and TAG default to "
|
|
386
|
+
and TAG default to "stable" and "latest"
|
|
387
387
|
respectively if omitted; See "UPDATE" for
|
|
388
388
|
details. Supported channels: stable,
|
|
389
389
|
nightly, master
|
|
@@ -552,7 +552,7 @@ Tip: Use `CTRL`+`F` (or `Command`+`F`) to search by keywords
|
|
|
552
552
|
two-letter ISO 3166-2 country code
|
|
553
553
|
|
|
554
554
|
## Video Selection:
|
|
555
|
-
-I, --playlist-items ITEM_SPEC Comma
|
|
555
|
+
-I, --playlist-items ITEM_SPEC Comma-separated playlist_index of the items
|
|
556
556
|
to download. You can specify a range using
|
|
557
557
|
"[START]:[STOP][:STEP]". For backward
|
|
558
558
|
compatibility, START-STOP is also supported.
|
|
@@ -1368,7 +1368,7 @@ The field names themselves (the part inside the parenthesis) can also have some
|
|
|
1368
1368
|
|
|
1369
1369
|
1. **Default**: A literal default value can be specified for when the field is empty using a `|` separator. This overrides `--output-na-placeholder`. E.g. `%(uploader|Unknown)s`
|
|
1370
1370
|
|
|
1371
|
-
1. **More Conversions**: In addition to the normal format types `diouxXeEfFgGcrs`, yt-dlp additionally supports converting to `B` = **B**ytes, `j` = **j**son (flag `#` for pretty-printing, `+` for Unicode), `h` = HTML escaping, `l` = a comma
|
|
1371
|
+
1. **More Conversions**: In addition to the normal format types `diouxXeEfFgGcrs`, yt-dlp additionally supports converting to `B` = **B**ytes, `j` = **j**son (flag `#` for pretty-printing, `+` for Unicode), `h` = HTML escaping, `l` = a comma-separated **l**ist (flag `#` for `\n` newline-separated), `q` = a string **q**uoted for the terminal (flag `#` to split a list into different arguments), `D` = add **D**ecimal suffixes (e.g. 10M) (flag `#` to use 1024 as factor), and `S` = **S**anitize as filename (flag `#` for restricted)
|
|
1372
1372
|
|
|
1373
1373
|
1. **Unicode normalization**: The format type `U` can be used for NFC [Unicode normalization](https://docs.python.org/3/library/unicodedata.html#unicodedata.normalize). The alternate form flag (`#`) changes the normalization to NFD and the conversion flag `+` can be used for NFKC/NFKD compatibility equivalence normalization. E.g. `%(title)+.100U` is NFKC
|
|
1374
1374
|
|
|
@@ -1867,8 +1867,8 @@ Metadata fields | From
|
|
|
1867
1867
|
`track` | `track_number`
|
|
1868
1868
|
`artist` | `artist`, `artists`, `creator`, `creators`, `uploader` or `uploader_id`
|
|
1869
1869
|
`composer` | `composer` or `composers`
|
|
1870
|
-
`genre` | `genre` or `
|
|
1871
|
-
`album` | `album`
|
|
1870
|
+
`genre` | `genre`, `genres`, `categories` or `tags`
|
|
1871
|
+
`album` | `album` or `series`
|
|
1872
1872
|
`album_artist` | `album_artist` or `album_artists`
|
|
1873
1873
|
`disc` | `disc_number`
|
|
1874
1874
|
`show` | `series`
|
|
@@ -1921,7 +1921,7 @@ The following extractors use this feature:
|
|
|
1921
1921
|
#### youtube
|
|
1922
1922
|
* `lang`: Prefer translated metadata (`title`, `description` etc) of this language code (case-sensitive). By default, the video primary language metadata is preferred, with a fallback to `en` translated. See [youtube/_base.py](https://github.com/yt-dlp/yt-dlp/blob/415b4c9f955b1a0391204bd24a7132590e7b3bdb/yt_dlp/extractor/youtube/_base.py#L402-L409) for the list of supported content language codes
|
|
1923
1923
|
* `skip`: One or more of `hls`, `dash` or `translated_subs` to skip extraction of the m3u8 manifests, dash manifests and [auto-translated subtitles](https://github.com/yt-dlp/yt-dlp/issues/4090#issuecomment-1158102032) respectively
|
|
1924
|
-
* `player_client`: Clients to extract video data from. The currently available clients are `web`, `web_safari`, `web_embedded`, `web_music`, `web_creator`, `mweb`, `ios`, `android`, `android_sdkless`, `android_vr`, `tv`, `tv_simply`, `tv_downgraded`, and `tv_embedded`. By default, `tv,android_sdkless,web` is used. If no JavaScript runtime is available, then `android_sdkless,web_safari,web` is used. If logged-in cookies are passed to yt-dlp, then `tv_downgraded,web_safari,web` is used for free accounts and `tv_downgraded,web_creator,web` is used for premium accounts. The `web_music` client is added for `music.youtube.com` URLs when logged-in cookies are used. The `web_embedded` client is added for age-restricted videos but only works if the video is embeddable. The `tv_embedded` and `web_creator` clients are added for age-restricted videos if account age-verification is required. Some clients, such as `web` and `web_music`, require a `po_token` for their formats to be downloadable. Some clients, such as `web_creator`, will only work with authentication. Not all clients support authentication via cookies. You can use `default` for the default clients, or you can use `all` for all clients (not recommended). You can prefix a client with `-` to exclude it, e.g. `youtube:player_client=default,-ios`
|
|
1924
|
+
* `player_client`: Clients to extract video data from. The currently available clients are `web`, `web_safari`, `web_embedded`, `web_music`, `web_creator`, `mweb`, `ios`, `android`, `android_sdkless`, `android_vr`, `tv`, `tv_simply`, `tv_downgraded`, and `tv_embedded`. By default, `tv,android_sdkless,web` is used. If no JavaScript runtime/engine is available, then `android_sdkless,web_safari,web` is used. If logged-in cookies are passed to yt-dlp, then `tv_downgraded,web_safari,web` is used for free accounts and `tv_downgraded,web_creator,web` is used for premium accounts. The `web_music` client is added for `music.youtube.com` URLs when logged-in cookies are used. The `web_embedded` client is added for age-restricted videos but only works if the video is embeddable. The `tv_embedded` and `web_creator` clients are added for age-restricted videos if account age-verification is required. Some clients, such as `web` and `web_music`, require a `po_token` for their formats to be downloadable. Some clients, such as `web_creator`, will only work with authentication. Not all clients support authentication via cookies. You can use `default` for the default clients, or you can use `all` for all clients (not recommended). You can prefix a client with `-` to exclude it, e.g. `youtube:player_client=default,-ios`
|
|
1925
1925
|
* `player_skip`: Skip some network requests that are generally needed for robust extraction. One or more of `configs` (skip client configs), `webpage` (skip initial webpage), `js` (skip js player), `initial_data` (skip initial data/next ep request). While these options can help reduce the number of requests needed or avoid some rate-limiting, they could cause issues such as missing formats or metadata. See [#860](https://github.com/yt-dlp/yt-dlp/pull/860) and [#12826](https://github.com/yt-dlp/yt-dlp/issues/12826) for more details
|
|
1926
1926
|
* `webpage_skip`: Skip extraction of embedded webpage data. One or both of `player_response`, `initial_data`. These options are for testing purposes and don't skip any network requests
|
|
1927
1927
|
* `player_params`: YouTube player parameters to use for player requests. Will overwrite any default ones set by yt-dlp.
|
|
@@ -1936,14 +1936,14 @@ The following extractors use this feature:
|
|
|
1936
1936
|
* `raise_incomplete_data`: `Incomplete Data Received` raises an error instead of reporting a warning
|
|
1937
1937
|
* `data_sync_id`: Overrides the account Data Sync ID used in Innertube API requests. This may be needed if you are using an account with `youtube:player_skip=webpage,configs` or `youtubetab:skip=webpage`
|
|
1938
1938
|
* `visitor_data`: Overrides the Visitor Data used in Innertube API requests. This should be used with `player_skip=webpage,configs` and without cookies. Note: this may have adverse effects if used improperly. If a session from a browser is wanted, you should pass cookies instead (which contain the Visitor ID)
|
|
1939
|
-
* `po_token`: Proof of Origin (PO) Token(s) to use. Comma
|
|
1939
|
+
* `po_token`: Proof of Origin (PO) Token(s) to use. Comma-separated list of PO Tokens in the format `CLIENT.CONTEXT+PO_TOKEN`, e.g. `youtube:po_token=web.gvs+XXX,web.player=XXX,web_safari.gvs+YYY`. Context can be any of `gvs` (Google Video Server URLs), `player` (Innertube player request) or `subs` (Subtitles)
|
|
1940
1940
|
* `pot_trace`: Enable debug logging for PO Token fetching. Either `true` or `false` (default)
|
|
1941
1941
|
* `fetch_pot`: Policy to use for fetching a PO Token from providers. One of `always` (always try fetch a PO Token regardless if the client requires one for the given context), `never` (never fetch a PO Token), or `auto` (default; only fetch a PO Token if the client requires one for the given context)
|
|
1942
1942
|
* `jsc_trace`: Enable debug logging for JS Challenge fetching. Either `true` or `false` (default)
|
|
1943
1943
|
* `use_ad_playback_context`: Skip preroll ads to eliminate the mandatory wait period before download. Do NOT use this when passing premium account cookies to yt-dlp, as it will result in a loss of premium formats. Only effective with the `web`, `web_safari`, `web_music` and `mweb` player clients. Either `true` or `false` (default)
|
|
1944
1944
|
|
|
1945
1945
|
#### youtube-ejs
|
|
1946
|
-
* `jitless`: Run
|
|
1946
|
+
* `jitless`: Run supported Javascript engines in JIT-less mode. Supported runtimes are `deno`, `node` and `bun`. Provides better security at the cost of performance/speed. Do note that `node` and `bun` are still considered insecure. Either `true` or `false` (default)
|
|
1947
1947
|
|
|
1948
1948
|
#### youtubepot-webpo
|
|
1949
1949
|
* `bind_to_visitor_id`: Whether to use the Visitor ID instead of Visitor Data for caching WebPO tokens. Either `true` (default) or `false`
|
|
@@ -3,15 +3,15 @@ yt_dlp/__init__.py,sha256=Nyir0qVukv9-pdfRtHPVm3EDOYDvwa1AXHOIX9oR0ps,47897
|
|
|
3
3
|
yt_dlp/__main__.py,sha256=DzqMhNY2y89eqs0Hnd4hOhjMfW9OhnhdhJdDH9yizmw,367
|
|
4
4
|
yt_dlp/aes.py,sha256=OU2t7oHbaKSIT-evc75vU58XK20b6wqgJvNlG_fois0,22033
|
|
5
5
|
yt_dlp/cache.py,sha256=npC-r6vd_HrsnTlGDvThz4D7nL4oEn06h3ABsYwk2iY,3370
|
|
6
|
-
yt_dlp/cookies.py,sha256=
|
|
6
|
+
yt_dlp/cookies.py,sha256=82uis_3XUCryx5ymJD57Z41ujoHU6Sz1tpS0NZ_JOS0,57877
|
|
7
7
|
yt_dlp/globals.py,sha256=zVr9imhoXcXHoCtV0VArT5--EGmjO1cfOxIKu4xCzSM,1259
|
|
8
8
|
yt_dlp/jsinterp.py,sha256=GfZSNQlLG8l1dKcHA216DmIq9kszszqWClqHzEUd4sk,38770
|
|
9
9
|
yt_dlp/minicurses.py,sha256=fDq7vdEn25qpZeEOdDk2YkEsckFMGAbrQaZcGNt4NUo,5328
|
|
10
|
-
yt_dlp/options.py,sha256=
|
|
10
|
+
yt_dlp/options.py,sha256=cEALlBE-OokSe0xGY5pHsLozTJpw-yR9pSVBCNp2SqI,100388
|
|
11
11
|
yt_dlp/plugins.py,sha256=EGmR0ydaahNspGrgszTNX4-YjHe93WOOhcw1gf6PZSs,8215
|
|
12
12
|
yt_dlp/socks.py,sha256=oAuAfWM6jxI8A5hHDLEKq2U2-k9NyMB_z6nrKzNE9fg,8936
|
|
13
13
|
yt_dlp/update.py,sha256=sY7gNFBQorzs7sEjRrqL5QOsTBNmGGa_FnpTtbxY1vA,25280
|
|
14
|
-
yt_dlp/version.py,sha256=
|
|
14
|
+
yt_dlp/version.py,sha256=PxIDnEKZZm0N7E7r-srr04xkMUb7UcBk3s9j9L_JNW4,327
|
|
15
15
|
yt_dlp/webvtt.py,sha256=ONkXaaNCZcX8pQhJn3iwIKyaQ34BtVDrMEdG6wRNZwM,11451
|
|
16
16
|
yt_dlp/__pyinstaller/__init__.py,sha256=-c4Zo8nQGKAm8wc_LDscxMtK7zr_YhZwRnC9CMruUBE,72
|
|
17
17
|
yt_dlp/__pyinstaller/hook-yt_dlp.py,sha256=5Rd0zV2pDskjY1KtT0wsjxv4hStx67sLCjUexsFvFus,1339
|
|
@@ -1067,7 +1067,7 @@ yt_dlp/extractor/youtube/_notifications.py,sha256=1nhavzW0e2QWFAWHkfbTU4sSXNp4vU
|
|
|
1067
1067
|
yt_dlp/extractor/youtube/_redirect.py,sha256=WWWnGEkfSGBXpZFi_bWY4XcHZ8PDeK7UsndDaTYYhQg,9005
|
|
1068
1068
|
yt_dlp/extractor/youtube/_search.py,sha256=E9raTPGjUD6mm81WBpT4AsaxyiTBHdNssgzeHwVeNOE,6552
|
|
1069
1069
|
yt_dlp/extractor/youtube/_tab.py,sha256=NcbpPvJ4XiTDDNBtaLtCZQBKyo2HuNcq_V-AalY8zj8,115736
|
|
1070
|
-
yt_dlp/extractor/youtube/_video.py,sha256=
|
|
1070
|
+
yt_dlp/extractor/youtube/_video.py,sha256=m7x1HtlqCmuQFaExYrKazSPzDxPSnYeVdEIRevrHbps,209795
|
|
1071
1071
|
yt_dlp/extractor/youtube/jsc/__init__.py,sha256=HaVFP8ikrLaE-ClAh39-S28WCF4S2KTRaSu7QvA28E8,289
|
|
1072
1072
|
yt_dlp/extractor/youtube/jsc/_director.py,sha256=92pB-KVSs6plmE5R8gpjkZL9aeoWNR0XTnGOBXMy9go,13167
|
|
1073
1073
|
yt_dlp/extractor/youtube/jsc/_registry.py,sha256=Vg9GkHKHKKPeRfUQ-XSw01mfx_2Xyodh0SJpwjawYCA,102
|
|
@@ -1075,11 +1075,11 @@ yt_dlp/extractor/youtube/jsc/provider.py,sha256=1n0UQ0WvvvLbP_ORjo41PVX6hZplnue-
|
|
|
1075
1075
|
yt_dlp/extractor/youtube/jsc/_builtin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1076
1076
|
yt_dlp/extractor/youtube/jsc/_builtin/bun.py,sha256=_iWFaF3uXw2r_TObIpqM11cko75VwTmLzezr7RlPGhM,6065
|
|
1077
1077
|
yt_dlp/extractor/youtube/jsc/_builtin/deno.py,sha256=d3bOY5t3-F6Ubbas0lpolBOWlL7OxLBhxJi035EeQQw,5549
|
|
1078
|
-
yt_dlp/extractor/youtube/jsc/_builtin/ejs.py,sha256=
|
|
1078
|
+
yt_dlp/extractor/youtube/jsc/_builtin/ejs.py,sha256=88BQ63l7HuXNhzbyYsQWpzxALYvCuL8oSN5u-Zhbsc8,13915
|
|
1079
1079
|
yt_dlp/extractor/youtube/jsc/_builtin/node.py,sha256=2D7mNEeWRVw2hD4rpydjWGHsOzccxDMwGJvx0eWNq3Q,2300
|
|
1080
1080
|
yt_dlp/extractor/youtube/jsc/_builtin/quickjs.py,sha256=y1FSPGgrjcUbsiwC6rOcbOsK0BbLWlzfZwl8VjT7MdA,2233
|
|
1081
1081
|
yt_dlp/extractor/youtube/jsc/_builtin/vendor/__init__.py,sha256=aLGEcFSHt-ub1H21jHp52rJTDKZmWXV-PJd_0hVCcio,518
|
|
1082
|
-
yt_dlp/extractor/youtube/jsc/_builtin/vendor/_info.py,sha256=
|
|
1082
|
+
yt_dlp/extractor/youtube/jsc/_builtin/vendor/_info.py,sha256=i5nCP-v40uoRQZ7WPlGMinuseXSffVqaiGmSSF197Is,1056
|
|
1083
1083
|
yt_dlp/extractor/youtube/jsc/_builtin/vendor/yt.solver.bun.lib.js,sha256=ZfLzSdQETBfPWniQsgtce3zyeYeBIr95s7M_f0v2LNQ,237
|
|
1084
1084
|
yt_dlp/extractor/youtube/jsc/_builtin/vendor/yt.solver.core.js,sha256=WM1Xb6fCNxVU_ELUONasGs5fPNHnHW5p9u1irRMRPyM,17016
|
|
1085
1085
|
yt_dlp/extractor/youtube/jsc/_builtin/vendor/yt.solver.deno.lib.js,sha256=6DFMNBXVnY31f9GSysXuQKziVjN-qfUZn0xwAv5Ozs8,245
|
|
@@ -1107,7 +1107,7 @@ yt_dlp/postprocessor/__init__.py,sha256=OWCnC8vk4BteCAIBVrnwMWr12Y6zy1PiBHmEnAZ9
|
|
|
1107
1107
|
yt_dlp/postprocessor/common.py,sha256=TGv4iP7YWf__PmSSFWhrvshzZw3-yl8Urzoh0doSy-s,8424
|
|
1108
1108
|
yt_dlp/postprocessor/embedthumbnail.py,sha256=WykLv12Jct9OX4SBPePT7HI8ykSMzaD4pyk8pGZYpMY,10530
|
|
1109
1109
|
yt_dlp/postprocessor/exec.py,sha256=-Oz3sUph4mYQ-bbhT2nadLcHXS4LHiDDcaY83X6RJDs,1542
|
|
1110
|
-
yt_dlp/postprocessor/ffmpeg.py,sha256=
|
|
1110
|
+
yt_dlp/postprocessor/ffmpeg.py,sha256=engqaUIAndaeuXvH5XXs-SdyWw6d4vT1Djh4VrS8PqA,48251
|
|
1111
1111
|
yt_dlp/postprocessor/metadataparser.py,sha256=_tmPGbgQ95PBabSJBwqiuA00cpvq60AocKOYMKlmNKg,4381
|
|
1112
1112
|
yt_dlp/postprocessor/modify_chapters.py,sha256=ehN1D-SGqGtY1F9vaWeGOWuBULnfPLvQ1QHtO58O3lU,17827
|
|
1113
1113
|
yt_dlp/postprocessor/movefilesafterdownload.py,sha256=yfO2Waylcqrab0HJKY-PPTCYuxweSTKdEuGUq0fp2sI,1838
|
|
@@ -1115,21 +1115,21 @@ yt_dlp/postprocessor/sponsorblock.py,sha256=McDfxOTwAmtUnD9TxmRqm9Gyf6DRW4W6bBo5
|
|
|
1115
1115
|
yt_dlp/postprocessor/xattrpp.py,sha256=PVKZpRXvWj3lHWU8GnyzZKnELjtO7vNYqZkbpJcqZBA,3305
|
|
1116
1116
|
yt_dlp/utils/__init__.py,sha256=fktzbumix8bd9Xi288JebTYkxCuNhG21qkcSno-3g_s,283
|
|
1117
1117
|
yt_dlp/utils/_deprecated.py,sha256=5KjqmcPW8uIc77xkhvz1gwxBb-jBF7cwG5nI6xxHebU,1300
|
|
1118
|
-
yt_dlp/utils/_jsruntime.py,sha256=
|
|
1118
|
+
yt_dlp/utils/_jsruntime.py,sha256=cPLHquABqggAepWHIYlG9zgrnwjV4Le55mr8Fx71nCo,4319
|
|
1119
1119
|
yt_dlp/utils/_legacy.py,sha256=hmczdkw5SELzsFcB2AUblAY9bw8gIBDuPFTBlYvXe_4,7858
|
|
1120
|
-
yt_dlp/utils/_utils.py,sha256=
|
|
1120
|
+
yt_dlp/utils/_utils.py,sha256=uPKu-EMJD14NgU7XXiZL0_gMicnnkl8hqXufEzfZY88,190861
|
|
1121
1121
|
yt_dlp/utils/networking.py,sha256=2GeL1sPpEvQaj_E8J_3Xl-TkalawkmoPCZTwo5akU08,8651
|
|
1122
1122
|
yt_dlp/utils/progress.py,sha256=t9kVvJ0oWuEqRzo9fdFbIhHUBtO_8mg348QwZ1faqLo,3261
|
|
1123
1123
|
yt_dlp/utils/traversal.py,sha256=64E3RcZ56iSX50RI_HbKdDNftkETMLBaEPX791_b7yQ,18265
|
|
1124
1124
|
yt_dlp/utils/jslib/__init__.py,sha256=CbdJiRA7Eh5PnjF2V4lDTcg0J0XjBMaaq0H4pCfq9Tk,87
|
|
1125
1125
|
yt_dlp/utils/jslib/devalue.py,sha256=7DCGK_zUN0ZeV5hwPT06zaRMUxX_hyUyFWqs79rxw24,5621
|
|
1126
|
-
yt_dlp-2025.12.
|
|
1127
|
-
yt_dlp-2025.12.
|
|
1128
|
-
yt_dlp-2025.12.
|
|
1129
|
-
yt_dlp-2025.12.
|
|
1130
|
-
yt_dlp-2025.12.
|
|
1131
|
-
yt_dlp-2025.12.
|
|
1132
|
-
yt_dlp-2025.12.
|
|
1133
|
-
yt_dlp-2025.12.
|
|
1134
|
-
yt_dlp-2025.12.
|
|
1135
|
-
yt_dlp-2025.12.
|
|
1126
|
+
yt_dlp-2025.12.8.data/data/share/bash-completion/completions/yt-dlp,sha256=b0pb9GLseKD27CjnLE6LlhVxhfmQjmyqV6r_CRbd6ko,5989
|
|
1127
|
+
yt_dlp-2025.12.8.data/data/share/doc/yt_dlp/README.txt,sha256=0jSXEocrRZu6D-cGk7g-sIg27eUJakwhFmX24eDa6No,164885
|
|
1128
|
+
yt_dlp-2025.12.8.data/data/share/fish/vendor_completions.d/yt-dlp.fish,sha256=5rUmfCOeb2nAYlsQohe9x05BeXyEi3AREXnpUXOPKbA,51487
|
|
1129
|
+
yt_dlp-2025.12.8.data/data/share/man/man1/yt-dlp.1,sha256=-AggAzgN4lXII3i5SabhWPQySb72BpCguchdmX2v-Ys,159420
|
|
1130
|
+
yt_dlp-2025.12.8.data/data/share/zsh/site-functions/_yt-dlp,sha256=pNhu8tT4ZKrksLRI2mXLqarzGGhnOlm_hkCBVhSxLzg,5985
|
|
1131
|
+
yt_dlp-2025.12.8.dist-info/METADATA,sha256=cneILaUO4spCPyAOLLj_U567CcA-5i4jT8e9GLG3DOA,180268
|
|
1132
|
+
yt_dlp-2025.12.8.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
1133
|
+
yt_dlp-2025.12.8.dist-info/entry_points.txt,sha256=vWfetvzYgZIwDfMW6BjCe0Cy4pmTZEXRNzxAkfYlRJA,103
|
|
1134
|
+
yt_dlp-2025.12.8.dist-info/licenses/LICENSE,sha256=fhLl30uuEsshWBuhV87SDhmGoFCN0Q0Oikq5pM-U6Fw,1211
|
|
1135
|
+
yt_dlp-2025.12.8.dist-info/RECORD,,
|
|
File without changes
|
{yt_dlp-2025.12.6.232939.dev0.data → yt_dlp-2025.12.8.data}/data/share/zsh/site-functions/_yt-dlp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|