|
|
@ -61,7 +61,6 @@
|
|
|
|
* [Opening an Issue](CONTRIBUTING.md#opening-an-issue)
|
|
|
|
* [Opening an Issue](CONTRIBUTING.md#opening-an-issue)
|
|
|
|
* [Developer Instructions](CONTRIBUTING.md#developer-instructions)
|
|
|
|
* [Developer Instructions](CONTRIBUTING.md#developer-instructions)
|
|
|
|
* [MORE](#more)
|
|
|
|
* [MORE](#more)
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# NEW FEATURES
|
|
|
|
# NEW FEATURES
|
|
|
@ -123,7 +122,7 @@ # NEW FEATURES
|
|
|
|
|
|
|
|
|
|
|
|
### Differences in default behavior
|
|
|
|
### Differences in default behavior
|
|
|
|
|
|
|
|
|
|
|
|
Some of yt-dlp's default options are different from that of youtube-dl and youtube-dlc.
|
|
|
|
Some of yt-dlp's default options are different from that of youtube-dl and youtube-dlc:
|
|
|
|
|
|
|
|
|
|
|
|
* The options `--auto-number` (`-A`), `--title` (`-t`) and `--literal` (`-l`), no longer work. See [removed options](#Removed) for details
|
|
|
|
* The options `--auto-number` (`-A`), `--title` (`-t`) and `--literal` (`-l`), no longer work. See [removed options](#Removed) for details
|
|
|
|
* `avconv` is not supported as as an alternative to `ffmpeg`
|
|
|
|
* `avconv` is not supported as as an alternative to `ffmpeg`
|
|
|
@ -143,7 +142,7 @@ ### Differences in default behavior
|
|
|
|
* If `ffmpeg` is used as the downloader, the downloading and merging of formats happen in a single step when possible. Use `--compat-options no-direct-merge` to revert this
|
|
|
|
* If `ffmpeg` is used as the downloader, the downloading and merging of formats happen in a single step when possible. Use `--compat-options no-direct-merge` to revert this
|
|
|
|
* Thumbnail embedding in `mp4` is done with mutagen if possible. Use `--compat-options embed-thumbnail-atomicparsley` to force the use of AtomicParsley instead
|
|
|
|
* Thumbnail embedding in `mp4` is done with mutagen if possible. Use `--compat-options embed-thumbnail-atomicparsley` to force the use of AtomicParsley instead
|
|
|
|
* Some private fields such as filenames are removed by default from the infojson. Use `--no-clean-infojson` or `--compat-options no-clean-infojson` to revert this
|
|
|
|
* Some private fields such as filenames are removed by default from the infojson. Use `--no-clean-infojson` or `--compat-options no-clean-infojson` to revert this
|
|
|
|
* When `--embed-subs` and `--write-subs` are used together, the subtitles are written to disk and also embedded in the media file. You can use just `--embed-subs` to embed the subs and automatically delete the seperate file. See [#630 (comment)](https://github.com/yt-dlp/yt-dlp/issues/630#issuecomment-893659460) for more info. `--compat-options no-keep-subs` can be used to revert this.
|
|
|
|
* When `--embed-subs` and `--write-subs` are used together, the subtitles are written to disk and also embedded in the media file. You can use just `--embed-subs` to embed the subs and automatically delete the seperate file. See [#630 (comment)](https://github.com/yt-dlp/yt-dlp/issues/630#issuecomment-893659460) for more info. `--compat-options no-keep-subs` can be used to revert this
|
|
|
|
|
|
|
|
|
|
|
|
For ease of use, a few more compat options are available:
|
|
|
|
For ease of use, a few more compat options are available:
|
|
|
|
* `--compat-options all`: Use all compat options
|
|
|
|
* `--compat-options all`: Use all compat options
|
|
|
@ -152,17 +151,14 @@ ### Differences in default behavior
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# INSTALLATION
|
|
|
|
# INSTALLATION
|
|
|
|
yt-dlp is not platform specific. So it should work on your Unix box, on Windows or on macOS
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
You can install yt-dlp using one of the following methods:
|
|
|
|
You can install yt-dlp using one of the following methods:
|
|
|
|
* Download [the binary](#release-files) from the [latest release](https://github.com/yt-dlp/yt-dlp/releases/latest)
|
|
|
|
|
|
|
|
* With Homebrew, `brew install yt-dlp/taps/yt-dlp`
|
|
|
|
|
|
|
|
* Use [PyPI package](https://pypi.org/project/yt-dlp): `python3 -m pip install --upgrade yt-dlp`
|
|
|
|
|
|
|
|
* Install master branch: `python3 -m pip3 install -U https://github.com/yt-dlp/yt-dlp/archive/master.zip`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Note that on some systems, you may need to use `py` or `python` instead of `python3`
|
|
|
|
#### Using the release binary
|
|
|
|
|
|
|
|
|
|
|
|
UNIX users (Linux, macOS, BSD) can also install the [latest release](https://github.com/yt-dlp/yt-dlp/releases/latest) one of the following ways:
|
|
|
|
You can simply download the [correct binary file](#release-files) for your OS: **[[Windows](https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.exe)] [[UNIX-like](https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp)]**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
In UNIX-like OSes (MacOS, Linux, BSD), you can also install the same in one of the following ways:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
```
|
|
|
|
sudo curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp
|
|
|
|
sudo curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp
|
|
|
@ -179,16 +175,41 @@ # INSTALLATION
|
|
|
|
sudo chmod a+rx /usr/local/bin/yt-dlp
|
|
|
|
sudo chmod a+rx /usr/local/bin/yt-dlp
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
macOS or Linux users that are using Homebrew (formerly known as Linuxbrew for Linux users) can also install it by:
|
|
|
|
PS: The manpages, shell completion files etc. are available in [yt-dlp.tar.gz](https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.tar.gz)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### With [PIP](https://pypi.org/project/pip)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
You can install the [PyPI package](https://pypi.org/project/yt-dlp) with:
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
python3 -m pip install -U yt-dlp
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
On some systems (like Termux), it is not possible to install pycryptodomex. In that case, install without dependancies:
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
python3 -m pip install --no-deps -U yt-dlp
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
You can also install the master branch with:
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
python3 -m pip3 install -U https://github.com/yt-dlp/yt-dlp/archive/master.zip
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Note that on some systems, you may need to use `py` or `python` instead of `python3`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### With [Homebrew](https://brew.sh)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
macOS or Linux users that are using Homebrew can also install it by:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
```
|
|
|
|
brew install yt-dlp/taps/yt-dlp
|
|
|
|
brew install yt-dlp/taps/yt-dlp
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### UPDATE
|
|
|
|
### UPDATE
|
|
|
|
You can use `yt-dlp -U` to update if you are using the provided release.
|
|
|
|
You can use `yt-dlp -U` to update if you are [using the provided release](#using-the-release-binary)
|
|
|
|
If you are using `pip`, simply re-run the same command that was used to install the program.
|
|
|
|
|
|
|
|
If you have installed using Homebrew, run `brew upgrade yt-dlp/taps/yt-dlp`
|
|
|
|
If you [installed with pip](#with-pip), simply re-run the same command that was used to install the program
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
If you [installed using Homebrew](#with-homebrew), run `brew upgrade yt-dlp/taps/yt-dlp`
|
|
|
|
|
|
|
|
|
|
|
|
### RELEASE FILES
|
|
|
|
### RELEASE FILES
|
|
|
|
|
|
|
|
|
|
|
@ -196,18 +217,18 @@ #### Recommended
|
|
|
|
|
|
|
|
|
|
|
|
File|Description
|
|
|
|
File|Description
|
|
|
|
:---|:---
|
|
|
|
:---|:---
|
|
|
|
[yt-dlp](https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp)|Platform independant binary. Needs Python (Recommended for **UNIX-like systems**)
|
|
|
|
[yt-dlp](https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp)|Platform-independant binary. Needs Python (recommended for **UNIX-like systems**)
|
|
|
|
[yt-dlp.exe](https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.exe)|Windows (Win7 SP1+) standalone x64 binary (Recommended for **Windows**)
|
|
|
|
[yt-dlp.exe](https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.exe)|Windows (Win7 SP1+) standalone x64 binary (recommended for **Windows**)
|
|
|
|
|
|
|
|
|
|
|
|
#### Alternatives
|
|
|
|
#### Alternatives
|
|
|
|
|
|
|
|
|
|
|
|
File|Description
|
|
|
|
File|Description
|
|
|
|
:---|:---
|
|
|
|
:---|:---
|
|
|
|
[yt-dlp_macos](https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_macos)|MacOS (10.15+) standalone executable
|
|
|
|
[yt-dlp_macos](https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_macos)|MacOS (10.15+) standalone executable
|
|
|
|
[yt-dlp_x86.exe](https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_x86.exe)|Windows (Vista SP2+) standalone x86 (32bit) binary
|
|
|
|
[yt-dlp_x86.exe](https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_x86.exe)|Windows (Vista SP2+) standalone x86 (32-bit) binary
|
|
|
|
[yt-dlp_min.exe](https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_min.exe)|Windows (Win7 SP1+) standalone x64 binary built with `py2exe`.<br/> Does not contain `pycryptodomex`, needs VC++14
|
|
|
|
[yt-dlp_min.exe](https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_min.exe)|Windows (Win7 SP1+) standalone x64 binary built with `py2exe`.<br/> Does not contain `pycryptodomex`, needs VC++14
|
|
|
|
[yt-dlp_win.zip](https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_win.zip)|Unpackaged windows executable (No auto-update)
|
|
|
|
[yt-dlp_win.zip](https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_win.zip)|Unpackaged Windows executable (no auto-update)
|
|
|
|
[yt-dlp_macos.zip](https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_macos.zip)|Unpackaged MacOS (10.15+) executable (No auto-update)
|
|
|
|
[yt-dlp_macos.zip](https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_macos.zip)|Unpackaged MacOS (10.15+) executable (no auto-update)
|
|
|
|
|
|
|
|
|
|
|
|
#### Misc
|
|
|
|
#### Misc
|
|
|
|
|
|
|
|
|
|
|
@ -227,20 +248,20 @@ ### DEPENDENCIES
|
|
|
|
|
|
|
|
|
|
|
|
While all the other dependancies are optional, `ffmpeg` and `ffprobe` are highly recommended
|
|
|
|
While all the other dependancies are optional, `ffmpeg` and `ffprobe` are highly recommended
|
|
|
|
* [**ffmpeg** and **ffprobe**](https://www.ffmpeg.org) - Required for [merging seperate video and audio files](#format-selection) as well as for various [post-processing](#post-processing-options) tasks. Licence [depends on the build](https://www.ffmpeg.org/legal.html)
|
|
|
|
* [**ffmpeg** and **ffprobe**](https://www.ffmpeg.org) - Required for [merging seperate video and audio files](#format-selection) as well as for various [post-processing](#post-processing-options) tasks. Licence [depends on the build](https://www.ffmpeg.org/legal.html)
|
|
|
|
* [**mutagen**](https://github.com/quodlibet/mutagen) - For embedding thumbnail in certain formats. Licenced under [GPLv2+](https://github.com/quodlibet/mutagen/blob/master/COPYING)
|
|
|
|
* [**mutagen**](https://github.com/quodlibet/mutagen) - For embedding thumbnail in certain formats. Licensed under [GPLv2+](https://github.com/quodlibet/mutagen/blob/master/COPYING)
|
|
|
|
* [**pycryptodomex**](https://github.com/Legrandin/pycryptodome) - For decrypting AES-128 HLS streams and various other data. Licenced under [BSD2](https://github.com/Legrandin/pycryptodome/blob/master/LICENSE.rst)
|
|
|
|
* [**pycryptodomex**](https://github.com/Legrandin/pycryptodome) - For decrypting AES-128 HLS streams and various other data. Licensed under [BSD2](https://github.com/Legrandin/pycryptodome/blob/master/LICENSE.rst)
|
|
|
|
* [**websockets**](https://github.com/aaugustin/websockets) - For downloading over websocket. Licenced under [BSD3](https://github.com/aaugustin/websockets/blob/main/LICENSE)
|
|
|
|
* [**websockets**](https://github.com/aaugustin/websockets) - For downloading over websocket. Licensed under [BSD3](https://github.com/aaugustin/websockets/blob/main/LICENSE)
|
|
|
|
* [**keyring**](https://github.com/jaraco/keyring) - For decrypting cookies of chromium-based browsers on Linux. Licenced under [MIT](https://github.com/jaraco/keyring/blob/main/LICENSE)
|
|
|
|
* [**keyring**](https://github.com/jaraco/keyring) - For decrypting cookies of chromium-based browsers on Linux. Licensed under [MIT](https://github.com/jaraco/keyring/blob/main/LICENSE)
|
|
|
|
* [**AtomicParsley**](https://github.com/wez/atomicparsley) - For embedding thumbnail in mp4/m4a if mutagen is not present. Licenced under [GPLv2+](https://github.com/wez/atomicparsley/blob/master/COPYING)
|
|
|
|
* [**AtomicParsley**](https://github.com/wez/atomicparsley) - For embedding thumbnail in mp4/m4a if mutagen is not present. Licensed under [GPLv2+](https://github.com/wez/atomicparsley/blob/master/COPYING)
|
|
|
|
* [**rtmpdump**](http://rtmpdump.mplayerhq.hu) - For downloading `rtmp` streams. ffmpeg will be used as a fallback. Licenced under [GPLv2+](http://rtmpdump.mplayerhq.hu)
|
|
|
|
* [**rtmpdump**](http://rtmpdump.mplayerhq.hu) - For downloading `rtmp` streams. ffmpeg will be used as a fallback. Licensed under [GPLv2+](http://rtmpdump.mplayerhq.hu)
|
|
|
|
* [**mplayer**](http://mplayerhq.hu/design7/info.html) or [**mpv**](https://mpv.io) - For downloading `rstp` streams. ffmpeg will be used as a fallback. Licenced under [GPLv2+](https://github.com/mpv-player/mpv/blob/master/Copyright)
|
|
|
|
* [**mplayer**](http://mplayerhq.hu/design7/info.html) or [**mpv**](https://mpv.io) - For downloading `rstp` streams. ffmpeg will be used as a fallback. Licensed under [GPLv2+](https://github.com/mpv-player/mpv/blob/master/Copyright)
|
|
|
|
* [**phantomjs**](https://github.com/ariya/phantomjs) - Used in extractors where javascript needs to be run. Licenced under [BSD3](https://github.com/ariya/phantomjs/blob/master/LICENSE.BSD)
|
|
|
|
* [**phantomjs**](https://github.com/ariya/phantomjs) - Used in extractors where javascript needs to be run. Licensed under [BSD3](https://github.com/ariya/phantomjs/blob/master/LICENSE.BSD)
|
|
|
|
* [**sponskrub**](https://github.com/faissaloo/SponSkrub) - For using the now **deprecated** [sponskrub options](#sponskrub-options). Licenced under [GPLv3+](https://github.com/faissaloo/SponSkrub/blob/master/LICENCE.md)
|
|
|
|
* [**sponskrub**](https://github.com/faissaloo/SponSkrub) - For using the now **deprecated** [sponskrub options](#sponskrub-options). Licensed under [GPLv3+](https://github.com/faissaloo/SponSkrub/blob/master/LICENCE.md)
|
|
|
|
* Any external downloader that you want to use with `--downloader`
|
|
|
|
* Any external downloader that you want to use with `--downloader`
|
|
|
|
|
|
|
|
|
|
|
|
To use or redistribute the dependencies, you must agree to their respective licensing terms.
|
|
|
|
To use or redistribute the dependencies, you must agree to their respective licensing terms.
|
|
|
|
|
|
|
|
|
|
|
|
The windows releases are already built with the python interpreter, mutagen, pycryptodomex and websockets included.
|
|
|
|
The Windows and MacOS standalone release binaries are already built with the python interpreter, mutagen, pycryptodomex and websockets included.
|
|
|
|
|
|
|
|
|
|
|
|
**Note**: There are some regressions in newer ffmpeg versions that causes various issues when used alongside yt-dlp. Since ffmpeg is such an important dependancy, we provide [custom builds](https://github.com/yt-dlp/FFmpeg-Builds/wiki/Latest#latest-autobuilds) with patches for these issues at [yt-dlp/FFmpeg-Builds](https://github.com/yt-dlp/FFmpeg-Builds). See [the readme](https://github.com/yt-dlp/FFmpeg-Builds#patches-applied) for details on the specifc issues solved by these builds
|
|
|
|
**Note**: There are some regressions in newer ffmpeg versions that causes various issues when used alongside yt-dlp. Since ffmpeg is such an important dependancy, we provide [custom builds](https://github.com/yt-dlp/FFmpeg-Builds/wiki/Latest#latest-autobuilds) with patches for these issues at [yt-dlp/FFmpeg-Builds](https://github.com/yt-dlp/FFmpeg-Builds). See [the readme](https://github.com/yt-dlp/FFmpeg-Builds#patches-applied) for details on the specifc issues solved by these builds
|
|
|
|
|
|
|
|
|
|
|
@ -276,7 +297,7 @@ ## General Options:
|
|
|
|
sure that you have sufficient permissions
|
|
|
|
sure that you have sufficient permissions
|
|
|
|
(run with sudo if needed)
|
|
|
|
(run with sudo if needed)
|
|
|
|
-i, --ignore-errors Ignore download and postprocessing errors.
|
|
|
|
-i, --ignore-errors Ignore download and postprocessing errors.
|
|
|
|
The download will be considered successfull
|
|
|
|
The download will be considered successful
|
|
|
|
even if the postprocessing fails
|
|
|
|
even if the postprocessing fails
|
|
|
|
--no-abort-on-error Continue with next video on download
|
|
|
|
--no-abort-on-error Continue with next video on download
|
|
|
|
errors; e.g. to skip unavailable videos in
|
|
|
|
errors; e.g. to skip unavailable videos in
|
|
|
@ -366,7 +387,7 @@ ## Video Selection:
|
|
|
|
SIZE (e.g. 50k or 44.6m)
|
|
|
|
SIZE (e.g. 50k or 44.6m)
|
|
|
|
--max-filesize SIZE Do not download any videos larger than SIZE
|
|
|
|
--max-filesize SIZE Do not download any videos larger than SIZE
|
|
|
|
(e.g. 50k or 44.6m)
|
|
|
|
(e.g. 50k or 44.6m)
|
|
|
|
--date DATE Download only videos uploaded in this date.
|
|
|
|
--date DATE Download only videos uploaded on this date.
|
|
|
|
The date can be "YYYYMMDD" or in the format
|
|
|
|
The date can be "YYYYMMDD" or in the format
|
|
|
|
"(now|today)[+-][0-9](day|week|month|year)(s)?"
|
|
|
|
"(now|today)[+-][0-9](day|week|month|year)(s)?"
|
|
|
|
--datebefore DATE Download only videos uploaded on or before
|
|
|
|
--datebefore DATE Download only videos uploaded on or before
|
|
|
@ -510,9 +531,9 @@ ## Filesystem Options:
|
|
|
|
filenames
|
|
|
|
filenames
|
|
|
|
--no-restrict-filenames Allow Unicode characters, "&" and spaces in
|
|
|
|
--no-restrict-filenames Allow Unicode characters, "&" and spaces in
|
|
|
|
filenames (default)
|
|
|
|
filenames (default)
|
|
|
|
--windows-filenames Force filenames to be windows compatible
|
|
|
|
--windows-filenames Force filenames to be Windows-compatible
|
|
|
|
--no-windows-filenames Make filenames windows compatible only if
|
|
|
|
--no-windows-filenames Make filenames Windows-compatible only if
|
|
|
|
using windows (default)
|
|
|
|
using Windows (default)
|
|
|
|
--trim-filenames LENGTH Limit the filename length (excluding
|
|
|
|
--trim-filenames LENGTH Limit the filename length (excluding
|
|
|
|
extension) to the specified number of
|
|
|
|
extension) to the specified number of
|
|
|
|
characters
|
|
|
|
characters
|
|
|
@ -608,9 +629,9 @@ ## Verbosity and Simulation Options:
|
|
|
|
anything to disk
|
|
|
|
anything to disk
|
|
|
|
--no-simulate Download the video even if printing/listing
|
|
|
|
--no-simulate Download the video even if printing/listing
|
|
|
|
options are used
|
|
|
|
options are used
|
|
|
|
--ignore-no-formats-error Ignore "No video formats" error. Usefull
|
|
|
|
--ignore-no-formats-error Ignore "No video formats" error. Useful for
|
|
|
|
for extracting metadata even if the videos
|
|
|
|
extracting metadata even if the videos are
|
|
|
|
are not actually available for download
|
|
|
|
not actually available for download
|
|
|
|
(experimental)
|
|
|
|
(experimental)
|
|
|
|
--no-ignore-no-formats-error Throw error when no downloadable video
|
|
|
|
--no-ignore-no-formats-error Throw error when no downloadable video
|
|
|
|
formats are found (default)
|
|
|
|
formats are found (default)
|
|
|
@ -644,7 +665,7 @@ ## Verbosity and Simulation Options:
|
|
|
|
"postprocess:", or "postprocess-title:".
|
|
|
|
"postprocess:", or "postprocess-title:".
|
|
|
|
The video's fields are accessible under the
|
|
|
|
The video's fields are accessible under the
|
|
|
|
"info" key and the progress attributes are
|
|
|
|
"info" key and the progress attributes are
|
|
|
|
accessible under "progress" key. Eg:
|
|
|
|
accessible under "progress" key. E.g.:
|
|
|
|
--console-title --progress-template
|
|
|
|
--console-title --progress-template
|
|
|
|
"download-title:%(info.id)s-%(progress.eta)s"
|
|
|
|
"download-title:%(info.id)s-%(progress.eta)s"
|
|
|
|
-v, --verbose Print various debugging information
|
|
|
|
-v, --verbose Print various debugging information
|
|
|
@ -657,7 +678,7 @@ ## Verbosity and Simulation Options:
|
|
|
|
|
|
|
|
|
|
|
|
## Workarounds:
|
|
|
|
## Workarounds:
|
|
|
|
--encoding ENCODING Force the specified encoding (experimental)
|
|
|
|
--encoding ENCODING Force the specified encoding (experimental)
|
|
|
|
--no-check-certificate Suppress HTTPS certificate validation
|
|
|
|
--no-check-certificates Suppress HTTPS certificate validation
|
|
|
|
--prefer-insecure Use an unencrypted connection to retrieve
|
|
|
|
--prefer-insecure Use an unencrypted connection to retrieve
|
|
|
|
information about the video (Currently
|
|
|
|
information about the video (Currently
|
|
|
|
supported only for YouTube)
|
|
|
|
supported only for YouTube)
|
|
|
@ -706,10 +727,12 @@ ## Video Format Options:
|
|
|
|
containers irrespective of quality
|
|
|
|
containers irrespective of quality
|
|
|
|
--no-prefer-free-formats Don't give any special preference to free
|
|
|
|
--no-prefer-free-formats Don't give any special preference to free
|
|
|
|
containers (default)
|
|
|
|
containers (default)
|
|
|
|
--check-formats Check that the formats selected are
|
|
|
|
--check-formats Check that the selected formats are
|
|
|
|
actually downloadable
|
|
|
|
actually downloadable
|
|
|
|
--no-check-formats Do not check that the formats selected are
|
|
|
|
--check-all-formats Check all formats for whether they are
|
|
|
|
actually downloadable
|
|
|
|
actually downloadable
|
|
|
|
|
|
|
|
--no-check-formats Do not check that the formats are actually
|
|
|
|
|
|
|
|
downloadable
|
|
|
|
-F, --list-formats List available formats of each video.
|
|
|
|
-F, --list-formats List available formats of each video.
|
|
|
|
Simulate unless --no-simulate is used
|
|
|
|
Simulate unless --no-simulate is used
|
|
|
|
--merge-output-format FORMAT If a merge is required (e.g.
|
|
|
|
--merge-output-format FORMAT If a merge is required (e.g.
|
|
|
@ -1018,7 +1041,7 @@ # OUTPUT TEMPLATE
|
|
|
|
|
|
|
|
|
|
|
|
The simplest usage of `-o` is not to set any template arguments when downloading a single file, like in `yt-dlp -o funny_video.flv "https://some/video"` (hard-coding file extension like this is _not_ recommended and could break some post-processing).
|
|
|
|
The simplest usage of `-o` is not to set any template arguments when downloading a single file, like in `yt-dlp -o funny_video.flv "https://some/video"` (hard-coding file extension like this is _not_ recommended and could break some post-processing).
|
|
|
|
|
|
|
|
|
|
|
|
It may however also contain special sequences that will be replaced when downloading each video. The special sequences may be formatted according to [python string formatting operations](https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting). For example, `%(NAME)s` or `%(NAME)05d`. To clarify, that is a percent symbol followed by a name in parentheses, followed by formatting operations.
|
|
|
|
It may however also contain special sequences that will be replaced when downloading each video. The special sequences may be formatted according to [Python string formatting operations](https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting). For example, `%(NAME)s` or `%(NAME)05d`. To clarify, that is a percent symbol followed by a name in parentheses, followed by formatting operations.
|
|
|
|
|
|
|
|
|
|
|
|
The field names themselves (the part inside the parenthesis) can also have some special formatting:
|
|
|
|
The field names themselves (the part inside the parenthesis) can also have some special formatting:
|
|
|
|
1. **Object traversal**: The dictionaries and lists available in metadata can be traversed by using a `.` (dot) separator. You can also do python slicing using `:`. Eg: `%(tags.0)s`, `%(subtitles.en.-1.ext)s`, `%(id.3:7:-1)s`, `%(formats.:.format_id)s`. `%()s` refers to the entire infodict. Note that all the fields that become available using this method are not listed below. Use `-j` to see such fields
|
|
|
|
1. **Object traversal**: The dictionaries and lists available in metadata can be traversed by using a `.` (dot) separator. You can also do python slicing using `:`. Eg: `%(tags.0)s`, `%(subtitles.en.-1.ext)s`, `%(id.3:7:-1)s`, `%(formats.:.format_id)s`. `%()s` refers to the entire infodict. Note that all the fields that become available using this method are not listed below. Use `-j` to see such fields
|
|
|
@ -1159,7 +1182,7 @@ # OUTPUT TEMPLATE
|
|
|
|
|
|
|
|
|
|
|
|
Note that some of the sequences are not guaranteed to be present since they depend on the metadata obtained by a particular extractor. Such sequences will be replaced with placeholder value provided with `--output-na-placeholder` (`NA` by default).
|
|
|
|
Note that some of the sequences are not guaranteed to be present since they depend on the metadata obtained by a particular extractor. Such sequences will be replaced with placeholder value provided with `--output-na-placeholder` (`NA` by default).
|
|
|
|
|
|
|
|
|
|
|
|
**Tip**: Look at the `-j` output to identify which fields are available for the purticular URL
|
|
|
|
**Tip**: Look at the `-j` output to identify which fields are available for the particular URL
|
|
|
|
|
|
|
|
|
|
|
|
For numeric sequences you can use [numeric related formatting](https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting), for example, `%(view_count)05d` will result in a string with view count padded with zeros up to 5 characters, like in `00042`.
|
|
|
|
For numeric sequences you can use [numeric related formatting](https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting), for example, `%(view_count)05d` will result in a string with view count padded with zeros up to 5 characters, like in `00042`.
|
|
|
|
|
|
|
|
|
|
|
@ -1303,7 +1326,7 @@ ## Sorting Formats
|
|
|
|
- `vext`: Video Extension (`mp4` > `webm` > `flv` > other > unknown). If `--prefer-free-formats` is used, `webm` is prefered.
|
|
|
|
- `vext`: Video Extension (`mp4` > `webm` > `flv` > other > unknown). If `--prefer-free-formats` is used, `webm` is prefered.
|
|
|
|
- `aext`: Audio Extension (`m4a` > `aac` > `mp3` > `ogg` > `opus` > `webm` > other > unknown). If `--prefer-free-formats` is used, the order changes to `opus` > `ogg` > `webm` > `m4a` > `mp3` > `aac`.
|
|
|
|
- `aext`: Audio Extension (`m4a` > `aac` > `mp3` > `ogg` > `opus` > `webm` > other > unknown). If `--prefer-free-formats` is used, the order changes to `opus` > `ogg` > `webm` > `m4a` > `mp3` > `aac`.
|
|
|
|
- `ext`: Equivalent to `vext,aext`
|
|
|
|
- `ext`: Equivalent to `vext,aext`
|
|
|
|
- `filesize`: Exact filesize, if know in advance. This will be unavailable for mu38 and DASH formats.
|
|
|
|
- `filesize`: Exact filesize, if known in advance
|
|
|
|
- `fs_approx`: Approximate filesize calculated from the manifests
|
|
|
|
- `fs_approx`: Approximate filesize calculated from the manifests
|
|
|
|
- `size`: Exact filesize if available, otherwise approximate filesize
|
|
|
|
- `size`: Exact filesize if available, otherwise approximate filesize
|
|
|
|
- `height`: Height of video
|
|
|
|
- `height`: Height of video
|
|
|
@ -1506,6 +1529,9 @@ # Set title as "Series name S01E05"
|
|
|
|
# Set "comment" field in video metadata using description instead of webpage_url
|
|
|
|
# Set "comment" field in video metadata using description instead of webpage_url
|
|
|
|
$ yt-dlp --parse-metadata 'description:(?s)(?P<meta_comment>.+)' --add-metadata
|
|
|
|
$ yt-dlp --parse-metadata 'description:(?s)(?P<meta_comment>.+)' --add-metadata
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Remove "formats" field from the infojson by setting it to an empty string
|
|
|
|
|
|
|
|
$ yt-dlp --parse-metadata ':(?P<formats>)' -j
|
|
|
|
|
|
|
|
|
|
|
|
# Replace all spaces and "_" in title and uploader with a `-`
|
|
|
|
# Replace all spaces and "_" in title and uploader with a `-`
|
|
|
|
$ yt-dlp --replace-in-metadata 'title,uploader' '[ _]' '-'
|
|
|
|
$ yt-dlp --replace-in-metadata 'title,uploader' '[ _]' '-'
|
|
|
|
|
|
|
|
|
|
|
@ -1513,7 +1539,7 @@ # Replace all spaces and "_" in title and uploader with a `-`
|
|
|
|
|
|
|
|
|
|
|
|
# EXTRACTOR ARGUMENTS
|
|
|
|
# EXTRACTOR ARGUMENTS
|
|
|
|
|
|
|
|
|
|
|
|
Some extractors accept additional arguments which can be passed using `--extractor-args KEY:ARGS`. `ARGS` is a `;` (semicolon) seperated string of `ARG=VAL1,VAL2`. Eg: `--extractor-args "youtube:player_client=android_agegate,web;include_live_dash" --extractor-args "funimation:version=uncut"`
|
|
|
|
Some extractors accept additional arguments which can be passed using `--extractor-args KEY:ARGS`. `ARGS` is a `;` (semicolon) separated string of `ARG=VAL1,VAL2`. Eg: `--extractor-args "youtube:player_client=android_agegate,web;include_live_dash" --extractor-args "funimation:version=uncut"`
|
|
|
|
|
|
|
|
|
|
|
|
The following extractors use this feature:
|
|
|
|
The following extractors use this feature:
|
|
|
|
|
|
|
|
|
|
|
|