2012-11-27 09:58:50 -06:00
% YOUTUBE-DL(1)
2011-08-05 18:14:13 -05:00
2012-08-01 04:53:17 -05:00
# NAME
2013-06-22 17:03:28 -05:00
youtube-dl - download videos from youtube.com or other video platforms
2011-08-05 18:14:13 -05:00
2012-08-01 04:53:17 -05:00
# SYNOPSIS
**youtube-dl** [OPTIONS] URL [URL...]
# DESCRIPTION
2011-08-05 18:14:13 -05:00
**youtube-dl** is a small command-line program to download videos from
YouTube.com and a few more sites. It requires the Python interpreter, version
2013-01-10 16:20:26 -06:00
2.6, 2.7, or 3.3+, and it is not platform specific. It should work on
your Unix box, on Windows or on Mac OS X. It is released to the public domain,
2011-08-05 18:14:13 -05:00
which means you can modify it, redistribute it or use it however you like.
2012-08-01 04:53:17 -05:00
# OPTIONS
2013-04-11 11:42:57 -05:00
-h, --help print this help text and exit
--version print program version and exit
-U, --update update this program to latest version
-i, --ignore-errors continue on download errors
-r, --rate-limit LIMIT maximum download rate (e.g. 50k or 44.6m)
-R, --retries RETRIES number of retries (default is 10)
--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.
--dump-user-agent display the current browser identification
--user-agent UA specify a custom user agent
2013-04-26 12:25:17 -05:00
--referer REF specify a custom referer, use if the video access
is restricted to one domain
2013-04-11 11:42:57 -05:00
--list-extractors List all supported extractors and the URLs they
would handle
2013-04-30 11:27:54 -05:00
--proxy URL Use the specified HTTP/HTTPS proxy
2013-05-04 05:31:17 -05:00
--no-check-certificate Suppress HTTPS certificate validation.
2011-09-14 15:55:09 -05:00
2012-08-01 04:53:17 -05:00
## Video Selection:
2013-04-11 11:42:57 -05:00
--playlist-start NUMBER playlist video to start at (default is 1)
--playlist-end NUMBER playlist video to end at (default is last)
--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)
2013-04-28 08:53:14 -05:00
--date DATE download only videos uploaded in this date
--datebefore DATE download only videos uploaded before this date
--dateafter DATE download only videos uploaded after this date
2011-08-05 18:14:13 -05:00
2012-08-01 04:53:17 -05:00
## Filesystem Options:
2013-04-28 09:32:05 -05:00
-t, --title use title in file name (default)
--id use only video ID in file name
2013-04-11 11:42:57 -05:00
-l, --literal [deprecated] alias of --title
-A, --auto-number number downloaded files starting from 00000
-o, --output TEMPLATE output filename template. Use %(title)s to get
the title, %(uploader)s for the uploader name,
%(uploader_id)s for the uploader nickname if
different, %(autonumber)s to get an automatically
incremented number, %(ext)s for the filename
extension, %(upload_date)s for the upload date
(YYYYMMDD), %(extractor)s for the provider
(youtube, metacafe, etc), %(id)s for the video id
2013-04-22 13:01:56 -05:00
, %(playlist)s for the playlist the video is in,
%(playlist_index)s for the position in the
playlist and %% for a literal percent. Use - to
output to stdout. Can also be used to download to
a different directory, for example with -o '/my/d
ownloads/%(uploader)s/%(title)s-%(id)s.%(ext)s' .
2013-04-11 11:42:57 -05:00
--autonumber-size NUMBER Specifies the number of digits in %(autonumber)s
when it is present in output filename template or
--autonumber option is given
--restrict-filenames Restrict filenames to only ASCII characters, and
avoid "& " and spaces in filenames
-a, --batch-file FILE file containing URLs to download ('-' for stdin)
-w, --no-overwrites do not overwrite files
-c, --continue resume partially downloaded files
--no-continue do not resume partially downloaded files (restart
from beginning)
--cookies FILE file to read cookies from and dump cookie jar in
--no-part do not use .part files
--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
2013-05-01 07:07:23 -05:00
--write-thumbnail write thumbnail image to disk
2011-08-05 18:14:13 -05:00
2012-08-01 04:53:17 -05:00
## Verbosity / Simulation Options:
2013-04-11 11:42:57 -05:00
-q, --quiet activates quiet mode
-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
2013-05-06 00:30:07 -05:00
--get-id simulate, quiet but print id
2013-04-11 11:42:57 -05:00
--get-thumbnail simulate, quiet but print thumbnail URL
--get-description simulate, quiet but print video description
--get-filename simulate, quiet but print output filename
--get-format simulate, quiet but print output format
--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-intermediate-pages print downloaded pages to debug problems(very
verbose)
2011-08-05 18:14:13 -05:00
2012-08-01 04:53:17 -05:00
## Video Format Options:
2013-04-23 03:33:54 -05:00
-f, --format FORMAT video format code, specifiy the order of
preference using slashes: "-f 22/17/18"
2013-04-11 11:42:57 -05:00
--all-formats download all available video formats
--prefer-free-formats prefer free video formats unless a specific one
is requested
--max-quality FORMAT highest quality format to download
-F, --list-formats list all available formats (currently youtube
only)
--write-sub write subtitle file (currently youtube only)
2013-06-27 06:02:57 -05:00
--write-auto-sub write automatic subtitle file (currently youtube
only)
2013-05-13 02:38:27 -05:00
--only-sub [deprecated] alias of --skip-download
2013-04-11 11:42:57 -05:00
--all-subs downloads all the available subtitles of the
video (currently youtube only)
--list-subs lists all available subtitles for the video
(currently youtube only)
2013-06-26 04:28:47 -05:00
--sub-format FORMAT subtitle format [srt/sbv/vtt] (default=srt)
2013-04-11 11:42:57 -05:00
(currently youtube only)
--sub-lang LANG language of the subtitles to download (optional)
use IETF language tags like 'en'
2011-08-05 18:14:13 -05:00
2012-08-01 04:53:17 -05:00
## Authentication Options:
2013-04-11 11:42:57 -05:00
-u, --username USERNAME account username
-p, --password PASSWORD account password
-n, --netrc use .netrc authentication data
2013-06-25 15:42:02 -05:00
--video-password PASSWORD video password (vimeo only)
2011-08-05 18:14:13 -05:00
2012-08-01 04:53:17 -05:00
## Post-processing Options:
2013-04-11 11:42:57 -05:00
-x, --extract-audio convert video files to audio-only files (requires
ffmpeg or avconv and ffprobe or avprobe)
--audio-format FORMAT "best", "aac", "vorbis", "mp3", "m4a", "opus", or
"wav"; best by default
--audio-quality QUALITY ffmpeg/avconv audio quality specification, 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)
-k, --keep-video keeps 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
2011-08-05 18:14:13 -05:00
2012-11-26 16:24:55 -06:00
# CONFIGURATION
2013-01-10 16:20:26 -06:00
You can configure youtube-dl by placing default arguments (such as `--extract-audio --no-mtime` to always extract the audio and not copy the mtime) into `/etc/youtube-dl.conf` and/or `~/.config/youtube-dl.conf` .
2012-11-26 16:24:55 -06:00
2012-11-27 09:27:35 -06:00
# OUTPUT TEMPLATE
The `-o` option allows users to indicate a template for the output file names. The basic usage is not to set any template arguments when downloading a single file, like in `youtube-dl -o funny_video.flv "http://some/video"` . However, it may contain special sequences that will be replaced when downloading each video. The special sequences have the format `%(NAME)s` . To clarify, that is a percent symbol followed by a name in parenthesis, followed by a lowercase S. Allowed names are:
- `id` : The sequence will be replaced by the video identifier.
- `url` : The sequence will be replaced by the video URL.
- `uploader` : The sequence will be replaced by the nickname of the person who uploaded the video.
- `upload_date` : The sequence will be replaced by the upload date in YYYYMMDD format.
- `title` : The sequence will be replaced by the video title.
2012-11-27 09:28:21 -06:00
- `ext` : The sequence will be replaced by the appropriate extension (like flv or mp4).
- `epoch` : The sequence will be replaced by the Unix epoch when creating the file.
- `autonumber` : The sequence will be replaced by a five-digit number that will be increased with each download, starting at zero.
2013-03-29 06:32:42 -05:00
- `playlist` : The name or the id of the playlist that contains the video.
2013-04-16 08:13:29 -05:00
- `playlist_index` : The index of the video in the playlist, a five-digit number.
2012-11-27 09:27:35 -06:00
2013-06-29 09:35:28 -05:00
The current default template is `%(title)s-%(id)s.%(ext)s` .
2012-11-27 09:27:35 -06:00
In some cases, you don't want special characters such as 中, spaces, or & , such as when transferring the downloaded filename to a Windows system or the filename through an 8bit-unsafe channel. In these cases, add the `--restrict-filenames` flag to get a shorter title:
$ youtube-dl --get-filename -o "%(title)s.%(ext)s" BaW_jenozKc
youtube-dl test video ''_ä↭𝕐 .mp4 # All kinds of weird characters
$ youtube-dl --get-filename -o "%(title)s.%(ext)s" BaW_jenozKc --restrict-filenames
youtube-dl_test_video_.mp4 # A simple file name
2013-04-28 05:02:30 -05:00
# VIDEO SELECTION
Videos can be filtered by their upload date using the options `--date` , `--datebefore` or `--dateafter` , they accept dates in two formats:
- Absolute dates: Dates in the format `YYYYMMDD` .
- Relative dates: Dates in the format `(now|today)[+-][0-9](day|week|month|year)(s)?`
Examples:
$ youtube-dl --dateafter now-6months #will only download the videos uploaded in the last 6 months
$ youtube-dl --date 19700101 #will only download the videos uploaded in January 1, 1970
$ youtube-dl --dateafter 20000101 --datebefore 20100101 #will only download the videos uploaded between 2000 and 2010
2012-08-01 04:53:17 -05:00
# FAQ
2011-09-04 04:41:54 -05:00
### Can you please put the -b option back?
Most people asking this question are not aware that youtube-dl now defaults to downloading the highest available quality as reported by YouTube, which will be 1080p or 720p in some cases, so you no longer need the -b option. For some specific videos, maybe YouTube does not report them to be available in a specific high quality format you''re interested in. In that case, simply request it with the -f option and youtube-dl will try to download it.
2011-09-14 14:18:22 -05:00
### I get HTTP error 402 when trying to download a video. What's this?
2011-09-04 04:41:54 -05:00
2011-09-13 16:58:31 -05:00
Apparently YouTube requires you to pass a CAPTCHA test if you download too much. We''re [considering to provide a way to let you solve the CAPTCHA ](https://github.com/rg3/youtube-dl/issues/154 ), but at the moment, your best course of action is pointing a webbrowser to the youtube URL, solving the CAPTCHA, and restart youtube-dl.
2011-09-04 04:41:54 -05:00
### I have downloaded a video but how can I play it?
Once the video is fully downloaded, use any video player, such as [vlc ](http://www.videolan.org ) or [mplayer ](http://www.mplayerhq.hu/ ).
### The links provided by youtube-dl -g are not working anymore
2012-03-15 08:56:08 -05:00
The URLs youtube-dl outputs require the downloader to have the correct cookies. Use the `--cookies` option to write the required cookies into a file, and advise your downloader to read cookies from that file. Some sites also require a common user agent to be used, use `--dump-user-agent` to see the one in use by youtube-dl.
2011-09-04 04:41:54 -05:00
2011-09-09 01:41:52 -05:00
### ERROR: no fmt_url_map or conn information found in video info
2011-09-13 14:51:06 -05:00
youtube has switched to a new video info format in July 2011 which is not supported by old versions of youtube-dl. You can update youtube-dl with `sudo youtube-dl --update` .
2011-09-09 01:41:52 -05:00
2012-09-27 16:30:17 -05:00
### ERROR: unable to download video ###
youtube requires an additional signature since September 2012 which is not supported by old versions of youtube-dl. You can update youtube-dl with `sudo youtube-dl --update` .
2012-09-28 12:55:18 -05:00
### SyntaxError: Non-ASCII character ###
2012-09-27 16:30:17 -05:00
The error
File "youtube-dl", line 2
SyntaxError: Non-ASCII character '\x93' ...
means you're using an outdated version of Python. Please update to Python 2.6 or 2.7.
2012-09-28 12:55:18 -05:00
### What is this binary file? Where has the code gone?
2012-11-26 16:40:51 -06:00
Since June 2012 (#342) youtube-dl is packed as an executable zipfile, simply unzip it (might need renaming to `youtube-dl.zip` first on some systems) or clone the git repository, as laid out above. If you modify the code, you can run it by executing the `__main__.py` file. To recompile the executable, run `make youtube-dl` .
2012-09-28 12:55:18 -05:00
2012-09-29 08:35:07 -05:00
### The exe throws a *Runtime error from Visual C++*
To run the exe you need to install first the [Microsoft Visual C++ 2008 Redistributable Package ](http://www.microsoft.com/en-us/download/details.aspx?id=29 ).
2012-08-01 04:53:17 -05:00
# COPYRIGHT
2011-09-13 16:54:30 -05:00
youtube-dl is released into the public domain by the copyright holders.
This README file was originally written by Daniel Bolton (< https: / / github . com / dbbolton > ) and is likewise released into the public domain.
2011-08-05 18:14:13 -05:00
2012-08-01 04:53:17 -05:00
# BUGS
2011-09-09 01:47:00 -05:00
2011-09-13 16:58:31 -05:00
Bugs and suggestions should be reported at: < https: / / github . com / rg3 / youtube-dl / issues >
2011-09-09 01:47:00 -05:00
Please include:
2012-12-31 12:09:37 -06:00
* Your exact command line, like `youtube-dl -t "http://www.youtube.com/watch?v=uHlDtZ6Oc3s&feature=channel_video_title"` . A common mistake is not to escape the `&` . Putting URLs in quotes should solve this problem.
* If possible re-run the command with `--verbose` , and include the full output, it is really helpful to us.
2011-09-09 01:47:00 -05:00
* The output of `youtube-dl --version`
* The output of `python --version`
* The name and version of your Operating System ("Ubuntu 11.04 x64" or "Windows 7 x64" is usually enough).
2012-11-29 12:45:07 -06:00
For discussions, join us in the irc channel #youtube -dl on freenode.