-
Notifications
You must be signed in to change notification settings - Fork 10k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
youtube-dl man page uses single dash for long options (should be double dash). #16251
Comments
It should not modify text at all, e.g.
Does it work if you escape |
Yes, escaping |
Could you post entire |
Sure, here it is: %YOUTUBE-DL(1)
# NAME
youtube\-dl \- download videos from youtube.com or other video platforms
# SYNOPSIS
**youtube-dl** \[OPTIONS\] URL [URL...]
# DESCRIPTION
**youtube-dl** 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.
# OPTIONS
-h, --help
: Print this help text and exit
--version
: Print program version and exit
-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
--dump-user-agent
: Display the current browser identification
--list-extractors
: List all supported extractors
--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-dl "large
apple". Use the value "auto" to let
youtube-dl guess ("auto_warning" to emit a
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
in the global configuration file /etc
/youtube-dl.conf: Do not read the user
configuration in ~/.config/youtube-
dl/config (%APPDATA%/youtube-dl/config.txt
on Windows)
--config-location *PATH*
: Location of the configuration file; either
the path to the config or its containing
directory.
--flat-playlist
: Do not extract the videos of a playlist,
only list them.
--mark-watched
: Mark videos watched (YouTube only)
--no-mark-watched
: Do not mark videos watched (YouTube only)
--no-color
: Do not emit color codes in output
## Network Options:
--proxy *URL*
: Use the specified HTTP/HTTPS/SOCKS proxy.
To enable experimental SOCKS proxy, specify
a proper scheme. For example
socks5://127.0.0.1:1080/. Pass in an empty
string (--proxy "") for direct connection
--socket-timeout *SECONDS*
: Time to wait before giving up, in seconds
--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
## Geo Restriction:
--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
options is not present) is used for the
actual downloading.
--geo-bypass
: Bypass geographic restriction via faking X
-Forwarded-For HTTP header (experimental)
--no-geo-bypass
: Do not bypass geographic restriction via
faking X-Forwarded-For HTTP header
(experimental)
--geo-bypass-country *CODE*
: Force bypass geographic restriction with
explicitly provided two-letter ISO 3166-2
country code (experimental)
## Video Selection:
--playlist-start *NUMBER*
: Playlist video to start at (default is 1)
--playlist-end *NUMBER*
: Playlist video to end at (default is last)
--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)
--max-downloads *NUMBER*
: Abort after downloading NUMBER files
--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)
--date *DATE*
: Download only videos uploaded in this date
--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
--match-filter *FILTER*
: Generic video filter. Specify any key (see
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
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" .
--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)
## Download Options:
-r, --limit-rate *RATE*
: Maximum download rate in bytes per second
(e.g. 50K or 4.2M)
-R, --retries *RETRIES*
: Number of retries (default is 10), or
"infinite".
--fragment-retries *RETRIES*
: Number of retries for a fragment (default
is 10), or "infinite" (DASH, hlsnative and
ISM)
--skip-unavailable-fragments
: Skip unavailable fragments (DASH, hlsnative
and ISM)
--abort-on-unavailable-fragment
: Abort downloading when some fragment is not
available
--keep-fragments
: Keep downloaded fragments on disk after
downloading is finished; fragments are
erased by default
--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.
--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)
--playlist-reverse
: Download playlist videos in reverse order
--playlist-random
: Download playlist videos in random order
--xattr-set-filesize
: Set file xattribute ytdl.filesize with
expected file size (experimental)
--hls-prefer-native
: Use the native HLS downloader instead of
ffmpeg
--hls-prefer-ffmpeg
: Use ffmpeg instead of the native HLS
downloader
--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)
--external-downloader *COMMAND*
: Use the specified external downloader.
Currently supports
aria2c,avconv,axel,curl,ffmpeg,httpie,wget
--external-downloader-args *ARGS*
: Give these arguments to the external
downloader
## Filesystem Options:
-a, --batch-file *FILE*
: File containing URLs to download ('-' for
stdin), one URL per line. Lines starting
with '#', ';' or ']' are considered as
comments and ignored.
--id
: Use only video ID in file name
-o, --output *TEMPLATE*
: Output filename template, see the "OUTPUT
TEMPLATE" for all the info
--autonumber-start *NUMBER*
: Specify the start value for %(autonumber)s
(default is 1)
--restrict-filenames
: Restrict filenames to only ASCII
characters, and avoid "&" and spaces in
filenames
-w, --no-overwrites
: Do not overwrite files
-c, --continue
: Force resume of partially downloaded files.
By default, youtube-dl will resume
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
--write-info-json
: Write video metadata to a .info.json file
--write-annotations
: Write video annotations to a
.annotations.xml file
--load-info-json *FILE*
: JSON file containing the video information
(created with the "--write-info-json"
option)
--cookies *FILE*
: File to read cookies from and dump cookie
jar in
--cache-dir *DIR*
: Location in the filesystem where youtube-dl
can store some downloaded information
permanently. By default $XDG_CACHE_HOME
/youtube-dl or ~/.cache/youtube-dl . At the
moment, only YouTube player files (for
videos with obfuscated signatures) are
cached, but that may change.
--no-cache-dir
: Disable filesystem caching
--rm-cache-dir
: Delete all filesystem cache files
## Thumbnail images:
--write-thumbnail
: Write thumbnail image to disk
--write-all-thumbnails
: Write all thumbnail image formats to disk
--list-thumbnails
: Simulate and list all available thumbnail
formats
## Verbosity / Simulation Options:
-q, --quiet
: Activate quiet mode
--no-warnings
: Ignore warnings
-s, --simulate
: Do not download the video and do not write
anything to disk
--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
-j, --dump-json
: Simulate, quiet but print JSON information.
See the "OUTPUT TEMPLATE" for a description
of available keys.
-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).
--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
--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
--print-traffic
: Display sent and read HTTP traffic
-C, --call-home
: Contact the youtube-dl server for debugging
--no-call-home
: Do NOT contact the youtube-dl server for
debugging
## Workarounds:
--encoding *ENCODING*
: Force the specified encoding (experimental)
--no-check-certificate
: Suppress HTTPS certificate validation
--prefer-insecure
: Use an unencrypted connection to retrieve
information about the video. (Currently
supported only for YouTube)
--user-agent *UA*
: Specify a custom user agent
--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
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.
## Video Format Options:
-f, --format *FORMAT*
: Video format code, see the "FORMAT
SELECTION" for all the info
--all-formats
: Download all available video formats
--prefer-free-formats
: Prefer free video formats unless a specific
one is requested
-F, --list-formats
: List all available formats of requested
videos
--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
## Subtitle Options:
--write-sub
: Write subtitle file
--write-auto-sub
: Write automatically generated subtitle file
(YouTube only)
--all-subs
: Download all the available subtitles of the
video
--list-subs
: List all available subtitles for the video
--sub-format *FORMAT*
: Subtitle format, accepts formats
preference, for example: "srt" or
"ass/srt/best"
--sub-lang *LANGS*
: Languages of the subtitles to download
(optional) separated by commas, use --list-
subs for available language tags
## Authentication Options:
-u, --username *USERNAME*
: Login with this account ID
-p, --password *PASSWORD*
: Account password. If this option is left
out, youtube-dl will ask interactively.
-2, --twofactor *TWOFACTOR*
: Two-factor authentication code
-n, --netrc
: Use .netrc authentication data
--video-password *PASSWORD*
: Video password (vimeo, smotri, youku)
## 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.
If this option is left out, youtube-dl will
ask interactively.
--ap-list-mso
: List all supported multiple-system
operators
## Post-processing Options:
-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",
"flac", "mp3", "m4a", "opus", "vorbis", or
"wav"; "best" by default; No effect without
-x
--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
-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
--embed-subs
: Embed subtitles in the video (only for mp4,
webm and mkv videos)
--embed-thumbnail
: Embed thumbnail in the audio as cover art
--add-metadata
: Write metadata to the video file
--metadata-from-title *FORMAT*
: Parse additional metadata like song title /
artist from the video title. The format
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>.+)"
--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 (default)
--prefer-ffmpeg
: Prefer ffmpeg over avconv for running the
postprocessors
--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
downloading, similar to find's -exec
syntax. Example: --exec 'adb push {}
/sdcard/Music/ && rm {}'
--convert-subs *FORMAT*
: Convert the subtitles to other format
(currently supported: srt|ass|vtt|lrc)
# CONFIGURATION
You can configure youtube-dl by placing any supported command line option to a configuration file. On Linux and OS X, the system wide configuration file is located at `/etc/youtube-dl.conf` and the user wide configuration file at `~/.config/youtube-dl/config`. On Windows, the user wide configuration file locations are `%APPDATA%\youtube-dl\config.txt` or `C:\Users\<user name>\youtube-dl.conf`. Note that by default configuration file may not exist so you may need to create it yourself.
For example, with the following configuration file youtube-dl will always extract the audio, not copy the mtime, use a proxy and save all videos under `Movies` directory in your home directory: Lines starting with # are commentsAlways extract audio-x Do not copy the mtime--no-mtime Use this proxy--proxy 127.0.0.1:3128 Save all videos under Movies directory in your home directory-o ~/Movies/%(title)s.%(ext)s
touch $HOME/.netrc
machine login password
machine youtube login myaccount@gmail.com password my_youtube_password
set HOME=%USERPROFILE%
FORMAT SELECTIONBy default youtube-dl tries to download the best available quality, i.e. if you want the best quality you don't need to pass any special options, youtube-dl will guess it for you by default. But sometimes you may want to download in a different format, for example when you are on a slow or intermittent connection. The key mechanism for achieving this is so-called format selection based on which you can explicitly specify desired format, select formats based on some criterion or criteria, setup precedence and much more. The general syntax for format selection is tl;dr: navigate me to examples. The simplest case is requesting a specific format, for example with You can also use a file extension (currently You can also use special names to select particular edge case formats:
For example, to download the worst quality video-only format you can use If you want to download multiple videos and they don't have the same formats available, you can specify the order of preference using slashes. Note that slash is left-associative, i.e. formats on the left hand side are preferred, for example If you want to download several formats of the same video use a comma as a separator, e.g. You can also filter the video formats by putting a condition in brackets, as in The following numeric meta fields can be used with comparisons
Also filtering work for comparisons
Note that none of the aforementioned meta fields are guaranteed to be present since this solely depends on the metadata obtained by particular extractor, i.e. the metadata offered by the video hoster. Formats for which the value is not known are excluded unless you put a question mark ( You can merge the video and audio of two formats into a single file using Format selectors can also be grouped using parentheses, for example if you want to download the best mp4 and webm formats with a height lower than 480 you can use Since the end of April 2015 and version 2015.04.26, youtube-dl uses If you want to preserve the old format selection behavior (prior to youtube-dl 2015.04.26), i.e. you want to download the best available quality media served as a single file, you should explicitly specify your choice with Format selection examplesNote that on Windows you may need to use double quotes instead of single. # Download best mp4 format available or any other best if no mp4 available
$ youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best'
# Download best format available but not better that 480p
$ youtube-dl -f 'bestvideo[height<=480]+bestaudio/best[height<=480]'
# Download best video only format but no bigger than 50 MB
$ youtube-dl -f 'best[filesize<50M]'
# Download best format available via direct link over HTTP/HTTPS protocol
$ youtube-dl -f '(bestvideo+bestaudio/best)[protocol^=http]'
# Download the best video format and the best audio format without merging them
$ youtube-dl -f 'bestvideo,bestaudio' -o '%(title)s.f%(format_id)s.%(ext)s' Note that in the last example, an output template is recommended as bestvideo and bestaudio may have the same file name. VIDEO SELECTIONVideos can be filtered by their upload date using the options
Examples: # Download only the videos uploaded in the last 6 months
$ youtube-dl --dateafter now-6months
# Download only the videos uploaded on January 1, 1970
$ youtube-dl --date 19700101
$ # Download only the videos uploaded in the 200x decade
$ youtube-dl --dateafter 20000101 --datebefore 20091231 FAQHow do I update youtube-dl?If you've followed our manual installation instructions, you can simply run If you have used pip, a simple If you have installed youtube-dl using a package manager like apt-get or yum, use the standard system update mechanism to update. Note that distribution packages are often outdated. As a rule of thumb, youtube-dl releases at least once a month, and often weekly or even daily. Simply go to https://yt-dl.org to find out the current version. Unfortunately, there is nothing we youtube-dl developers can do if your distribution serves a really outdated version. You can (and should) complain to your distribution in their bugtracker or support forum. As a last resort, you can also uninstall the version installed by your package manager and follow our manual installation instructions. For that, remove the distribution's package, with a line like
Afterwards, simply follow our manual installation instructions:
Again, from then on you'll be able to update with youtube-dl is extremely slow to start on WindowsAdd a file exclusion for I'm getting an error
|
And |
|
Just cloned youtube-dl repo and built it on macOS 10.13.4, using system Python 2.7.10 and pandoc version 2.1.3.
The resulting youtube-dl.1 man page uses single dashes for long options instead of double dashes. I have looked at the generated file:
youtube-dl.1.temp.md and it looks like this:
# OPTIONS -h, --help : Print this help text and exit --version : Print program version and exit
However, after pandoc conversion
pandoc -s -f markdown -t man youtube-dl.1.temp.md -o youtube-dl.1
the generated man file has:which when viewed in man pager looks like this:
It looks like pandoc outputs
\[en]
where it should be outputting\[em]
instead in the man page output, i.e. the output should look like:The text was updated successfully, but these errors were encountered: