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

@@ -168,11 +168,14 @@ contain code from other projects with different licenses.
Most notably, the PyInstaller-bundled executables include GPLv3+
licensed code, and as such the combined work is licensed under GPLv3+.
See THIRD_PARTY_LICENSES.txt for details.
The zipimport Unix executable (yt-dlp) contains ISC licensed code from
meriyah and MIT licensed code from astring.
The zipimport binary (yt-dlp), the source tarball (yt-dlp.tar.gz), and
the PyPI source distribution & wheel only contain code licensed under
the Unlicense.
See THIRD_PARTY_LICENSES.txt for more details.
The git repository, the source tarball (yt-dlp.tar.gz), the PyPI source
distribution and the PyPI built distribution (wheel) only contain code
licensed under the Unlicense.
Note: The manpages, shell completion (autocomplete) files etc. are
available inside the source tarball
@@ -231,7 +234,7 @@ install or update to the nightly release before submitting a bug report:
yt-dlp --update-to nightly
# To install nightly with pip:
python3 -m pip install -U --pre "yt-dlp[default]"
python -m pip install -U --pre "yt-dlp[default]"
When running a yt-dlp version that is older than 90 days, you will see a
warning message suggesting to update to the latest version. You can
@@ -240,11 +243,11 @@ configuration file.
DEPENDENCIES
Python versions 3.9+ (CPython) and 3.11+ (PyPy) are supported. Other
Python versions 3.10+ (CPython) and 3.11+ (PyPy) are supported. Other
versions and implementations may or may not work correctly.
While all the other dependencies are optional, ffmpeg and ffprobe are
highly recommended
While all the other dependencies are optional, ffmpeg, ffprobe,
yt-dlp-ejs and a JavaScript runtime are highly recommended
Strongly recommended
@@ -261,6 +264,12 @@ Strongly recommended
Important: What you need is ffmpeg binary, NOT the Python package of
the same name
- yt-dlp-ejs - Required for deciphering YouTube n/sig values. Licensed
under Unlicense, bundles MIT and ISC components.
A JavaScript runtime like deno (recommended), node.js, bun, or
QuickJS is also required to run yt-dlp-ejs. See the wiki.
Networking
- certifi* - Provides Mozilla's root certificate bundle. Licensed
@@ -299,8 +308,9 @@ Misc
- pycryptodomex* - For decrypting AES-128 HLS streams and various
other data. Licensed under BSD-2-Clause
- phantomjs - Used in extractors where javascript needs to be run.
Licensed under BSD-3-Clause
- 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
- secretstorage* - For --cookies-from-browser to access the Gnome
keyring while decrypting cookies of Chromium-based browsers on
Linux. Licensed under BSD-3-Clause
@@ -333,11 +343,11 @@ will be built for the same CPU architecture as the Python used.
You can run the following commands:
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
On some systems, you may need to use py or python instead of python3.
On some systems, you may need to use py or python3 instead of python.
python -m bundle.pyinstaller accepts any arguments that can be passed to
pyinstaller, such as --onefile/-F or --onedir/-D, which is further
@@ -352,7 +362,7 @@ may not work correctly.
Platform-independent Binary (UNIX)
You will need the build tools python (3.9+), zip, make (GNU), pandoc*
You will need the build tools python (3.10+), zip, make (GNU), pandoc*
and pytest*.
After installing these, simply run make.
@@ -444,7 +454,7 @@ General Options:
containing directory ("-" for stdin). Can be
used multiple times and inside other
configuration files
--plugin-dirs PATH Path to an additional directory to search
--plugin-dirs DIR Path to an additional directory to search
for plugins. This option can be used
multiple times to add multiple directories.
Use "default" to search the default plugin
@@ -452,6 +462,37 @@ General Options:
--no-plugin-dirs Clear plugin directories to search,
including defaults and those provided by
previous --plugin-dirs
--js-runtimes RUNTIME[:PATH] 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 "deno" 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 "deno" is available, --no-js-
runtimes needs to be passed before enabling
other runtimes
--no-js-runtimes Clear JavaScript runtimes to enable,
including defaults and those provided by
previous --js-runtimes
--remote-components COMPONENT 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
--no-remote-components Disallow fetching of all remote components,
including any previously allowed by
--remote-components or defaults.
--flat-playlist Do not extract a playlist's URL result
entries; some entry metadata may be missing
and downloading may be bypassed
@@ -1183,11 +1224,12 @@ SponsorBlock API
for, separated by commas. Available
categories are sponsor, intro, outro,
selfpromo, preview, filler, interaction,
music_offtopic, poi_highlight, chapter, all
and default (=all). You can prefix the
category with a "-" to exclude it. See [1]
for descriptions of the categories. E.g.
--sponsorblock-mark all,-preview
music_offtopic, hook, poi_highlight,
chapter, all and default (=all). You can
prefix the category with a "-" to exclude
it. See [1] for descriptions of the
categories. E.g. --sponsorblock-mark
all,-preview
[1] https://wiki.sponsor.ajay.app/w/Segment_Categories
--sponsorblock-remove CATS SponsorBlock categories to be removed from
the video file, separated by commas. If a
@@ -1256,7 +1298,7 @@ a configuration file. The configuration is loaded from the following
locations:
1. Main Configuration:
- The file given to --config-location
- The file given to --config-locations
2. Portable Configuration: (Recommended for portable installations)
- If using a binary, yt-dlp.conf in the same directory as the
binary
@@ -1371,7 +1413,7 @@ Notes about environment variables
${VARIABLE}/$VARIABLE on UNIX and %VARIABLE% on Windows; but is
always shown as ${VARIABLE} in this documentation
- yt-dlp also allows using UNIX-style variables on Windows for
path-like options; e.g. --output, --config-location
path-like options; e.g. --output, --config-locations
- If unset, ${XDG_CONFIG_HOME} defaults to ~/.config and
${XDG_CACHE_HOME} to ~/.cache
- On Windows, ~ points to ${HOME} if present; or, ${USERPROFILE} or
@@ -2253,13 +2295,17 @@ youtube
respectively
- 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_vr, tv, tv_simply and
tv_embedded. By default, tv,web_safari,web is used, and
tv,web_creator,web is used with 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
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
@@ -2285,9 +2331,9 @@ youtube
debugging purposes. You can use actual to go with what is prescribed
by the site
- player_js_version: The player javascript version to use for n/sig
deciphering, in the format of signature_timestamp@hash. Currently,
the default is to force 20348@0004de42. You can use actual to go
with what is prescribed by the site
deciphering, in the format of signature_timestamp@hash (e.g.
20348@0004de42). The default is to use what is prescribed by the
site, and can be selected with actual
- comment_sort: top or new (default) - choose comment sorting mode (on
YouTube's side)
- max_comments: Limit the amount of comments to gather.
@@ -2332,6 +2378,15 @@ youtube
- playback_wait: Duration (in seconds) to wait inbetween the
extraction and download stages in order to ensure the formats are
available. The default is 6 seconds
- jsc_trace: Enable debug logging for JS Challenge fetching. Either
true or false (default)
youtube-ejs
- jitless: Run suported 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 unsecure. Either true or false (default)
youtubepot-webpo
@@ -2919,7 +2974,7 @@ Differences in default behavior
Some of yt-dlp's default options are different from that of youtube-dl
and youtube-dlc:
- 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; while youtube-dl still supports Python
2.6+ and 3.2+
- The options --auto-number (-A), --title (-t) and --literal (-l), no