Misc changes

This commit is contained in:
2026-01-26 21:14:27 +00:00
parent 36a1a73beb
commit 129cce49b1
8 changed files with 215 additions and 78 deletions

View File

@@ -109,7 +109,7 @@ Location of the main configuration file; either the path to the config
or its containing directory (\[dq]-\[dq] for stdin).
Can be used multiple times and inside other configuration files
.TP
--plugin-dirs \f[I]PATH\f[R]
--plugin-dirs \f[I]DIR\f[R]
Path to an additional directory to search for plugins.
This option can be used multiple times to add multiple directories.
Use \[dq]default\[dq] to search the default plugin directories (default)
@@ -118,6 +118,37 @@ Use \[dq]default\[dq] to search the default plugin directories (default)
Clear plugin directories to search, including defaults and those
provided by previous --plugin-dirs
.TP
--js-runtimes \f[I]RUNTIME[:PATH]\f[R]
Additional JavaScript runtime to enable, with an optional location for
the runtime (either the path to the binary or its containing directory).
This option can be used multiple times to enable multiple runtimes.
Supported runtimes are (in order of priority, from highest to lowest):
deno, node, quickjs, bun.
Only \[dq]deno\[dq] is enabled by default.
The highest priority runtime that is both enabled and available will be
used.
In order to use a lower priority runtime when \[dq]deno\[dq] is
available, --no-js- runtimes needs to be passed before enabling other
runtimes
.TP
--no-js-runtimes
Clear JavaScript runtimes to enable, including defaults and those
provided by previous --js-runtimes
.TP
--remote-components \f[I]COMPONENT\f[R]
Remote components to allow yt-dlp to fetch when required.
This option is currently not needed if you are using an official
executable or have the requisite version of the yt-dlp-ejs package
installed.
You can use this option multiple times to allow multiple components.
Supported values: ejs:npm (external JavaScript components from npm),
ejs:github (external JavaScript components from yt-dlp-ejs GitHub).
By default, no remote components are allowed
.TP
--no-remote-components
Disallow fetching of all remote components, including any previously
allowed by --remote-components or defaults.
.TP
--flat-playlist
Do not extract a playlist\[aq]s URL result entries; some entry metadata
may be missing and downloading may be bypassed
@@ -1123,8 +1154,8 @@ API (https://sponsor.ajay.app)
--sponsorblock-mark \f[I]CATS\f[R]
SponsorBlock categories to create chapters for, separated by commas.
Available categories are sponsor, intro, outro, selfpromo, preview,
filler, interaction, music_offtopic, poi_highlight, chapter, all and
default (=all).
filler, interaction, music_offtopic, hook, poi_highlight, chapter, all
and default (=all).
You can prefix the category with a \[dq]-\[dq] to exclude it.
See [1] for descriptions of the categories.
E.g.
@@ -1210,7 +1241,7 @@ The configuration is loaded from the following locations:
\f[B]Main Configuration\f[R]:
.RS 4
.IP \[bu] 2
The file given to \f[V]--config-location\f[R]
The file given to \f[V]--config-locations\f[R]
.RE
.IP "2." 3
\f[B]Portable Configuration\f[R]: (Recommended for portable
@@ -1389,7 +1420,7 @@ Environment variables are normally specified as
.IP \[bu] 2
yt-dlp also allows using UNIX-style variables on Windows for path-like
options; e.g.
\f[V]--output\f[R], \f[V]--config-location\f[R]
\f[V]--output\f[R], \f[V]--config-locations\f[R]
.IP \[bu] 2
If unset, \f[V]${XDG_CONFIG_HOME}\f[R] defaults to
\f[V]\[ti]/.config\f[R] and \f[V]${XDG_CACHE_HOME}\f[R] to
@@ -2660,10 +2691,15 @@ respectively
\f[V]player_client\f[R]: Clients to extract video data from.
The currently available clients are \f[V]web\f[R], \f[V]web_safari\f[R],
\f[V]web_embedded\f[R], \f[V]web_music\f[R], \f[V]web_creator\f[R],
\f[V]mweb\f[R], \f[V]ios\f[R], \f[V]android\f[R], \f[V]android_vr\f[R],
\f[V]tv\f[R], \f[V]tv_simply\f[R] and \f[V]tv_embedded\f[R].
By default, \f[V]tv,web_safari,web\f[R] is used, and
\f[V]tv,web_creator,web\f[R] is used with premium accounts.
\f[V]mweb\f[R], \f[V]ios\f[R], \f[V]android\f[R],
\f[V]android_sdkless\f[R], \f[V]android_vr\f[R], \f[V]tv\f[R],
\f[V]tv_simply\f[R], \f[V]tv_downgraded\f[R], and \f[V]tv_embedded\f[R].
By default, \f[V]tv,android_sdkless,web\f[R] is used.
If no JavaScript runtime is available, then
\f[V]android_sdkless,web_safari,web\f[R] is used.
If logged-in cookies are passed to yt-dlp, then
\f[V]tv_downgraded,web_safari,web\f[R] is used for free accounts and
\f[V]tv_downgraded,web_creator,web\f[R] is used for premium accounts.
The \f[V]web_music\f[R] client is added for \f[V]music.youtube.com\f[R]
URLs when logged-in cookies are used.
The \f[V]web_embedded\f[R] client is added for age-restricted videos but
@@ -2711,9 +2747,10 @@ You can use \f[V]actual\f[R] to go with what is prescribed by the site
.IP \[bu] 2
\f[V]player_js_version\f[R]: The player javascript version to use for
n/sig deciphering, in the format of
\f[V]signature_timestamp\[at]hash\f[R].
Currently, the default is to force \f[V]20348\[at]0004de42\f[R].
You can use \f[V]actual\f[R] to go with what is prescribed by the site
\f[V]signature_timestamp\[at]hash\f[R] (e.g.
\f[V]20348\[at]0004de42\f[R]).
The default is to use what is prescribed by the site, and can be
selected with \f[V]actual\f[R]
.IP \[bu] 2
\f[V]comment_sort\f[R]: \f[V]top\f[R] or \f[V]new\f[R] (default) -
choose comment sorting mode (on YouTube\[aq]s side)
@@ -2785,6 +2822,17 @@ client requires one for the given context)
extraction and download stages in order to ensure the formats are
available.
The default is \f[V]6\f[R] seconds
.IP \[bu] 2
\f[V]jsc_trace\f[R]: Enable debug logging for JS Challenge fetching.
Either \f[V]true\f[R] or \f[V]false\f[R] (default)
.SS youtube-ejs
.IP \[bu] 2
\f[V]jitless\f[R]: Run suported Javascript engines in JIT-less mode.
Supported runtimes are \f[V]deno\f[R], \f[V]node\f[R] and \f[V]bun\f[R].
Provides better security at the cost of performance/speed.
Do note that \f[V]node\f[R] and \f[V]bun\f[R] are still considered
unsecure.
Either \f[V]true\f[R] or \f[V]false\f[R] (default)
.SS youtubepot-webpo
.IP \[bu] 2
\f[V]bind_to_visitor_id\f[R]: Whether to use the Visitor ID instead of
@@ -3099,7 +3147,7 @@ repository, tag \f[V]2023.09.24\f[R]
yt-dlp --update-to nightly
# To install nightly with pip:
python3 -m pip install -U --pre \[dq]yt-dlp[default]\[dq]
python -m pip install -U --pre \[dq]yt-dlp[default]\[dq]
\f[R]
.fi
.PP
@@ -3109,11 +3157,12 @@ You can suppress this warning by adding \f[V]--no-update\f[R] to your
command or configuration file.
.SS DEPENDENCIES
.PP
Python versions 3.9+ (CPython) and 3.11+ (PyPy) are supported.
Python versions 3.10+ (CPython) and 3.11+ (PyPy) are supported.
Other versions and implementations may or may not work correctly.
.PP
While all the other dependencies are optional, \f[V]ffmpeg\f[R] and
\f[V]ffprobe\f[R] are highly recommended
While all the other dependencies are optional, \f[V]ffmpeg\f[R],
\f[V]ffprobe\f[R], \f[V]yt-dlp-ejs\f[R] and a JavaScript runtime are
highly recommended
.SS Strongly recommended
.IP \[bu] 2
\f[B]ffmpeg\f[R] and \f[B]ffprobe\f[R] (https://www.ffmpeg.org) -
@@ -3135,6 +3184,23 @@ for details on the specific issues solved by these builds
\f[B]NOT\f[R] the Python package of the same
name (https://pypi.org/project/ffmpeg)
.RE
.IP \[bu] 2
\f[B]yt-dlp-ejs\f[R] (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.
.RS 2
.PP
A JavaScript runtime like \f[B]deno\f[R] (https://deno.land)
(recommended), \f[B]node.js\f[R] (https://nodejs.org),
\f[B]bun\f[R] (https://bun.sh), or
\f[B]QuickJS\f[R] (https://bellard.org/quickjs/) is also required to run
yt-dlp-ejs.
See the wiki (https://github.com/yt-dlp/yt-dlp/wiki/EJS).
.RE
.SS Networking
.IP \[bu] 2
\f[B]certifi\f[R] (https://github.com/certifi/python-certifi)* -
@@ -3208,8 +3274,10 @@ For decrypting AES-128 HLS streams and various other data.
Licensed under
BSD-2-Clause (https://github.com/Legrandin/pycryptodome/blob/master/LICENSE.rst)
.IP \[bu] 2
\f[B]phantomjs\f[R] (https://github.com/ariya/phantomjs) - Used in
extractors where javascript needs to be run.
\f[B]phantomjs\f[R] (https://github.com/ariya/phantomjs) - Used in some
extractors where JavaScript needs to be run.
No longer used for YouTube.
To be deprecated in the near future.
Licensed under
BSD-3-Clause (https://github.com/ariya/phantomjs/blob/master/LICENSE.BSD)
.IP \[bu] 2
@@ -3258,14 +3326,14 @@ You can run the following commands:
.IP
.nf
\f[C]
python3 devscripts/install_deps.py --include pyinstaller
python3 devscripts/make_lazy_extractors.py
python3 -m bundle.pyinstaller
python devscripts/install_deps.py --include-group pyinstaller
python devscripts/make_lazy_extractors.py
python -m bundle.pyinstaller
\f[R]
.fi
.PP
On some systems, you may need to use \f[V]py\f[R] or \f[V]python\f[R]
instead of \f[V]python3\f[R].
On some systems, you may need to use \f[V]py\f[R] or \f[V]python3\f[R]
instead of \f[V]python\f[R].
.PP
\f[V]python -m bundle.pyinstaller\f[R] accepts any arguments that can be
passed to \f[V]pyinstaller\f[R], such as \f[V]--onefile/-F\f[R] or
@@ -3283,7 +3351,7 @@ officially supported.
This may or may not work correctly.
.SS Platform-independent Binary (UNIX)
.PP
You will need the build tools \f[V]python\f[R] (3.9+), \f[V]zip\f[R],
You will need the build tools \f[V]python\f[R] (3.10+), \f[V]zip\f[R],
\f[V]make\f[R] (GNU), \f[V]pandoc\f[R]* and \f[V]pytest\f[R]*.
.PP
After installing these, simply run \f[V]make\f[R].
@@ -3819,7 +3887,7 @@ Features marked with a \f[B]*\f[R] have been back-ported to youtube-dl
Some of yt-dlp\[aq]s default options are different from that of
youtube-dl and youtube-dlc:
.IP \[bu] 2
yt-dlp supports only Python 3.9+, and will remove support for more
yt-dlp supports only Python 3.10+, and will remove support for more
versions as they become
EOL (https://devguide.python.org/versions/#python-release-cycle); while
youtube-dl still supports Python 2.6+ and