]> Raphaƫl G. Git Repositories - youtubedl/blob - youtube-dl.1
debian/changelog: Imported Upstream version 2015.06.04.1.
[youtubedl] / youtube-dl.1
1 .TH "YOUTUBE\-DL" "1" "" "" ""
2 .SH NAME
3 .PP
4 youtube\-dl \- download videos from youtube.com or other video platforms
5 .SH SYNOPSIS
6 .PP
7 \f[B]youtube\-dl\f[] [OPTIONS] URL [URL...]
8 .SH DESCRIPTION
9 .PP
10 \f[B]youtube\-dl\f[] is a small command\-line program to download videos
11 from YouTube.com and a few more sites.
12 It requires the Python interpreter, version 2.6, 2.7, or 3.2+, and it is
13 not platform specific.
14 It should work on your Unix box, on Windows or on Mac OS X.
15 It is released to the public domain, which means you can modify it,
16 redistribute it or use it however you like.
17 .SH OPTIONS
18 .IP
19 .nf
20 \f[C]
21 \-h,\ \-\-help\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Print\ this\ help\ text\ and\ exit
22 \-\-version\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Print\ program\ version\ and\ exit
23 \-U,\ \-\-update\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Update\ this\ program\ to\ latest\ version.\ Make\ sure\ that\ you\ have\ sufficient\ permissions\ (run\ with\ sudo\ if\ needed)
24 \-i,\ \-\-ignore\-errors\ \ \ \ \ \ \ \ \ \ \ \ \ \ Continue\ on\ download\ errors,\ for\ example\ to\ skip\ unavailable\ videos\ in\ a\ playlist
25 \-\-abort\-on\-error\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Abort\ downloading\ of\ further\ videos\ (in\ the\ playlist\ or\ the\ command\ line)\ if\ an\ error\ occurs
26 \-\-dump\-user\-agent\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Display\ the\ current\ browser\ identification
27 \-\-list\-extractors\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ List\ all\ supported\ extractors\ and\ the\ URLs\ they\ would\ handle
28 \-\-extractor\-descriptions\ \ \ \ \ \ \ \ \ Output\ descriptions\ of\ all\ supported\ extractors
29 \-\-default\-search\ PREFIX\ \ \ \ \ \ \ \ \ \ Use\ this\ prefix\ for\ unqualified\ URLs.\ For\ example\ "gvsearch2:"\ downloads\ two\ videos\ from\ google\ videos\ for\ youtube\-dl\ "large\ apple".
30 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Use\ the\ value\ "auto"\ to\ let\ youtube\-dl\ guess\ ("auto_warning"\ to\ emit\ a\ warning\ when\ guessing).\ "error"\ just\ throws\ an\ error.\ The
31 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ default\ value\ "fixup_error"\ repairs\ broken\ URLs,\ but\ emits\ an\ error\ if\ this\ is\ not\ possible\ instead\ of\ searching.
32 \-\-ignore\-config\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Do\ not\ read\ configuration\ files.\ When\ given\ in\ the\ global\ configuration\ file\ /etc/youtube\-dl.conf:\ Do\ not\ read\ the\ user\ configuration
33 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ in\ ~/.config/youtube\-dl/config\ (%APPDATA%/youtube\-dl/config.txt\ on\ Windows)
34 \-\-flat\-playlist\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Do\ not\ extract\ the\ videos\ of\ a\ playlist,\ only\ list\ them.
35 \-\-no\-color\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Do\ not\ emit\ color\ codes\ in\ output
36 \f[]
37 .fi
38 .SS Network Options:
39 .IP
40 .nf
41 \f[C]
42 \-\-proxy\ URL\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Use\ the\ specified\ HTTP/HTTPS\ proxy.\ Pass\ in\ an\ empty\ string\ (\-\-proxy\ "")\ for\ direct\ connection
43 \-\-socket\-timeout\ SECONDS\ \ \ \ \ \ \ \ \ Time\ to\ wait\ before\ giving\ up,\ in\ seconds
44 \-\-source\-address\ IP\ \ \ \ \ \ \ \ \ \ \ \ \ \ Client\-side\ IP\ address\ to\ bind\ to\ (experimental)
45 \-4,\ \-\-force\-ipv4\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Make\ all\ connections\ via\ IPv4\ (experimental)
46 \-6,\ \-\-force\-ipv6\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Make\ all\ connections\ via\ IPv6\ (experimental)
47 \-\-cn\-verification\-proxy\ URL\ \ \ \ \ \ Use\ this\ proxy\ to\ verify\ the\ IP\ address\ for\ some\ Chinese\ sites.\ The\ default\ proxy\ specified\ by\ \-\-proxy\ (or\ none,\ if\ the\ options\ is
48 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ not\ present)\ is\ used\ for\ the\ actual\ downloading.\ (experimental)
49 \f[]
50 .fi
51 .SS Video Selection:
52 .IP
53 .nf
54 \f[C]
55 \-\-playlist\-start\ NUMBER\ \ \ \ \ \ \ \ \ \ Playlist\ video\ to\ start\ at\ (default\ is\ 1)
56 \-\-playlist\-end\ NUMBER\ \ \ \ \ \ \ \ \ \ \ \ Playlist\ video\ to\ end\ at\ (default\ is\ last)
57 \-\-playlist\-items\ ITEM_SPEC\ \ \ \ \ \ \ Playlist\ video\ items\ to\ download.\ Specify\ indices\ of\ the\ videos\ in\ the\ playlist\ seperated\ by\ commas\ like:\ "\-\-playlist\-items\ 1,2,5,8"
58 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 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
59 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ download\ the\ videos\ at\ index\ 1,\ 2,\ 3,\ 7,\ 10,\ 11,\ 12\ and\ 13.
60 \-\-match\-title\ REGEX\ \ \ \ \ \ \ \ \ \ \ \ \ \ Download\ only\ matching\ titles\ (regex\ or\ caseless\ sub\-string)
61 \-\-reject\-title\ REGEX\ \ \ \ \ \ \ \ \ \ \ \ \ Skip\ download\ for\ matching\ titles\ (regex\ or\ caseless\ sub\-string)
62 \-\-max\-downloads\ NUMBER\ \ \ \ \ \ \ \ \ \ \ Abort\ after\ downloading\ NUMBER\ files
63 \-\-min\-filesize\ SIZE\ \ \ \ \ \ \ \ \ \ \ \ \ \ Do\ not\ download\ any\ videos\ smaller\ than\ SIZE\ (e.g.\ 50k\ or\ 44.6m)
64 \-\-max\-filesize\ SIZE\ \ \ \ \ \ \ \ \ \ \ \ \ \ Do\ not\ download\ any\ videos\ larger\ than\ SIZE\ (e.g.\ 50k\ or\ 44.6m)
65 \-\-date\ DATE\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Download\ only\ videos\ uploaded\ in\ this\ date
66 \-\-datebefore\ DATE\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Download\ only\ videos\ uploaded\ on\ or\ before\ this\ date\ (i.e.\ inclusive)
67 \-\-dateafter\ DATE\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Download\ only\ videos\ uploaded\ on\ or\ after\ this\ date\ (i.e.\ inclusive)
68 \-\-min\-views\ COUNT\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Do\ not\ download\ any\ videos\ with\ less\ than\ COUNT\ views
69 \-\-max\-views\ COUNT\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Do\ not\ download\ any\ videos\ with\ more\ than\ COUNT\ views
70 \-\-match\-filter\ FILTER\ \ \ \ \ \ \ \ \ \ \ \ Generic\ video\ filter\ (experimental).\ Specify\ any\ key\ (see\ help\ for\ \-o\ for\ a\ list\ of\ available\ keys)\ to\ match\ if\ the\ key\ is\ present,
71 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ !key\ to\ check\ if\ the\ key\ is\ not\ present,key\ >\ NUMBER\ (like\ "comment_count\ >\ 12",\ also\ works\ with\ >=,\ <,\ <=,\ !=,\ =)\ to\ compare\ against
72 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ a\ number,\ and\ &\ to\ require\ multiple\ matches.\ Values\ which\ are\ not\ known\ are\ excluded\ unless\ you\ put\ a\ question\ mark\ (?)\ after\ the
73 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ operator.For\ example,\ to\ only\ match\ videos\ that\ have\ been\ liked\ more\ than\ 100\ times\ and\ disliked\ less\ than\ 50\ times\ (or\ the\ dislike
74 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ functionality\ is\ not\ available\ at\ the\ given\ service),\ but\ who\ also\ have\ a\ description,\ use\ \ \-\-match\-filter\ "like_count\ >\ 100\ &
75 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dislike_count\ <?\ 50\ &\ description"\ .
76 \-\-no\-playlist\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Download\ only\ the\ video,\ if\ the\ URL\ refers\ to\ a\ video\ and\ a\ playlist.
77 \-\-yes\-playlist\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Download\ the\ playlist,\ if\ the\ URL\ refers\ to\ a\ video\ and\ a\ playlist.
78 \-\-age\-limit\ YEARS\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Download\ only\ videos\ suitable\ for\ the\ given\ age
79 \-\-download\-archive\ FILE\ \ \ \ \ \ \ \ \ \ Download\ only\ videos\ not\ listed\ in\ the\ archive\ file.\ Record\ the\ IDs\ of\ all\ downloaded\ videos\ in\ it.
80 \-\-include\-ads\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Download\ advertisements\ as\ well\ (experimental)
81 \f[]
82 .fi
83 .SS Download Options:
84 .IP
85 .nf
86 \f[C]
87 \-r,\ \-\-rate\-limit\ LIMIT\ \ \ \ \ \ \ \ \ \ \ Maximum\ download\ rate\ in\ bytes\ per\ second\ (e.g.\ 50K\ or\ 4.2M)
88 \-R,\ \-\-retries\ RETRIES\ \ \ \ \ \ \ \ \ \ \ \ Number\ of\ retries\ (default\ is\ 10),\ or\ "infinite".
89 \-\-buffer\-size\ SIZE\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Size\ of\ download\ buffer\ (e.g.\ 1024\ or\ 16K)\ (default\ is\ 1024)
90 \-\-no\-resize\-buffer\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Do\ not\ automatically\ adjust\ the\ buffer\ size.\ By\ default,\ the\ buffer\ size\ is\ automatically\ resized\ from\ an\ initial\ value\ of\ SIZE.
91 \-\-playlist\-reverse\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Download\ playlist\ videos\ in\ reverse\ order
92 \-\-xattr\-set\-filesize\ \ \ \ \ \ \ \ \ \ \ \ \ Set\ file\ xattribute\ ytdl.filesize\ with\ expected\ filesize\ (experimental)
93 \-\-hls\-prefer\-native\ \ \ \ \ \ \ \ \ \ \ \ \ \ Use\ the\ native\ HLS\ downloader\ instead\ of\ ffmpeg\ (experimental)
94 \-\-external\-downloader\ COMMAND\ \ \ \ Use\ the\ specified\ external\ downloader.\ Currently\ supports\ aria2c,curl,wget
95 \-\-external\-downloader\-args\ ARGS\ \ Give\ these\ arguments\ to\ the\ external\ downloader
96 \f[]
97 .fi
98 .SS Filesystem Options:
99 .IP
100 .nf
101 \f[C]
102 \-a,\ \-\-batch\-file\ FILE\ \ \ \ \ \ \ \ \ \ \ \ File\ containing\ URLs\ to\ download\ (\[aq]\-\[aq]\ for\ stdin)
103 \-\-id\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Use\ only\ video\ ID\ in\ file\ name
104 \-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
105 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ nickname\ if\ different,\ %(autonumber)s\ to\ get\ an\ automatically\ incremented\ number,\ %(ext)s\ for\ the\ filename\ extension,\ %(format)s\ for
106 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ the\ format\ description\ (like\ "22\ \-\ 1280x720"\ or\ "HD"),\ %(format_id)s\ for\ the\ unique\ id\ of\ the\ format\ (like\ YouTube\[aq]s\ itags:\ "137"),
107 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ %(upload_date)s\ for\ the\ upload\ date\ (YYYYMMDD),\ %(extractor)s\ for\ the\ provider\ (youtube,\ metacafe,\ etc),\ %(id)s\ for\ the\ video\ id,
108 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ %(playlist_title)s,\ %(playlist_id)s,\ or\ %(playlist)s\ (=title\ if\ present,\ ID\ otherwise)\ for\ the\ playlist\ the\ video\ is\ in,
109 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ %(playlist_index)s\ for\ the\ position\ in\ the\ playlist.\ %(height)s\ and\ %(width)s\ for\ the\ width\ and\ height\ of\ the\ video\ format.
110 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ %(resolution)s\ for\ a\ textual\ description\ of\ the\ resolution\ of\ the\ video\ format.\ %%\ for\ a\ literal\ percent.\ Use\ \-\ to\ output\ to\ stdout.
111 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Can\ also\ be\ used\ to\ download\ to\ a\ different\ directory,\ for\ example\ with\ \-o\ \[aq]/my/downloads/%(uploader)s/%(title)s\-%(id)s.%(ext)s\[aq]\ .
112 \-\-autonumber\-size\ NUMBER\ \ \ \ \ \ \ \ \ Specify\ the\ number\ of\ digits\ in\ %(autonumber)s\ when\ it\ is\ present\ in\ output\ filename\ template\ or\ \-\-auto\-number\ option\ is\ given
113 \-\-restrict\-filenames\ \ \ \ \ \ \ \ \ \ \ \ \ Restrict\ filenames\ to\ only\ ASCII\ characters,\ and\ avoid\ "&"\ and\ spaces\ in\ filenames
114 \-A,\ \-\-auto\-number\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ [deprecated;\ use\ \ \-o\ "%(autonumber)s\-%(title)s.%(ext)s"\ ]\ Number\ downloaded\ files\ starting\ from\ 00000
115 \-t,\ \-\-title\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ [deprecated]\ Use\ title\ in\ file\ name\ (default)
116 \-l,\ \-\-literal\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ [deprecated]\ Alias\ of\ \-\-title
117 \-w,\ \-\-no\-overwrites\ \ \ \ \ \ \ \ \ \ \ \ \ \ Do\ not\ overwrite\ files
118 \-c,\ \-\-continue\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Force\ resume\ of\ partially\ downloaded\ files.\ By\ default,\ youtube\-dl\ will\ resume\ downloads\ if\ possible.
119 \-\-no\-continue\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Do\ not\ resume\ partially\ downloaded\ files\ (restart\ from\ beginning)
120 \-\-no\-part\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Do\ not\ use\ .part\ files\ \-\ write\ directly\ into\ output\ file
121 \-\-no\-mtime\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Do\ not\ use\ the\ Last\-modified\ header\ to\ set\ the\ file\ modification\ time
122 \-\-write\-description\ \ \ \ \ \ \ \ \ \ \ \ \ \ Write\ video\ description\ to\ a\ .description\ file
123 \-\-write\-info\-json\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Write\ video\ metadata\ to\ a\ .info.json\ file
124 \-\-write\-annotations\ \ \ \ \ \ \ \ \ \ \ \ \ \ Write\ video\ annotations\ to\ a\ .annotations.xml\ file
125 \-\-load\-info\ FILE\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ JSON\ file\ containing\ the\ video\ information\ (created\ with\ the\ "\-\-write\-info\-json"\ option)
126 \-\-cookies\ FILE\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ File\ to\ read\ cookies\ from\ and\ dump\ cookie\ jar\ in
127 \-\-cache\-dir\ DIR\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Location\ in\ the\ filesystem\ where\ youtube\-dl\ can\ store\ some\ downloaded\ information\ permanently.\ By\ default\ $XDG_CACHE_HOME/youtube\-dl
128 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ or\ ~/.cache/youtube\-dl\ .\ At\ the\ moment,\ only\ YouTube\ player\ files\ (for\ videos\ with\ obfuscated\ signatures)\ are\ cached,\ but\ that\ may
129 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ change.
130 \-\-no\-cache\-dir\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Disable\ filesystem\ caching
131 \-\-rm\-cache\-dir\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Delete\ all\ filesystem\ cache\ files
132 \f[]
133 .fi
134 .SS Thumbnail images:
135 .IP
136 .nf
137 \f[C]
138 \-\-write\-thumbnail\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Write\ thumbnail\ image\ to\ disk
139 \-\-write\-all\-thumbnails\ \ \ \ \ \ \ \ \ \ \ Write\ all\ thumbnail\ image\ formats\ to\ disk
140 \-\-list\-thumbnails\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Simulate\ and\ list\ all\ available\ thumbnail\ formats
141 \f[]
142 .fi
143 .SS Verbosity / Simulation Options:
144 .IP
145 .nf
146 \f[C]
147 \-q,\ \-\-quiet\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Activate\ quiet\ mode
148 \-\-no\-warnings\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Ignore\ warnings
149 \-s,\ \-\-simulate\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Do\ not\ download\ the\ video\ and\ do\ not\ write\ anything\ to\ disk
150 \-\-skip\-download\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Do\ not\ download\ the\ video
151 \-g,\ \-\-get\-url\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Simulate,\ quiet\ but\ print\ URL
152 \-e,\ \-\-get\-title\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Simulate,\ quiet\ but\ print\ title
153 \-\-get\-id\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Simulate,\ quiet\ but\ print\ id
154 \-\-get\-thumbnail\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Simulate,\ quiet\ but\ print\ thumbnail\ URL
155 \-\-get\-description\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Simulate,\ quiet\ but\ print\ video\ description
156 \-\-get\-duration\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Simulate,\ quiet\ but\ print\ video\ length
157 \-\-get\-filename\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Simulate,\ quiet\ but\ print\ output\ filename
158 \-\-get\-format\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Simulate,\ quiet\ but\ print\ output\ format
159 \-j,\ \-\-dump\-json\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Simulate,\ quiet\ but\ print\ JSON\ information.\ See\ \-\-output\ for\ a\ description\ of\ available\ keys.
160 \-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
161 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ information\ in\ a\ single\ line.
162 \-\-print\-json\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Be\ quiet\ and\ print\ the\ video\ information\ as\ JSON\ (video\ is\ still\ being\ downloaded).
163 \-\-newline\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Output\ progress\ bar\ as\ new\ lines
164 \-\-no\-progress\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Do\ not\ print\ progress\ bar
165 \-\-console\-title\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Display\ progress\ in\ console\ titlebar
166 \-v,\ \-\-verbose\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Print\ various\ debugging\ information
167 \-\-dump\-pages\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Print\ downloaded\ pages\ encoded\ using\ base64\ to\ debug\ problems\ (very\ verbose)
168 \-\-write\-pages\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Write\ downloaded\ intermediary\ pages\ to\ files\ in\ the\ current\ directory\ to\ debug\ problems
169 \-\-print\-traffic\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Display\ sent\ and\ read\ HTTP\ traffic
170 \-C,\ \-\-call\-home\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Contact\ the\ youtube\-dl\ server\ for\ debugging
171 \-\-no\-call\-home\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Do\ NOT\ contact\ the\ youtube\-dl\ server\ for\ debugging
172 \f[]
173 .fi
174 .SS Workarounds:
175 .IP
176 .nf
177 \f[C]
178 \-\-encoding\ ENCODING\ \ \ \ \ \ \ \ \ \ \ \ \ \ Force\ the\ specified\ encoding\ (experimental)
179 \-\-no\-check\-certificate\ \ \ \ \ \ \ \ \ \ \ Suppress\ HTTPS\ certificate\ validation
180 \-\-prefer\-insecure\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Use\ an\ unencrypted\ connection\ to\ retrieve\ information\ about\ the\ video.\ (Currently\ supported\ only\ for\ YouTube)
181 \-\-user\-agent\ UA\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Specify\ a\ custom\ user\ agent
182 \-\-referer\ URL\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Specify\ a\ custom\ referer,\ use\ if\ the\ video\ access\ is\ restricted\ to\ one\ domain
183 \-\-add\-header\ FIELD:VALUE\ \ \ \ \ \ \ \ \ Specify\ a\ custom\ HTTP\ header\ and\ its\ value,\ separated\ by\ a\ colon\ \[aq]:\[aq].\ You\ can\ use\ this\ option\ multiple\ times
184 \-\-bidi\-workaround\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Work\ around\ terminals\ that\ lack\ bidirectional\ text\ support.\ Requires\ bidiv\ or\ fribidi\ executable\ in\ PATH
185 \-\-sleep\-interval\ SECONDS\ \ \ \ \ \ \ \ \ Number\ of\ seconds\ to\ sleep\ before\ each\ download.
186 \f[]
187 .fi
188 .SS Video Format Options:
189 .IP
190 .nf
191 \f[C]
192 \-f,\ \-\-format\ FORMAT\ \ \ \ \ \ \ \ \ \ \ \ \ \ Video\ format\ code,\ see\ the\ "FORMAT\ SELECTION"\ for\ all\ the\ info
193 \-\-all\-formats\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Download\ all\ available\ video\ formats
194 \-\-prefer\-free\-formats\ \ \ \ \ \ \ \ \ \ \ \ Prefer\ free\ video\ formats\ unless\ a\ specific\ one\ is\ requested
195 \-F,\ \-\-list\-formats\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ List\ all\ available\ formats
196 \-\-youtube\-skip\-dash\-manifest\ \ \ \ \ Do\ not\ download\ the\ DASH\ manifest\ on\ YouTube\ videos
197 \-\-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
198 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ merge\ is\ required
199 \f[]
200 .fi
201 .SS Subtitle Options:
202 .IP
203 .nf
204 \f[C]
205 \-\-write\-sub\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Write\ subtitle\ file
206 \-\-write\-auto\-sub\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Write\ automatic\ subtitle\ file\ (YouTube\ only)
207 \-\-all\-subs\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Download\ all\ the\ available\ subtitles\ of\ the\ video
208 \-\-list\-subs\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ List\ all\ available\ subtitles\ for\ the\ video
209 \-\-sub\-format\ FORMAT\ \ \ \ \ \ \ \ \ \ \ \ \ \ Subtitle\ format,\ accepts\ formats\ preference,\ for\ example:\ "srt"\ or\ "ass/srt/best"
210 \-\-sub\-lang\ LANGS\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Languages\ of\ the\ subtitles\ to\ download\ (optional)\ separated\ by\ commas,\ use\ IETF\ language\ tags\ like\ \[aq]en,pt\[aq]
211 \f[]
212 .fi
213 .SS Authentication Options:
214 .IP
215 .nf
216 \f[C]
217 \-u,\ \-\-username\ USERNAME\ \ \ \ \ \ \ \ \ \ Login\ with\ this\ account\ ID
218 \-p,\ \-\-password\ PASSWORD\ \ \ \ \ \ \ \ \ \ Account\ password.\ If\ this\ option\ is\ left\ out,\ youtube\-dl\ will\ ask\ interactively.
219 \-2,\ \-\-twofactor\ TWOFACTOR\ \ \ \ \ \ \ \ Two\-factor\ auth\ code
220 \-n,\ \-\-netrc\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Use\ .netrc\ authentication\ data
221 \-\-video\-password\ PASSWORD\ \ \ \ \ \ \ \ Video\ password\ (vimeo,\ smotri)
222 \f[]
223 .fi
224 .SS Post\-processing Options:
225 .IP
226 .nf
227 \f[C]
228 \-x,\ \-\-extract\-audio\ \ \ \ \ \ \ \ \ \ \ \ \ \ Convert\ video\ files\ to\ audio\-only\ files\ (requires\ ffmpeg\ or\ avconv\ and\ ffprobe\ or\ avprobe)
229 \-\-audio\-format\ FORMAT\ \ \ \ \ \ \ \ \ \ \ \ Specify\ audio\ format:\ "best",\ "aac",\ "vorbis",\ "mp3",\ "m4a",\ "opus",\ or\ "wav";\ "best"\ by\ default
230 \-\-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
231 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 5)
232 \-\-recode\-video\ FORMAT\ \ \ \ \ \ \ \ \ \ \ \ Encode\ the\ video\ to\ another\ format\ if\ necessary\ (currently\ supported:\ mp4|flv|ogg|webm|mkv)
233 \-k,\ \-\-keep\-video\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Keep\ the\ video\ file\ on\ disk\ after\ the\ post\-processing;\ the\ video\ is\ erased\ by\ default
234 \-\-no\-post\-overwrites\ \ \ \ \ \ \ \ \ \ \ \ \ Do\ not\ overwrite\ post\-processed\ files;\ the\ post\-processed\ files\ are\ overwritten\ by\ default
235 \-\-embed\-subs\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Embed\ subtitles\ in\ the\ video\ (only\ for\ mkv\ and\ mp4\ videos)
236 \-\-embed\-thumbnail\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Embed\ thumbnail\ in\ the\ audio\ as\ cover\ art
237 \-\-add\-metadata\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Write\ metadata\ to\ the\ video\ file
238 \-\-metadata\-from\-title\ FORMAT\ \ \ \ \ Parse\ additional\ metadata\ like\ song\ title\ /\ artist\ from\ the\ video\ title.\ The\ format\ syntax\ is\ the\ same\ as\ \-\-output,\ the\ parsed
239 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ parameters\ replace\ existing\ values.\ Additional\ templates:\ %(album)s,\ %(artist)s.\ Example:\ \-\-metadata\-from\-title\ "%(artist)s\ \-
240 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ %(title)s"\ matches\ a\ title\ like\ "Coldplay\ \-\ Paradise"
241 \-\-xattrs\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Write\ metadata\ to\ the\ video\ file\[aq]s\ xattrs\ (using\ dublin\ core\ and\ xdg\ standards)
242 \-\-fixup\ POLICY\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Automatically\ correct\ known\ faults\ of\ the\ file.\ One\ of\ never\ (do\ nothing),\ warn\ (only\ emit\ a\ warning),\ detect_or_warn(the\ default;
243 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ fix\ file\ if\ we\ can,\ warn\ otherwise)
244 \-\-prefer\-avconv\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Prefer\ avconv\ over\ ffmpeg\ for\ running\ the\ postprocessors\ (default)
245 \-\-prefer\-ffmpeg\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Prefer\ ffmpeg\ over\ avconv\ for\ running\ the\ postprocessors
246 \-\-ffmpeg\-location\ PATH\ \ \ \ \ \ \ \ \ \ \ Location\ of\ the\ ffmpeg/avconv\ binary;\ either\ the\ path\ to\ the\ binary\ or\ its\ containing\ directory.
247 \-\-exec\ CMD\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Execute\ a\ command\ on\ the\ file\ after\ downloading,\ similar\ to\ find\[aq]s\ \-exec\ syntax.\ Example:\ \-\-exec\ \[aq]adb\ push\ {}\ /sdcard/Music/\ &&\ rm
248 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {}\[aq]
249 \-\-convert\-subtitles\ FORMAT\ \ \ \ \ \ \ Convert\ the\ subtitles\ to\ other\ format\ (currently\ supported:\ srt|ass|vtt)
250 \f[]
251 .fi
252 .SH CONFIGURATION
253 .PP
254 You can configure youtube\-dl by placing default arguments (such as
255 \f[C]\-\-extract\-audio\ \-\-no\-mtime\f[] to always extract the audio
256 and not copy the mtime) into \f[C]/etc/youtube\-dl.conf\f[] and/or
257 \f[C]~/.config/youtube\-dl/config\f[].
258 On Windows, the configuration file locations are
259 \f[C]%APPDATA%\\youtube\-dl\\config.txt\f[] and
260 \f[C]C:\\Users\\<user\ name>\\youtube\-dl.conf\f[].
261 .SH OUTPUT TEMPLATE
262 .PP
263 The \f[C]\-o\f[] option allows users to indicate a template for the
264 output file names.
265 The basic usage is not to set any template arguments when downloading a
266 single file, like in
267 \f[C]youtube\-dl\ \-o\ funny_video.flv\ "http://some/video"\f[].
268 However, it may contain special sequences that will be replaced when
269 downloading each video.
270 The special sequences have the format \f[C]%(NAME)s\f[].
271 To clarify, that is a percent symbol followed by a name in parenthesis,
272 followed by a lowercase S.
273 Allowed names are:
274 .IP \[bu] 2
275 \f[C]id\f[]: The sequence will be replaced by the video identifier.
276 .IP \[bu] 2
277 \f[C]url\f[]: The sequence will be replaced by the video URL.
278 .IP \[bu] 2
279 \f[C]uploader\f[]: The sequence will be replaced by the nickname of the
280 person who uploaded the video.
281 .IP \[bu] 2
282 \f[C]upload_date\f[]: The sequence will be replaced by the upload date
283 in YYYYMMDD format.
284 .IP \[bu] 2
285 \f[C]title\f[]: The sequence will be replaced by the video title.
286 .IP \[bu] 2
287 \f[C]ext\f[]: The sequence will be replaced by the appropriate extension
288 (like flv or mp4).
289 .IP \[bu] 2
290 \f[C]epoch\f[]: The sequence will be replaced by the Unix epoch when
291 creating the file.
292 .IP \[bu] 2
293 \f[C]autonumber\f[]: The sequence will be replaced by a five\-digit
294 number that will be increased with each download, starting at zero.
295 .IP \[bu] 2
296 \f[C]playlist\f[]: The name or the id of the playlist that contains the
297 video.
298 .IP \[bu] 2
299 \f[C]playlist_index\f[]: The index of the video in the playlist, a
300 five\-digit number.
301 .PP
302 The current default template is \f[C]%(title)s\-%(id)s.%(ext)s\f[].
303 .PP
304 In some cases, you don\[aq]t want special characters such as äø­, spaces,
305 or &, such as when transferring the downloaded filename to a Windows
306 system or the filename through an 8bit\-unsafe channel.
307 In these cases, add the \f[C]\-\-restrict\-filenames\f[] flag to get a
308 shorter title:
309 .IP
310 .nf
311 \f[C]
312 $\ youtube\-dl\ \-\-get\-filename\ \-o\ "%(title)s.%(ext)s"\ BaW_jenozKc
313 youtube\-dl\ test\ video\ \[aq]\[aq]_Ƥā†­š•.mp4\ \ \ \ #\ All\ kinds\ of\ weird\ characters
314 $\ youtube\-dl\ \-\-get\-filename\ \-o\ "%(title)s.%(ext)s"\ BaW_jenozKc\ \-\-restrict\-filenames
315 youtube\-dl_test_video_.mp4\ \ \ \ \ \ \ \ \ \ #\ A\ simple\ file\ name
316 \f[]
317 .fi
318 .SH FORMAT SELECTION
319 .PP
320 By default youtube\-dl tries to download the best quality, but sometimes
321 you may want to download other format.
322 The simplest case is requesting a specific format, for example
323 \f[C]\-f\ 22\f[].
324 You can get the list of available formats using
325 \f[C]\-\-list\-formats\f[], you can also use a file extension (currently
326 it supports aac, m4a, mp3, mp4, ogg, wav, webm) or the special names
327 \f[C]best\f[], \f[C]bestvideo\f[], \f[C]bestaudio\f[] and
328 \f[C]worst\f[].
329 .PP
330 If you want to download multiple videos and they don\[aq]t have the same
331 formats available, you can specify the order of preference using
332 slashes, as in \f[C]\-f\ 22/17/18\f[].
333 You can also filter the video results by putting a condition in
334 brackets, as in \f[C]\-f\ "best[height=720]"\f[] (or
335 \f[C]\-f\ "[filesize>10M]"\f[]).
336 This works for filesize, height, width, tbr, abr, vbr, asr, and fps and
337 the comparisons <, <=, >, >=, =, != and for ext, acodec, vcodec,
338 container, and protocol and the comparisons =, != .
339 Formats for which the value is not known are excluded unless you put a
340 question mark (?) after the operator.
341 You can combine format filters, so
342 \f[C]\-f\ "[height\ <=?\ 720][tbr>500]"\f[] selects up to 720p videos
343 (or videos where the height is not known) with a bitrate of at least 500
344 KBit/s.
345 Use commas to download multiple formats, such as
346 \f[C]\-f\ 136/137/mp4/bestvideo,140/m4a/bestaudio\f[].
347 You can merge the video and audio of two formats into a single file
348 using \f[C]\-f\ <video\-format>+<audio\-format>\f[] (requires ffmpeg or
349 avconv), for example \f[C]\-f\ bestvideo+bestaudio\f[].
350 .PP
351 Since the end of April 2015 and version 2015.04.26 youtube\-dl uses
352 \f[C]\-f\ bestvideo+bestaudio/best\f[] as default format selection (see
353 #5447, #5456).
354 If ffmpeg or avconv are installed this results in downloading
355 \f[C]bestvideo\f[] and \f[C]bestaudio\f[] separately and muxing them
356 together into a single file giving the best overall quality available.
357 Otherwise it falls back to \f[C]best\f[] and results in downloading best
358 available quality served as a single file.
359 \f[C]best\f[] is also needed for videos that don\[aq]t come from YouTube
360 because they don\[aq]t provide the audio and video in two different
361 files.
362 If you want to only download some dash formats (for example if you are
363 not interested in getting videos with a resolution higher than 1080p),
364 you can add \f[C]\-f\ bestvideo[height<=?1080]+bestaudio/best\f[] to
365 your configuration file.
366 Note that if you use youtube\-dl to stream to \f[C]stdout\f[] (and most
367 likely to pipe it to your media player then), i.e.
368 you explicitly specify output template as \f[C]\-o\ \-\f[], youtube\-dl
369 still uses \f[C]\-f\ best\f[] format selection in order to start content
370 delivery immediately to your player and not to wait until
371 \f[C]bestvideo\f[] and \f[C]bestaudio\f[] are downloaded and muxed.
372 .PP
373 If you want to preserve the old format selection behavior (prior to
374 youtube\-dl 2015.04.26), i.e.
375 you want to download best available quality media served as a single
376 file, you should explicitly specify your choice with \f[C]\-f\ best\f[].
377 You may want to add it to the configuration file (#configuration) in
378 order not to type it every time you run youtube\-dl.
379 .SH VIDEO SELECTION
380 .PP
381 Videos can be filtered by their upload date using the options
382 \f[C]\-\-date\f[], \f[C]\-\-datebefore\f[] or \f[C]\-\-dateafter\f[],
383 they accept dates in two formats:
384 .IP \[bu] 2
385 Absolute dates: Dates in the format \f[C]YYYYMMDD\f[].
386 .IP \[bu] 2
387 Relative dates: Dates in the format
388 \f[C](now|today)[+\-][0\-9](day|week|month|year)(s)?\f[]
389 .PP
390 Examples:
391 .IP
392 .nf
393 \f[C]
394 #\ Download\ only\ the\ videos\ uploaded\ in\ the\ last\ 6\ months
395 $\ youtube\-dl\ \-\-dateafter\ now\-6months
396
397 #\ Download\ only\ the\ videos\ uploaded\ on\ January\ 1,\ 1970
398 $\ youtube\-dl\ \-\-date\ 19700101
399
400 $\ #\ will\ only\ download\ the\ videos\ uploaded\ in\ the\ 200x\ decade
401 $\ youtube\-dl\ \-\-dateafter\ 20000101\ \-\-datebefore\ 20091231
402 \f[]
403 .fi
404 .SH FAQ
405 .SS How do I update youtube\-dl?
406 .PP
407 If you\[aq]ve followed our manual installation
408 instructions (http://rg3.github.io/youtube-dl/download.html), you can
409 simply run \f[C]youtube\-dl\ \-U\f[] (or, on Linux,
410 \f[C]sudo\ youtube\-dl\ \-U\f[]).
411 .PP
412 If you have used pip, a simple
413 \f[C]sudo\ pip\ install\ \-U\ youtube\-dl\f[] is sufficient to update.
414 .PP
415 If you have installed youtube\-dl using a package manager like
416 \f[I]apt\-get\f[] or \f[I]yum\f[], use the standard system update
417 mechanism to update.
418 Note that distribution packages are often outdated.
419 As a rule of thumb, youtube\-dl releases at least once a month, and
420 often weekly or even daily.
421 Simply go to http://yt\-dl.org/ to find out the current version.
422 Unfortunately, there is nothing we youtube\-dl developers can do if your
423 distributions serves a really outdated version.
424 You can (and should) complain to your distribution in their bugtracker
425 or support forum.
426 .PP
427 As a last resort, you can also uninstall the version installed by your
428 package manager and follow our manual installation instructions.
429 For that, remove the distribution\[aq]s package, with a line like
430 .IP
431 .nf
432 \f[C]
433 sudo\ apt\-get\ remove\ \-y\ youtube\-dl
434 \f[]
435 .fi
436 .PP
437 Afterwards, simply follow our manual installation
438 instructions (http://rg3.github.io/youtube-dl/download.html):
439 .IP
440 .nf
441 \f[C]
442 sudo\ wget\ https://yt\-dl.org/latest/youtube\-dl\ \-O\ /usr/local/bin/youtube\-dl
443 sudo\ chmod\ a+x\ /usr/local/bin/youtube\-dl
444 hash\ \-r
445 \f[]
446 .fi
447 .PP
448 Again, from then on you\[aq]ll be able to update with
449 \f[C]sudo\ youtube\-dl\ \-U\f[].
450 .SS I\[aq]m getting an error
451 \f[C]Unable\ to\ extract\ OpenGraph\ title\f[] on YouTube playlists
452 .PP
453 YouTube changed their playlist format in March 2014 and later on, so
454 you\[aq]ll need at least youtube\-dl 2014.07.25 to download all YouTube
455 videos.
456 .PP
457 If you have installed youtube\-dl with a package manager, pip, setup.py
458 or a tarball, please use that to update.
459 Note that Ubuntu packages do not seem to get updated anymore.
460 Since we are not affiliated with Ubuntu, there is little we can do.
461 Feel free to report
462 bugs (https://bugs.launchpad.net/ubuntu/+source/youtube-dl/+filebug) to
463 the Ubuntu packaging
464 guys (mailto:ubuntu-motu@lists.ubuntu.com?subject=outdated%20version%20of%20youtube-dl)
465 \- all they have to do is update the package to a somewhat recent
466 version.
467 See above for a way to update.
468 .SS Do I always have to pass \f[C]\-citw\f[]?
469 .PP
470 By default, youtube\-dl intends to have the best options (incidentally,
471 if you have a convincing case that these should be different, please
472 file an issue where you explain that (https://yt-dl.org/bug)).
473 Therefore, it is unnecessary and sometimes harmful to copy long option
474 strings from webpages.
475 In particular, the only option out of \f[C]\-citw\f[] that is regularly
476 useful is \f[C]\-i\f[].
477 .SS Can you please put the \-b option back?
478 .PP
479 Most people asking this question are not aware that youtube\-dl now
480 defaults to downloading the highest available quality as reported by
481 YouTube, which will be 1080p or 720p in some cases, so you no longer
482 need the \f[C]\-b\f[] option.
483 For some specific videos, maybe YouTube does not report them to be
484 available in a specific high quality format you\[aq]re interested in.
485 In that case, simply request it with the \f[C]\-f\f[] option and
486 youtube\-dl will try to download it.
487 .SS I get HTTP error 402 when trying to download a video. What\[aq]s
488 this?
489 .PP
490 Apparently YouTube requires you to pass a CAPTCHA test if you download
491 too much.
492 We\[aq]re considering to provide a way to let you solve the
493 CAPTCHA (https://github.com/rg3/youtube-dl/issues/154), but at the
494 moment, your best course of action is pointing a webbrowser to the
495 youtube URL, solving the CAPTCHA, and restart youtube\-dl.
496 .SS I have downloaded a video but how can I play it?
497 .PP
498 Once the video is fully downloaded, use any video player, such as
499 vlc (http://www.videolan.org) or mplayer (http://www.mplayerhq.hu/).
500 .SS I extracted a video URL with \-g, but it does not play on another
501 machine / in my webbrowser.
502 .PP
503 It depends a lot on the service.
504 In many cases, requests for the video (to download/play it) must come
505 from the same IP address and with the same cookies.
506 Use the \f[C]\-\-cookies\f[] option to write the required cookies into a
507 file, and advise your downloader to read cookies from that file.
508 Some sites also require a common user agent to be used, use
509 \f[C]\-\-dump\-user\-agent\f[] to see the one in use by youtube\-dl.
510 .PP
511 It may be beneficial to use IPv6; in some cases, the restrictions are
512 only applied to IPv4.
513 Some services (sometimes only for a subset of videos) do not restrict
514 the video URL by IP address, cookie, or user\-agent, but these are the
515 exception rather than the rule.
516 .PP
517 Please bear in mind that some URL protocols are \f[B]not\f[] supported
518 by browsers out of the box, including RTMP.
519 If you are using \-g, your own downloader must support these as well.
520 .PP
521 If you want to play the video on a machine that is not running
522 youtube\-dl, you can relay the video content from the machine that runs
523 youtube\-dl.
524 You can use \f[C]\-o\ \-\f[] to let youtube\-dl stream a video to
525 stdout, or simply allow the player to download the files written by
526 youtube\-dl in turn.
527 .SS ERROR: no fmt_url_map or conn information found in video info
528 .PP
529 YouTube has switched to a new video info format in July 2011 which is
530 not supported by old versions of youtube\-dl.
531 See above (#how-do-i-update-youtube-dl) for how to update youtube\-dl.
532 .SS ERROR: unable to download video
533 .PP
534 YouTube requires an additional signature since September 2012 which is
535 not supported by old versions of youtube\-dl.
536 See above (#how-do-i-update-youtube-dl) for how to update youtube\-dl.
537 .SS Video URL contains an ampersand and I\[aq]m getting some strange
538 output \f[C][1]\ 2839\f[] or
539 \f[C]\[aq]v\[aq]\ is\ not\ recognized\ as\ an\ internal\ or\ external\ command\f[]
540 .PP
541 That\[aq]s actually the output from your shell.
542 Since ampersand is one of the special shell characters it\[aq]s
543 interpreted by shell preventing you from passing the whole URL to
544 youtube\-dl.
545 To disable your shell from interpreting the ampersands (or any other
546 special characters) you have to either put the whole URL in quotes or
547 escape them with a backslash (which approach will work depends on your
548 shell).
549 .PP
550 For example if your URL is
551 https://www.youtube.com/watch?t=4&v=BaW_jenozKc you should end up with
552 following command:
553 .PP
554 \f[C]youtube\-dl\ \[aq]https://www.youtube.com/watch?t=4&v=BaW_jenozKc\[aq]\f[]
555 .PP
556 or
557 .PP
558 \f[C]youtube\-dl\ https://www.youtube.com/watch?t=4\\&v=BaW_jenozKc\f[]
559 .PP
560 For Windows you have to use the double quotes:
561 .PP
562 \f[C]youtube\-dl\ "https://www.youtube.com/watch?t=4&v=BaW_jenozKc"\f[]
563 .SS ExtractorError: Could not find JS function u\[aq]OF\[aq]
564 .PP
565 In February 2015, the new YouTube player contained a character sequence
566 in a string that was misinterpreted by old versions of youtube\-dl.
567 See above (#how-do-i-update-youtube-dl) for how to update youtube\-dl.
568 .SS HTTP Error 429: Too Many Requests or 402: Payment Required
569 .PP
570 These two error codes indicate that the service is blocking your IP
571 address because of overuse.
572 Contact the service and ask them to unblock your IP address, or \- if
573 you have acquired a whitelisted IP address already \- use the
574 \f[C]\-\-proxy\f[] or \f[C]\-\-network\-address\f[]
575 options (#network-options) to select another IP address.
576 .SS SyntaxError: Non\-ASCII character
577 .PP
578 The error
579 .IP
580 .nf
581 \f[C]
582 File\ "youtube\-dl",\ line\ 2
583 SyntaxError:\ Non\-ASCII\ character\ \[aq]\\x93\[aq]\ ...
584 \f[]
585 .fi
586 .PP
587 means you\[aq]re using an outdated version of Python.
588 Please update to Python 2.6 or 2.7.
589 .SS What is this binary file? Where has the code gone?
590 .PP
591 Since June 2012 (#342) youtube\-dl is packed as an executable zipfile,
592 simply unzip it (might need renaming to \f[C]youtube\-dl.zip\f[] first
593 on some systems) or clone the git repository, as laid out above.
594 If you modify the code, you can run it by executing the
595 \f[C]__main__.py\f[] file.
596 To recompile the executable, run \f[C]make\ youtube\-dl\f[].
597 .SS The exe throws a \f[I]Runtime error from Visual C++\f[]
598 .PP
599 To run the exe you need to install first the Microsoft Visual C++ 2008
600 Redistributable
601 Package (http://www.microsoft.com/en-us/download/details.aspx?id=29).
602 .SS On Windows, how should I set up ffmpeg and youtube\-dl? Where should
603 I put the exe files?
604 .PP
605 If you put youtube\-dl and ffmpeg in the same directory that you\[aq]re
606 running the command from, it will work, but that\[aq]s rather
607 cumbersome.
608 .PP
609 To make a different directory work \- either for ffmpeg, or for
610 youtube\-dl, or for both \- simply create the directory (say,
611 \f[C]C:\\bin\f[], or \f[C]C:\\Users\\<User\ name>\\bin\f[]), put all the
612 executables directly in there, and then set your PATH environment
613 variable (https://www.java.com/en/download/help/path.xml) to include
614 that directory.
615 .PP
616 From then on, after restarting your shell, you will be able to access
617 both youtube\-dl and ffmpeg (and youtube\-dl will be able to find
618 ffmpeg) by simply typing \f[C]youtube\-dl\f[] or \f[C]ffmpeg\f[], no
619 matter what directory you\[aq]re in.
620 .SS How do I put downloads into a specific folder?
621 .PP
622 Use the \f[C]\-o\f[] to specify an output template (#output-template),
623 for example \f[C]\-o\ "/home/user/videos/%(title)s\-%(id)s.%(ext)s"\f[].
624 If you want this for all of your downloads, put the option into your
625 configuration file (#configuration).
626 .SS How do I download a video starting with a \f[C]\-\f[] ?
627 .PP
628 Either prepend \f[C]http://www.youtube.com/watch?v=\f[] or separate the
629 ID from the options with \f[C]\-\-\f[]:
630 .IP
631 .nf
632 \f[C]
633 youtube\-dl\ \-\-\ \-wNyEUrxzFU
634 youtube\-dl\ "http://www.youtube.com/watch?v=\-wNyEUrxzFU"
635 \f[]
636 .fi
637 .SS Can you add support for this anime video site, or site which shows
638 current movies for free?
639 .PP
640 As a matter of policy (as well as legality), youtube\-dl does not
641 include support for services that specialize in infringing copyright.
642 As a rule of thumb, if you cannot easily find a video that the service
643 is quite obviously allowed to distribute (i.e.
644 that has been uploaded by the creator, the creator\[aq]s distributor, or
645 is published under a free license), the service is probably unfit for
646 inclusion to youtube\-dl.
647 .PP
648 A note on the service that they don\[aq]t host the infringing content,
649 but just link to those who do, is evidence that the service should
650 \f[B]not\f[] be included into youtube\-dl.
651 The same goes for any DMCA note when the whole front page of the service
652 is filled with videos they are not allowed to distribute.
653 A "fair use" note is equally unconvincing if the service shows
654 copyright\-protected videos in full without authorization.
655 .PP
656 Support requests for services that \f[B]do\f[] purchase the rights to
657 distribute their content are perfectly fine though.
658 If in doubt, you can simply include a source that mentions the
659 legitimate purchase of content.
660 .SS How can I speed up work on my issue?
661 .PP
662 (Also known as: Help, my important issue not being solved!) The
663 youtube\-dl core developer team is quite small.
664 While we do our best to solve as many issues as possible, sometimes that
665 can take quite a while.
666 To speed up your issue, here\[aq]s what you can do:
667 .PP
668 First of all, please do report the issue at our issue
669 tracker (https://yt-dl.org/bugs).
670 That allows us to coordinate all efforts by users and developers, and
671 serves as a unified point.
672 Unfortunately, the youtube\-dl project has grown too large to use
673 personal email as an effective communication channel.
674 .PP
675 Please read the bug reporting instructions (#bugs) below.
676 A lot of bugs lack all the necessary information.
677 If you can, offer proxy, VPN, or shell access to the youtube\-dl
678 developers.
679 If you are able to, test the issue from multiple computers in multiple
680 countries to exclude local censorship or misconfiguration issues.
681 .PP
682 If nobody is interested in solving your issue, you are welcome to take
683 matters into your own hands and submit a pull request (or coerce/pay
684 somebody else to do so).
685 .PP
686 Feel free to bump the issue from time to time by writing a small comment
687 ("Issue is still present in youtube\-dl version ...from France, but
688 fixed from Belgium"), but please not more than once a month.
689 Please do not declare your issue as \f[C]important\f[] or
690 \f[C]urgent\f[].
691 .SS How can I detect whether a given URL is supported by youtube\-dl?
692 .PP
693 For one, have a look at the list of supported
694 sites (docs/supportedsites.md).
695 Note that it can sometimes happen that the site changes its URL scheme
696 (say, from http://example.com/video/1234567 to
697 http://example.com/v/1234567 ) and youtube\-dl reports an URL of a
698 service in that list as unsupported.
699 In that case, simply report a bug.
700 .PP
701 It is \f[I]not\f[] possible to detect whether a URL is supported or not.
702 That\[aq]s because youtube\-dl contains a generic extractor which
703 matches \f[B]all\f[] URLs.
704 You may be tempted to disable, exclude, or remove the generic extractor,
705 but the generic extractor not only allows users to extract videos from
706 lots of websites that embed a video from another service, but may also
707 be used to extract video from a service that it\[aq]s hosting itself.
708 Therefore, we neither recommend nor support disabling, excluding, or
709 removing the generic extractor.
710 .PP
711 If you want to find out whether a given URL is supported, simply call
712 youtube\-dl with it.
713 If you get no videos back, chances are the URL is either not referring
714 to a video or unsupported.
715 You can find out which by examining the output (if you run youtube\-dl
716 on the console) or catching an \f[C]UnsupportedError\f[] exception if
717 you run it from a Python program.
718 .SH DEVELOPER INSTRUCTIONS
719 .PP
720 Most users do not need to build youtube\-dl and can download the
721 builds (http://rg3.github.io/youtube-dl/download.html) or get them from
722 their distribution.
723 .PP
724 To run youtube\-dl as a developer, you don\[aq]t need to build anything
725 either.
726 Simply execute
727 .IP
728 .nf
729 \f[C]
730 python\ \-m\ youtube_dl
731 \f[]
732 .fi
733 .PP
734 To run the test, simply invoke your favorite test runner, or execute a
735 test file directly; any of the following work:
736 .IP
737 .nf
738 \f[C]
739 python\ \-m\ unittest\ discover
740 python\ test/test_download.py
741 nosetests
742 \f[]
743 .fi
744 .PP
745 If you want to create a build of youtube\-dl yourself, you\[aq]ll need
746 .IP \[bu] 2
747 python
748 .IP \[bu] 2
749 make
750 .IP \[bu] 2
751 pandoc
752 .IP \[bu] 2
753 zip
754 .IP \[bu] 2
755 nosetests
756 .SS Adding support for a new site
757 .PP
758 If you want to add support for a new site, you can follow this quick
759 list (assuming your service is called \f[C]yourextractor\f[]):
760 .IP " 1." 4
761 Fork this repository (https://github.com/rg3/youtube-dl/fork)
762 .IP " 2." 4
763 Check out the source code with
764 \f[C]git\ clone\ git\@github.com:YOUR_GITHUB_USERNAME/youtube\-dl.git\f[]
765 .IP " 3." 4
766 Start a new git branch with
767 \f[C]cd\ youtube\-dl;\ git\ checkout\ \-b\ yourextractor\f[]
768 .IP " 4." 4
769 Start with this simple template and save it to
770 \f[C]youtube_dl/extractor/yourextractor.py\f[]:
771 .RS 4
772 .IP
773 .nf
774 \f[C]
775 #\ coding:\ utf\-8
776 from\ __future__\ import\ unicode_literals
777
778 from\ .common\ import\ InfoExtractor
779
780
781 class\ YourExtractorIE(InfoExtractor):
782 \ \ \ \ _VALID_URL\ =\ r\[aq]https?://(?:www\\.)?yourextractor\\.com/watch/(?P<id>[0\-9]+)\[aq]
783 \ \ \ \ _TEST\ =\ {
784 \ \ \ \ \ \ \ \ \[aq]url\[aq]:\ \[aq]http://yourextractor.com/watch/42\[aq],
785 \ \ \ \ \ \ \ \ \[aq]md5\[aq]:\ \[aq]TODO:\ md5\ sum\ of\ the\ first\ 10241\ bytes\ of\ the\ video\ file\ (use\ \-\-test)\[aq],
786 \ \ \ \ \ \ \ \ \[aq]info_dict\[aq]:\ {
787 \ \ \ \ \ \ \ \ \ \ \ \ \[aq]id\[aq]:\ \[aq]42\[aq],
788 \ \ \ \ \ \ \ \ \ \ \ \ \[aq]ext\[aq]:\ \[aq]mp4\[aq],
789 \ \ \ \ \ \ \ \ \ \ \ \ \[aq]title\[aq]:\ \[aq]Video\ title\ goes\ here\[aq],
790 \ \ \ \ \ \ \ \ \ \ \ \ \[aq]thumbnail\[aq]:\ \[aq]re:^https?://.*\\.jpg$\[aq],
791 \ \ \ \ \ \ \ \ \ \ \ \ #\ TODO\ more\ properties,\ either\ as:
792 \ \ \ \ \ \ \ \ \ \ \ \ #\ *\ A\ value
793 \ \ \ \ \ \ \ \ \ \ \ \ #\ *\ MD5\ checksum;\ start\ the\ string\ with\ md5:
794 \ \ \ \ \ \ \ \ \ \ \ \ #\ *\ A\ regular\ expression;\ start\ the\ string\ with\ re:
795 \ \ \ \ \ \ \ \ \ \ \ \ #\ *\ Any\ Python\ type\ (for\ example\ int\ or\ float)
796 \ \ \ \ \ \ \ \ }
797 \ \ \ \ }
798
799 \ \ \ \ def\ _real_extract(self,\ url):
800 \ \ \ \ \ \ \ \ video_id\ =\ self._match_id(url)
801 \ \ \ \ \ \ \ \ webpage\ =\ self._download_webpage(url,\ video_id)
802
803 \ \ \ \ \ \ \ \ #\ TODO\ more\ code\ goes\ here,\ for\ example\ ...
804 \ \ \ \ \ \ \ \ title\ =\ self._html_search_regex(r\[aq]<h1>(.*?)</h1>\[aq],\ webpage,\ \[aq]title\[aq])
805
806 \ \ \ \ \ \ \ \ return\ {
807 \ \ \ \ \ \ \ \ \ \ \ \ \[aq]id\[aq]:\ video_id,
808 \ \ \ \ \ \ \ \ \ \ \ \ \[aq]title\[aq]:\ title,
809 \ \ \ \ \ \ \ \ \ \ \ \ \[aq]description\[aq]:\ self._og_search_description(webpage),
810 \ \ \ \ \ \ \ \ \ \ \ \ #\ TODO\ more\ properties\ (see\ youtube_dl/extractor/common.py)
811 \ \ \ \ \ \ \ \ }
812 \f[]
813 .fi
814 .RE
815 .IP " 5." 4
816 Add an import in
817 \f[C]youtube_dl/extractor/__init__.py\f[] (https://github.com/rg3/youtube-dl/blob/master/youtube_dl/extractor/__init__.py).
818 .IP " 6." 4
819 Run
820 \f[C]python\ test/test_download.py\ TestDownload.test_YourExtractor\f[].
821 This \f[I]should fail\f[] at first, but you can continually re\-run it
822 until you\[aq]re done.
823 If you decide to add more than one test, then rename \f[C]_TEST\f[] to
824 \f[C]_TESTS\f[] and make it into a list of dictionaries.
825 The tests will be then be named
826 \f[C]TestDownload.test_YourExtractor\f[],
827 \f[C]TestDownload.test_YourExtractor_1\f[],
828 \f[C]TestDownload.test_YourExtractor_2\f[], etc.
829 .IP " 7." 4
830 Have a look at
831 \f[C]youtube_dl/common/extractor/common.py\f[] (https://github.com/rg3/youtube-dl/blob/master/youtube_dl/extractor/common.py)
832 for possible helper methods and a detailed description of what your
833 extractor should
834 return (https://github.com/rg3/youtube-dl/blob/master/youtube_dl/extractor/common.py#L38).
835 Add tests and code for as many as you want.
836 .IP " 8." 4
837 If you can, check the code with
838 flake8 (https://pypi.python.org/pypi/flake8).
839 .IP " 9." 4
840 When the tests pass, add (http://git-scm.com/docs/git-add) the new files
841 and commit (http://git-scm.com/docs/git-commit) them and
842 push (http://git-scm.com/docs/git-push) the result, like this:
843 .RS 4
844 .IP
845 .nf
846 \f[C]
847 $\ git\ add\ youtube_dl/extractor/__init__.py
848 $\ git\ add\ youtube_dl/extractor/yourextractor.py
849 $\ git\ commit\ \-m\ \[aq][yourextractor]\ Add\ new\ extractor\[aq]
850 $\ git\ push\ origin\ yourextractor
851 \f[]
852 .fi
853 .RE
854 .IP "10." 4
855 Finally, create a pull
856 request (https://help.github.com/articles/creating-a-pull-request).
857 We\[aq]ll then review and merge it.
858 .PP
859 In any case, thank you very much for your contributions!
860 .SH EMBEDDING YOUTUBE\-DL
861 .PP
862 youtube\-dl makes the best effort to be a good command\-line program,
863 and thus should be callable from any programming language.
864 If you encounter any problems parsing its output, feel free to create a
865 report (https://github.com/rg3/youtube-dl/issues/new).
866 .PP
867 From a Python program, you can embed youtube\-dl in a more powerful
868 fashion, like this:
869 .IP
870 .nf
871 \f[C]
872 from\ __future__\ import\ unicode_literals
873 import\ youtube_dl
874
875 ydl_opts\ =\ {}
876 with\ youtube_dl.YoutubeDL(ydl_opts)\ as\ ydl:
877 \ \ \ \ ydl.download([\[aq]http://www.youtube.com/watch?v=BaW_jenozKc\[aq]])
878 \f[]
879 .fi
880 .PP
881 Most likely, you\[aq]ll want to use various options.
882 For a list of what can be done, have a look at
883 youtube_dl/YoutubeDL.py (https://github.com/rg3/youtube-dl/blob/master/youtube_dl/YoutubeDL.py#L69).
884 For a start, if you want to intercept youtube\-dl\[aq]s output, set a
885 \f[C]logger\f[] object.
886 .PP
887 Here\[aq]s a more complete example of a program that outputs only errors
888 (and a short message after the download is finished), and
889 downloads/converts the video to an mp3 file:
890 .IP
891 .nf
892 \f[C]
893 from\ __future__\ import\ unicode_literals
894 import\ youtube_dl
895
896
897 class\ MyLogger(object):
898 \ \ \ \ def\ debug(self,\ msg):
899 \ \ \ \ \ \ \ \ pass
900
901 \ \ \ \ def\ warning(self,\ msg):
902 \ \ \ \ \ \ \ \ pass
903
904 \ \ \ \ def\ error(self,\ msg):
905 \ \ \ \ \ \ \ \ print(msg)
906
907
908 def\ my_hook(d):
909 \ \ \ \ if\ d[\[aq]status\[aq]]\ ==\ \[aq]finished\[aq]:
910 \ \ \ \ \ \ \ \ print(\[aq]Done\ downloading,\ now\ converting\ ...\[aq])
911
912
913 ydl_opts\ =\ {
914 \ \ \ \ \[aq]format\[aq]:\ \[aq]bestaudio/best\[aq],
915 \ \ \ \ \[aq]postprocessors\[aq]:\ [{
916 \ \ \ \ \ \ \ \ \[aq]key\[aq]:\ \[aq]FFmpegExtractAudio\[aq],
917 \ \ \ \ \ \ \ \ \[aq]preferredcodec\[aq]:\ \[aq]mp3\[aq],
918 \ \ \ \ \ \ \ \ \[aq]preferredquality\[aq]:\ \[aq]192\[aq],
919 \ \ \ \ }],
920 \ \ \ \ \[aq]logger\[aq]:\ MyLogger(),
921 \ \ \ \ \[aq]progress_hooks\[aq]:\ [my_hook],
922 }
923 with\ youtube_dl.YoutubeDL(ydl_opts)\ as\ ydl:
924 \ \ \ \ ydl.download([\[aq]http://www.youtube.com/watch?v=BaW_jenozKc\[aq]])
925 \f[]
926 .fi
927 .SH BUGS
928 .PP
929 Bugs and suggestions should be reported at:
930 <https://github.com/rg3/youtube-dl/issues> .
931 Unless you were prompted so or there is another pertinent reason (e.g.
932 GitHub fails to accept the bug report), please do not send bug reports
933 via personal email.
934 For discussions, join us in the irc channel #youtube\-dl on freenode.
935 .PP
936 \f[B]Please include the full output of youtube\-dl when run with
937 \f[C]\-v\f[]\f[].
938 .PP
939 The output (including the first lines) contain important debugging
940 information.
941 Issues without the full output are often not reproducible and therefore
942 do not get solved in short order, if ever.
943 .PP
944 Please re\-read your issue once again to avoid a couple of common
945 mistakes (you can and should use this as a checklist):
946 .SS Is the description of the issue itself sufficient?
947 .PP
948 We often get issue reports that we cannot really decipher.
949 While in most cases we eventually get the required information after
950 asking back multiple times, this poses an unnecessary drain on our
951 resources.
952 Many contributors, including myself, are also not native speakers, so we
953 may misread some parts.
954 .PP
955 So please elaborate on what feature you are requesting, or what bug you
956 want to be fixed.
957 Make sure that it\[aq]s obvious
958 .IP \[bu] 2
959 What the problem is
960 .IP \[bu] 2
961 How it could be fixed
962 .IP \[bu] 2
963 How your proposed solution would look like
964 .PP
965 If your report is shorter than two lines, it is almost certainly missing
966 some of these, which makes it hard for us to respond to it.
967 We\[aq]re often too polite to close the issue outright, but the missing
968 info makes misinterpretation likely.
969 As a commiter myself, I often get frustrated by these issues, since the
970 only possible way for me to move forward on them is to ask for
971 clarification over and over.
972 .PP
973 For bug reports, this means that your report should contain the
974 \f[I]complete\f[] output of youtube\-dl when called with the \-v flag.
975 The error message you get for (most) bugs even says so, but you would
976 not believe how many of our bug reports do not contain this information.
977 .PP
978 If your server has multiple IPs or you suspect censorship, adding
979 \-\-call\-home may be a good idea to get more diagnostics.
980 If the error is \f[C]ERROR:\ Unable\ to\ extract\ ...\f[] and you cannot
981 reproduce it from multiple countries, add \f[C]\-\-dump\-pages\f[]
982 (warning: this will yield a rather large output, redirect it to the file
983 \f[C]log.txt\f[] by adding \f[C]>log.txt\ 2>&1\f[] to your
984 command\-line) or upload the \f[C]\&.dump\f[] files you get when you add
985 \f[C]\-\-write\-pages\f[] somewhere (https://gist.github.com/).
986 .PP
987 \f[B]Site support requests must contain an example URL\f[].
988 An example URL is a URL you might want to download, like
989 http://www.youtube.com/watch?v=BaW_jenozKc .
990 There should be an obvious video present.
991 Except under very special circumstances, the main page of a video
992 service (e.g.
993 http://www.youtube.com/ ) is \f[I]not\f[] an example URL.
994 .SS Are you using the latest version?
995 .PP
996 Before reporting any issue, type youtube\-dl \-U.
997 This should report that you\[aq]re up\-to\-date.
998 About 20% of the reports we receive are already fixed, but people are
999 using outdated versions.
1000 This goes for feature requests as well.
1001 .SS Is the issue already documented?
1002 .PP
1003 Make sure that someone has not already opened the issue you\[aq]re
1004 trying to open.
1005 Search at the top of the window or at
1006 https://github.com/rg3/youtube\-dl/search?type=Issues .
1007 If there is an issue, feel free to write something along the lines of
1008 "This affects me as well, with version 2015.01.01.
1009 Here is some more information on the issue: ...".
1010 While some issues may be old, a new post into them often spurs rapid
1011 activity.
1012 .SS Why are existing options not enough?
1013 .PP
1014 Before requesting a new feature, please have a quick peek at the list of
1015 supported
1016 options (https://github.com/rg3/youtube-dl/blob/master/README.md#synopsis).
1017 Many feature requests are for features that actually exist already!
1018 Please, absolutely do show off your work in the issue report and detail
1019 how the existing similar options do \f[I]not\f[] solve your problem.
1020 .SS Is there enough context in your bug report?
1021 .PP
1022 People want to solve problems, and often think they do us a favor by
1023 breaking down their larger problems (e.g.
1024 wanting to skip already downloaded files) to a specific request (e.g.
1025 requesting us to look whether the file exists before downloading the
1026 info page).
1027 However, what often happens is that they break down the problem into two
1028 steps: One simple, and one impossible (or extremely complicated one).
1029 .PP
1030 We are then presented with a very complicated request when the original
1031 problem could be solved far easier, e.g.
1032 by recording the downloaded video IDs in a separate file.
1033 To avoid this, you must include the greater context where it is
1034 non\-obvious.
1035 In particular, every feature request that does not consist of adding
1036 support for a new site should contain a use case scenario that explains
1037 in what situation the missing feature would be useful.
1038 .SS Does the issue involve one problem, and one problem only?
1039 .PP
1040 Some of our users seem to think there is a limit of issues they can or
1041 should open.
1042 There is no limit of issues they can or should open.
1043 While it may seem appealing to be able to dump all your issues into one
1044 ticket, that means that someone who solves one of your issues cannot
1045 mark the issue as closed.
1046 Typically, reporting a bunch of issues leads to the ticket lingering
1047 since nobody wants to attack that behemoth, until someone mercifully
1048 splits the issue into multiple ones.
1049 .PP
1050 In particular, every site support request issue should only pertain to
1051 services at one site (generally under a common domain, but always using
1052 the same backend technology).
1053 Do not request support for vimeo user videos, Whitehouse podcasts, and
1054 Google Plus pages in the same issue.
1055 Also, make sure that you don\[aq]t post bug reports alongside feature
1056 requests.
1057 As a rule of thumb, a feature request does not include outputs of
1058 youtube\-dl that are not immediately related to the feature at hand.
1059 Do not post reports of a network error alongside the request for a new
1060 video service.
1061 .SS Is anyone going to need the feature?
1062 .PP
1063 Only post features that you (or an incapacitated friend you can
1064 personally talk to) require.
1065 Do not post features because they seem like a good idea.
1066 If they are really useful, they will be requested by someone who
1067 requires them.
1068 .SS Is your question about youtube\-dl?
1069 .PP
1070 It may sound strange, but some bug reports we receive are completely
1071 unrelated to youtube\-dl and relate to a different or even the
1072 reporter\[aq]s own application.
1073 Please make sure that you are actually using youtube\-dl.
1074 If you are using a UI for youtube\-dl, report the bug to the maintainer
1075 of the actual application providing the UI.
1076 On the other hand, if your UI for youtube\-dl fails in some way you
1077 believe is related to youtube\-dl, by all means, go ahead and report the
1078 bug.
1079 .SH COPYRIGHT
1080 .PP
1081 youtube\-dl is released into the public domain by the copyright holders.
1082 .PP
1083 This README file was originally written by Daniel Bolton
1084 (<https://github.com/dbbolton>) and is likewise released into the public
1085 domain.