1
mirror of https://github.com/yt-dlp/yt-dlp synced 2024-12-23 16:53:46 +01:00
yt-dlp/README.md

446 lines
28 KiB
Markdown
Raw Normal View History

2020-08-31 18:56:46 +02:00
[![Build Status](https://travis-ci.com/blackjack4494/youtube-dlc.svg?branch=master)](https://travis-ci.com/blackjack4494/youtube-dlc)
[![Downloads](https://pepy.tech/badge/youtube-dlc)](https://pepy.tech/project/youtube-dlc)
2017-10-20 21:11:11 +02:00
2020-08-31 23:12:53 +02:00
youtube-dlc - download videos from youtube.com or other video platforms
2011-08-06 01:14:13 +02:00
- [INSTALLATION](#installation)
- [DESCRIPTION](#description)
- [OPTIONS](#options)
- [COPYRIGHT](#copyright)
2014-05-13 11:16:11 +02:00
# INSTALLATION
**All Platforms**
Preferred way using pip:
2020-08-31 23:12:53 +02:00
You may want to use `python3` instead of `python`
2014-05-13 11:16:11 +02:00
2020-08-31 23:12:53 +02:00
python -m pip install --upgrade youtube-dlc
2014-05-13 11:16:11 +02:00
**UNIX** (Linux, macOS, etc.)
Using wget:
sudo wget https://github.com/blackjack4494/youtube-dlc/releases/latest/download/youtube-dlc -O /usr/local/bin/youtube-dlc
sudo chmod a+rx /usr/local/bin/youtube-dlc
Using curl:
sudo curl -L https://github.com/blackjack4494/youtube-dlc/releases/latest/download/youtube-dlc -o /usr/local/bin/youtube-dlc
sudo chmod a+rx /usr/local/bin/youtube-dlc
**Windows** users can download [youtube-dlc.exe](https://github.com/blackjack4494/youtube-dlc/releases/latest/download/youtube-dlc.exe) (**do not** put in `C:\Windows\System32`!).
**Compile**
To build the Windows executable yourself
2014-05-13 11:16:11 +02:00
2020-08-31 23:12:53 +02:00
python -m pip install --upgrade pyinstaller
pyinstaller.exe youtube_dlc\__main__.py --onefile --name youtube-dlc
2016-06-05 06:19:44 +02:00
2020-08-31 23:12:53 +02:00
Or simply execute the `make_win.bat` if pyinstaller is installed.
There will be a `youtube-dlc.exe` in `/dist`
For Unix:
You will need the required build tools
python, make (GNU), pandoc, zip, nosetests
Then simply type this
make
2014-05-13 11:16:11 +02:00
# DESCRIPTION
2020-08-31 23:12:53 +02:00
**youtube-dlc** is a command-line program to download videos from YouTube.com and a few more sites. It requires the Python interpreter, version 2.6, 2.7, or 3.2+, and it is not platform specific. It should work on your Unix box, on Windows or on macOS. It is released to the public domain, which means you can modify it, redistribute it or use it however you like.
2011-08-06 01:14:13 +02:00
2020-08-31 23:12:53 +02:00
youtube-dlc [OPTIONS] URL [URL...]
# OPTIONS
2015-04-09 00:21:19 +02:00
-h, --help Print this help text and exit
--version Print program version and exit
2015-10-06 09:08:10 +02:00
-U, --update Update this program to latest version. Make
sure that you have sufficient permissions
(run with sudo if needed)
-i, --ignore-errors Continue on download errors, for example to
skip unavailable videos in a playlist
--abort-on-error Abort downloading of further videos (in the
playlist or the command line) if an error
occurs
2015-04-09 00:21:19 +02:00
--dump-user-agent Display the current browser identification
2015-06-15 01:35:50 +02:00
--list-extractors List all supported extractors
2015-10-06 09:08:10 +02:00
--extractor-descriptions Output descriptions of all supported
extractors
--force-generic-extractor Force extraction to use the generic
extractor
--default-search PREFIX Use this prefix for unqualified URLs. For
example "gvsearch2:" downloads two videos
from google videos for youtube-dlc "large
2015-10-06 09:08:10 +02:00
apple". Use the value "auto" to let
youtube-dlc guess ("auto_warning" to emit a
2015-10-06 09:08:10 +02:00
warning when guessing). "error" just throws
an error. The default value "fixup_error"
repairs broken URLs, but emits an error if
this is not possible instead of searching.
--ignore-config Do not read configuration files. When given
2016-05-29 20:18:23 +02:00
in the global configuration file
/etc/youtube-dlc.conf: Do not read the user
2015-10-06 09:08:10 +02:00
configuration in ~/.config/youtube-
2020-09-02 23:48:21 +02:00
dlc/config (%APPDATA%/youtube-
dlc/config.txt on Windows)
2016-12-31 17:58:41 +01:00
--config-location PATH Location of the configuration file; either
the path to the config or its containing
directory.
2015-10-06 09:08:10 +02:00
--flat-playlist Do not extract the videos of a playlist,
only list them.
2016-03-06 10:08:02 +01:00
--mark-watched Mark videos watched (YouTube only)
--no-mark-watched Do not mark videos watched (YouTube only)
2015-04-09 00:21:19 +02:00
--no-color Do not emit color codes in output
2011-09-14 22:55:09 +02:00
2015-01-10 20:06:13 +01:00
## Network Options:
2016-05-10 09:08:08 +02:00
--proxy URL Use the specified HTTP/HTTPS/SOCKS proxy.
2018-05-26 08:02:21 +02:00
To enable SOCKS proxy, specify a proper
scheme. For example
2016-05-10 09:08:08 +02:00
socks5://127.0.0.1:1080/. Pass in an empty
string (--proxy "") for direct connection
2015-01-10 20:06:13 +01:00
--socket-timeout SECONDS Time to wait before giving up, in seconds
2015-10-06 09:08:10 +02:00
--source-address IP Client-side IP address to bind to
-4, --force-ipv4 Make all connections via IPv4
-6, --force-ipv6 Make all connections via IPv6
2017-02-21 17:48:24 +01:00
## Geo Restriction:
2016-07-05 01:32:46 +02:00
--geo-verification-proxy URL Use this proxy to verify the IP address for
some geo-restricted sites. The default
proxy specified by --proxy (or none, if the
2018-05-17 19:32:51 +02:00
option is not present) is used for the
2017-01-29 07:21:42 +01:00
actual downloading.
2017-02-21 17:48:24 +01:00
--geo-bypass Bypass geographic restriction via faking
2018-05-26 08:02:21 +02:00
X-Forwarded-For HTTP header
2017-02-21 17:48:24 +01:00
--no-geo-bypass Do not bypass geographic restriction via
faking X-Forwarded-For HTTP header
--geo-bypass-country CODE Force bypass geographic restriction with
explicitly provided two-letter ISO 3166-2
2018-05-26 08:02:21 +02:00
country code
2018-05-08 19:36:47 +02:00
--geo-bypass-ip-block IP_BLOCK Force bypass geographic restriction with
explicitly provided IP block in CIDR
2018-05-26 08:02:21 +02:00
notation
2015-01-10 20:06:13 +01:00
## Video Selection:
2015-04-09 00:21:19 +02:00
--playlist-start NUMBER Playlist video to start at (default is 1)
--playlist-end NUMBER Playlist video to end at (default is last)
2015-10-06 09:08:10 +02:00
--playlist-items ITEM_SPEC Playlist video items to download. Specify
indices of the videos in the playlist
separated by commas like: "--playlist-items
1,2,5,8" if you want to download videos
indexed 1, 2, 5, 8 in the playlist. You can
specify range: "--playlist-items
1-3,7,10-13", it will download the videos
at index 1, 2, 3, 7, 10, 11, 12 and 13.
--match-title REGEX Download only matching titles (regex or
caseless sub-string)
--reject-title REGEX Skip download for matching titles (regex or
caseless sub-string)
2014-01-22 21:57:17 +01:00
--max-downloads NUMBER Abort after downloading NUMBER files
2015-10-06 09:08:10 +02:00
--min-filesize SIZE Do not download any videos smaller than
SIZE (e.g. 50k or 44.6m)
--max-filesize SIZE Do not download any videos larger than SIZE
(e.g. 50k or 44.6m)
2015-04-09 00:21:19 +02:00
--date DATE Download only videos uploaded in this date
2015-10-06 09:08:10 +02:00
--datebefore DATE Download only videos uploaded on or before
this date (i.e. inclusive)
--dateafter DATE Download only videos uploaded on or after
this date (i.e. inclusive)
--min-views COUNT Do not download any videos with less than
COUNT views
--max-views COUNT Do not download any videos with more than
COUNT views
2017-01-29 07:21:42 +01:00
--match-filter FILTER Generic video filter. Specify any key (see
2017-06-11 21:23:17 +02:00
the "OUTPUT TEMPLATE" for a list of
available keys) to match if the key is
present, !key to check if the key is not
present, key > NUMBER (like "comment_count
> 12", also works with >=, <, <=, !=, =) to
compare against a number, key = 'LITERAL'
(like "uploader = 'Mike Smith'", also works
with !=) to match against a string literal
and & to require multiple matches. Values
which are not known are excluded unless you
put a question mark (?) after the operator.
For example, to only match videos that have
2017-02-21 17:48:24 +01:00
been liked more than 100 times and disliked
less than 50 times (or the dislike
functionality is not available at the given
service), but who also have a description,
use --match-filter "like_count > 100 &
dislike_count <? 50 & description" .
2015-10-06 09:08:10 +02:00
--no-playlist Download only the video, if the URL refers
to a video and a playlist.
--yes-playlist Download the playlist, if the URL refers to
a video and a playlist.
--age-limit YEARS Download only videos suitable for the given
age
--download-archive FILE Download only videos not listed in the
archive file. Record the IDs of all
downloaded videos in it.
--include-ads Download advertisements as well
(experimental)
2011-08-06 01:14:13 +02:00
2013-07-02 09:14:09 +02:00
## Download Options:
2016-06-01 20:19:57 +02:00
-r, --limit-rate RATE Maximum download rate in bytes per second
2015-10-06 09:08:10 +02:00
(e.g. 50K or 4.2M)
-R, --retries RETRIES Number of retries (default is 10), or
"infinite".
2016-03-25 09:27:18 +01:00
--fragment-retries RETRIES Number of retries for a fragment (default
2017-04-01 21:39:15 +02:00
is 10), or "infinite" (DASH, hlsnative and
ISM)
--skip-unavailable-fragments Skip unavailable fragments (DASH, hlsnative
and ISM)
2017-01-29 07:21:42 +01:00
--abort-on-unavailable-fragment Abort downloading when some fragment is not
available
2017-04-25 19:06:12 +02:00
--keep-fragments Keep downloaded fragments on disk after
downloading is finished; fragments are
erased by default
2015-10-06 09:08:10 +02:00
--buffer-size SIZE Size of download buffer (e.g. 1024 or 16K)
(default is 1024)
--no-resize-buffer Do not automatically adjust the buffer
size. By default, the buffer size is
automatically resized from an initial value
of SIZE.
2018-02-03 17:36:03 +01:00
--http-chunk-size SIZE Size of a chunk for chunk-based HTTP
downloading (e.g. 10485760 or 10M) (default
is disabled). May be useful for bypassing
bandwidth throttling imposed by a webserver
(experimental)
2014-12-12 17:18:22 +01:00
--playlist-reverse Download playlist videos in reverse order
2017-02-04 16:57:48 +01:00
--playlist-random Download playlist videos in random order
2015-10-06 09:08:10 +02:00
--xattr-set-filesize Set file xattribute ytdl.filesize with
2018-05-26 08:02:21 +02:00
expected file size
2015-10-06 09:08:10 +02:00
--hls-prefer-native Use the native HLS downloader instead of
2016-04-24 17:06:46 +02:00
ffmpeg
--hls-prefer-ffmpeg Use ffmpeg instead of the native HLS
downloader
2016-01-31 12:57:18 +01:00
--hls-use-mpegts Use the mpegts container for HLS videos,
allowing to play the video while
downloading (some players may not be able
to play it)
2015-10-06 09:08:10 +02:00
--external-downloader COMMAND Use the specified external downloader.
Currently supports
2016-03-14 10:25:20 +01:00
aria2c,avconv,axel,curl,ffmpeg,httpie,wget
2015-10-06 09:08:10 +02:00
--external-downloader-args ARGS Give these arguments to the external
downloader
2013-07-02 09:14:09 +02:00
## Filesystem Options:
2015-10-06 09:08:10 +02:00
-a, --batch-file FILE File containing URLs to download ('-' for
2018-04-02 19:26:11 +02:00
stdin), one URL per line. Lines starting
with '#', ';' or ']' are considered as
comments and ignored.
2015-04-09 00:21:19 +02:00
--id Use only video ID in file name
2016-08-18 19:15:12 +02:00
-o, --output TEMPLATE Output filename template, see the "OUTPUT
TEMPLATE" for all the info
2017-01-29 07:21:42 +01:00
--autonumber-start NUMBER Specify the start value for %(autonumber)s
(default is 1)
2015-10-06 09:08:10 +02:00
--restrict-filenames Restrict filenames to only ASCII
characters, and avoid "&" and spaces in
filenames
2015-04-09 00:21:19 +02:00
-w, --no-overwrites Do not overwrite files
2015-10-06 09:08:10 +02:00
-c, --continue Force resume of partially downloaded files.
By default, youtube-dlc will resume
2015-10-06 09:08:10 +02:00
downloads if possible.
--no-continue Do not resume partially downloaded files
(restart from beginning)
--no-part Do not use .part files - write directly
into output file
--no-mtime Do not use the Last-modified header to set
the file modification time
--write-description Write video description to a .description
file
2015-04-09 00:21:19 +02:00
--write-info-json Write video metadata to a .info.json file
2015-10-06 09:08:10 +02:00
--write-annotations Write video annotations to a
.annotations.xml file
2016-06-10 21:41:48 +02:00
--load-info-json FILE JSON file containing the video information
2015-10-06 09:08:10 +02:00
(created with the "--write-info-json"
option)
--cookies FILE File to read cookies from and dump cookie
jar in
2020-09-02 23:48:21 +02:00
--cache-dir DIR Location in the filesystem where youtube-
dlc can store some downloaded information
2016-05-29 20:18:23 +02:00
permanently. By default
$XDG_CACHE_HOME/youtube-dlc or
~/.cache/youtube-dlc . At the moment, only
2016-05-29 20:18:23 +02:00
YouTube player files (for videos with
obfuscated signatures) are cached, but that
may change.
2014-07-25 07:05:17 +02:00
--no-cache-dir Disable filesystem caching
--rm-cache-dir Delete all filesystem cache files
2011-08-06 01:14:13 +02:00
2015-01-25 21:40:43 +01:00
## Thumbnail images:
2015-04-09 00:21:19 +02:00
--write-thumbnail Write thumbnail image to disk
--write-all-thumbnails Write all thumbnail image formats to disk
2015-10-06 09:08:10 +02:00
--list-thumbnails Simulate and list all available thumbnail
formats
2015-01-25 21:40:43 +01:00
## Verbosity / Simulation Options:
2015-04-09 00:21:19 +02:00
-q, --quiet Activate quiet mode
2014-03-27 02:22:57 +01:00
--no-warnings Ignore warnings
2015-10-06 09:08:10 +02:00
-s, --simulate Do not download the video and do not write
anything to disk
2015-04-09 00:21:19 +02:00
--skip-download Do not download the video
-g, --get-url Simulate, quiet but print URL
-e, --get-title Simulate, quiet but print title
--get-id Simulate, quiet but print id
--get-thumbnail Simulate, quiet but print thumbnail URL
--get-description Simulate, quiet but print video description
--get-duration Simulate, quiet but print video length
--get-filename Simulate, quiet but print output filename
--get-format Simulate, quiet but print output format
2015-10-06 09:08:10 +02:00
-j, --dump-json Simulate, quiet but print JSON information.
2017-06-11 21:23:17 +02:00
See the "OUTPUT TEMPLATE" for a description
of available keys.
2015-10-06 09:08:10 +02:00
-J, --dump-single-json Simulate, quiet but print JSON information
for each command-line argument. If the URL
refers to a playlist, dump the whole
playlist information in a single line.
--print-json Be quiet and print the video information as
JSON (video is still being downloaded).
2015-04-09 00:21:19 +02:00
--newline Output progress bar as new lines
--no-progress Do not print progress bar
--console-title Display progress in console titlebar
-v, --verbose Print various debugging information
2015-10-06 09:08:10 +02:00
--dump-pages Print downloaded pages encoded using base64
to debug problems (very verbose)
--write-pages Write downloaded intermediary pages to
files in the current directory to debug
problems
2014-01-22 21:57:17 +01:00
--print-traffic Display sent and read HTTP traffic
2020-09-02 23:48:21 +02:00
-C, --call-home Contact the youtube-dlc server for
debugging
--no-call-home Do NOT contact the youtube-dlc server for
2015-10-06 09:08:10 +02:00
debugging
2011-08-06 01:14:13 +02:00
2014-07-25 07:05:17 +02:00
## Workarounds:
--encoding ENCODING Force the specified encoding (experimental)
2015-04-09 00:21:19 +02:00
--no-check-certificate Suppress HTTPS certificate validation
2015-10-06 09:08:10 +02:00
--prefer-insecure Use an unencrypted connection to retrieve
2018-03-02 19:37:01 +01:00
information about the video. (Currently
supported only for YouTube)
2015-04-09 00:21:19 +02:00
--user-agent UA Specify a custom user agent
2015-10-06 09:08:10 +02:00
--referer URL Specify a custom referer, use if the video
access is restricted to one domain
--add-header FIELD:VALUE Specify a custom HTTP header and its value,
separated by a colon ':'. You can use this
option multiple times
--bidi-workaround Work around terminals that lack
bidirectional text support. Requires bidiv
or fribidi executable in PATH
--sleep-interval SECONDS Number of seconds to sleep before each
2016-08-09 19:20:44 +02:00
download when used alone or a lower bound
of a range for randomized sleep before each
download (minimum possible number of
seconds to sleep) when used along with
--max-sleep-interval.
--max-sleep-interval SECONDS Upper bound of a range for randomized sleep
before each download (maximum possible
number of seconds to sleep). Must only be
used along with --min-sleep-interval.
2014-07-25 07:05:17 +02:00
## Video Format Options:
2015-10-06 09:08:10 +02:00
-f, --format FORMAT Video format code, see the "FORMAT
SELECTION" for all the info
2015-04-09 00:21:19 +02:00
--all-formats Download all available video formats
2015-10-06 09:08:10 +02:00
--prefer-free-formats Prefer free video formats unless a specific
one is requested
2015-12-05 16:01:37 +01:00
-F, --list-formats List all available formats of requested
2015-11-27 16:32:51 +01:00
videos
2015-10-06 09:08:10 +02:00
--youtube-skip-dash-manifest Do not download the DASH manifests and
related data on YouTube videos
--merge-output-format FORMAT If a merge is required (e.g.
bestvideo+bestaudio), output to given
container format. One of mkv, mp4, ogg,
webm, flv. Ignored if no merge is required
2013-08-23 23:09:53 +02:00
## Subtitle Options:
2015-04-09 00:21:19 +02:00
--write-sub Write subtitle file
--write-auto-sub Write automatically generated subtitle file
(YouTube only)
2015-10-06 09:08:10 +02:00
--all-subs Download all the available subtitles of the
video
2015-04-09 00:21:19 +02:00
--list-subs List all available subtitles for the video
2015-10-06 09:08:10 +02:00
--sub-format FORMAT Subtitle format, accepts formats
preference, for example: "srt" or
"ass/srt/best"
--sub-lang LANGS Languages of the subtitles to download
2016-01-23 12:03:12 +01:00
(optional) separated by commas, use --list-
subs for available language tags
2011-08-06 01:14:13 +02:00
## Authentication Options:
2015-04-09 00:21:19 +02:00
-u, --username USERNAME Login with this account ID
2015-10-06 09:08:10 +02:00
-p, --password PASSWORD Account password. If this option is left
out, youtube-dlc will ask interactively.
2016-12-31 17:58:41 +01:00
-2, --twofactor TWOFACTOR Two-factor authentication code
2015-04-09 00:21:19 +02:00
-n, --netrc Use .netrc authentication data
--video-password PASSWORD Video password (vimeo, smotri, youku)
2011-08-06 01:14:13 +02:00
2016-09-15 18:46:11 +02:00
## Adobe Pass Options:
--ap-mso MSO Adobe Pass multiple-system operator (TV
provider) identifier, use --ap-list-mso for
a list of available MSOs
--ap-username USERNAME Multiple-system operator account login
--ap-password PASSWORD Multiple-system operator account password.
2020-09-02 23:48:21 +02:00
If this option is left out, youtube-dlc
will ask interactively.
2016-09-15 18:46:11 +02:00
--ap-list-mso List all supported multiple-system
operators
## Post-processing Options:
2015-10-06 09:08:10 +02:00
-x, --extract-audio Convert video files to audio-only files
(requires ffmpeg or avconv and ffprobe or
avprobe)
--audio-format FORMAT Specify audio format: "best", "aac",
2017-03-16 16:42:12 +01:00
"flac", "mp3", "m4a", "opus", "vorbis", or
"wav"; "best" by default; No effect without
-x
2015-10-06 09:08:10 +02:00
--audio-quality QUALITY Specify ffmpeg/avconv audio quality, insert
a value between 0 (better) and 9 (worse)
for VBR or a specific bitrate like 128K
(default 5)
--recode-video FORMAT Encode the video to another format if
necessary (currently supported:
mp4|flv|ogg|webm|mkv|avi)
--postprocessor-args ARGS Give these arguments to the postprocessor
2015-10-06 09:08:10 +02:00
-k, --keep-video Keep the video file on disk after the post-
processing; the video is erased by default
--no-post-overwrites Do not overwrite post-processed files; the
post-processed files are overwritten by
default
2016-03-25 09:27:18 +01:00
--embed-subs Embed subtitles in the video (only for mp4,
webm and mkv videos)
2015-04-09 00:21:19 +02:00
--embed-thumbnail Embed thumbnail in the audio as cover art
--add-metadata Write metadata to the video file
2015-10-06 09:08:10 +02:00
--metadata-from-title FORMAT Parse additional metadata like song title /
artist from the video title. The format
2017-05-14 02:38:40 +02:00
syntax is the same as --output. Regular
expression with named capture groups may
also be used. The parsed parameters replace
existing values. Example: --metadata-from-
title "%(artist)s - %(title)s" matches a
title like "Coldplay - Paradise". Example
(regex): --metadata-from-title
"(?P<artist>.+?) - (?P<title>.+)"
2015-10-06 09:08:10 +02:00
--xattrs Write metadata to the video file's xattrs
(using dublin core and xdg standards)
--fixup POLICY Automatically correct known faults of the
file. One of never (do nothing), warn (only
emit a warning), detect_or_warn (the
default; fix file if we can, warn
otherwise)
--prefer-avconv Prefer avconv over ffmpeg for running the
postprocessors
2018-07-03 23:59:21 +02:00
--prefer-ffmpeg Prefer ffmpeg over avconv for running the
postprocessors (default)
2015-10-06 09:08:10 +02:00
--ffmpeg-location PATH Location of the ffmpeg/avconv binary;
either the path to the binary or its
containing directory.
--exec CMD Execute a command on the file after
2020-05-02 19:05:05 +02:00
downloading and post-processing, similar to
find's -exec syntax. Example: --exec 'adb
push {} /sdcard/Music/ && rm {}'
2015-12-31 16:50:53 +01:00
--convert-subs FORMAT Convert the subtitles to other format
2017-09-23 19:22:50 +02:00
(currently supported: srt|ass|vtt|lrc)
2011-08-06 01:14:13 +02:00