X-Git-Url: https://git.rapsys.eu/youtubedl/blobdiff_plain/89bb9e23b34f43c6563524917f7dffb9841a972e..f101760742487c4736bba7d3bbfbc516bd653aa5:/youtube-dl.1 diff --git a/youtube-dl.1 b/youtube-dl.1 index cb8f218..ea1ef9e 100644 --- a/youtube-dl.1 +++ b/youtube-dl.1 @@ -906,8 +906,8 @@ its containing directory. .RE .TP .B \-\-exec \f[I]CMD\f[] -Execute a command on the file after downloading, similar to find\[aq]s -\-exec syntax. +Execute a command on the file after downloading and post\-processing, +similar to find\[aq]s \-exec syntax. Example: \-\-exec \[aq]adb push {} /sdcard/Music/ && rm {}\[aq] .RS .RE @@ -1323,18 +1323,24 @@ format of a particular file extension served as a single file, e.g. \f[C]webm\f[] extension served as a single file. .PP You can also use special names to select particular edge case formats: -\- \f[C]best\f[]: Select the best quality format represented by a single +.IP \[bu] 2 +\f[C]best\f[]: Select the best quality format represented by a single +file with video and audio. +.IP \[bu] 2 +\f[C]worst\f[]: Select the worst quality format represented by a single file with video and audio. -\- \f[C]worst\f[]: Select the worst quality format represented by a -single file with video and audio. -\- \f[C]bestvideo\f[]: Select the best quality video\-only format (e.g. +.IP \[bu] 2 +\f[C]bestvideo\f[]: Select the best quality video\-only format (e.g. DASH video). May not be available. -\- \f[C]worstvideo\f[]: Select the worst quality video\-only format. +.IP \[bu] 2 +\f[C]worstvideo\f[]: Select the worst quality video\-only format. May not be available. -\- \f[C]bestaudio\f[]: Select the best quality audio only\-format. +.IP \[bu] 2 +\f[C]bestaudio\f[]: Select the best quality audio only\-format. May not be available. -\- \f[C]worstaudio\f[]: Select the worst quality audio only\-format. +.IP \[bu] 2 +\f[C]worstaudio\f[]: Select the worst quality audio only\-format. May not be available. .PP For example, to download the worst quality video\-only format you can @@ -1363,25 +1369,47 @@ brackets, as in \f[C]\-f\ "best[height=720]"\f[] (or .PP The following numeric meta fields can be used with comparisons \f[C]<\f[], \f[C]<=\f[], \f[C]>\f[], \f[C]>=\f[], \f[C]=\f[] (equals), -\f[C]!=\f[] (not equals): \- \f[C]filesize\f[]: The number of bytes, if -known in advance \- \f[C]width\f[]: Width of the video, if known \- -\f[C]height\f[]: Height of the video, if known \- \f[C]tbr\f[]: Average -bitrate of audio and video in KBit/s \- \f[C]abr\f[]: Average audio -bitrate in KBit/s \- \f[C]vbr\f[]: Average video bitrate in KBit/s \- -\f[C]asr\f[]: Audio sampling rate in Hertz \- \f[C]fps\f[]: Frame rate -.PP -Also filtering work for comparisons \f[C]=\f[] (equals), \f[C]!=\f[] -(not equals), \f[C]^=\f[] (begins with), \f[C]$=\f[] (ends with), -\f[C]*=\f[] (contains) and following string meta fields: \- -\f[C]ext\f[]: File extension \- \f[C]acodec\f[]: Name of the audio codec -in use \- \f[C]vcodec\f[]: Name of the video codec in use \- -\f[C]container\f[]: Name of the container format \- \f[C]protocol\f[]: -The protocol that will be used for the actual download, lower\-case -(\f[C]http\f[], \f[C]https\f[], \f[C]rtsp\f[], \f[C]rtmp\f[], -\f[C]rtmpe\f[], \f[C]mms\f[], \f[C]f4m\f[], \f[C]ism\f[], -\f[C]http_dash_segments\f[], \f[C]m3u8\f[], or \f[C]m3u8_native\f[]) \- +\f[C]!=\f[] (not equals): +.IP \[bu] 2 +\f[C]filesize\f[]: The number of bytes, if known in advance +.IP \[bu] 2 +\f[C]width\f[]: Width of the video, if known +.IP \[bu] 2 +\f[C]height\f[]: Height of the video, if known +.IP \[bu] 2 +\f[C]tbr\f[]: Average bitrate of audio and video in KBit/s +.IP \[bu] 2 +\f[C]abr\f[]: Average audio bitrate in KBit/s +.IP \[bu] 2 +\f[C]vbr\f[]: Average video bitrate in KBit/s +.IP \[bu] 2 +\f[C]asr\f[]: Audio sampling rate in Hertz +.IP \[bu] 2 +\f[C]fps\f[]: Frame rate +.PP +Also filtering work for comparisons \f[C]=\f[] (equals), \f[C]^=\f[] +(starts with), \f[C]$=\f[] (ends with), \f[C]*=\f[] (contains) and +following string meta fields: +.IP \[bu] 2 +\f[C]ext\f[]: File extension +.IP \[bu] 2 +\f[C]acodec\f[]: Name of the audio codec in use +.IP \[bu] 2 +\f[C]vcodec\f[]: Name of the video codec in use +.IP \[bu] 2 +\f[C]container\f[]: Name of the container format +.IP \[bu] 2 +\f[C]protocol\f[]: The protocol that will be used for the actual +download, lower\-case (\f[C]http\f[], \f[C]https\f[], \f[C]rtsp\f[], +\f[C]rtmp\f[], \f[C]rtmpe\f[], \f[C]mms\f[], \f[C]f4m\f[], \f[C]ism\f[], +\f[C]http_dash_segments\f[], \f[C]m3u8\f[], or \f[C]m3u8_native\f[]) +.IP \[bu] 2 \f[C]format_id\f[]: A short description of the format .PP +Any string comparison may be prefixed with negation \f[C]!\f[] in order +to produce an opposite comparison, e.g. +\f[C]!*=\f[] (does not contain). +.PP 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. @@ -1406,8 +1434,8 @@ than 480 you can use \f[C]\-f\ \[aq](mp4,webm)[height<480]\[aq]\f[]. .PP Since the end of April 2015 and version 2015.04.26, youtube\-dl uses \f[C]\-f\ bestvideo+bestaudio/best\f[] as the default format selection -(see #5447 (https://github.com/rg3/youtube-dl/issues/5447), -#5456 (https://github.com/rg3/youtube-dl/issues/5456)). +(see #5447 (https://github.com/ytdl-org/youtube-dl/issues/5447), +#5456 (https://github.com/ytdl-org/youtube-dl/issues/5456)). If ffmpeg or avconv are installed this results in downloading \f[C]bestvideo\f[] and \f[C]bestaudio\f[] separately and muxing them together into a single file giving the best overall quality available. @@ -1443,7 +1471,7 @@ single. #\ Download\ best\ mp4\ format\ available\ or\ any\ other\ best\ if\ no\ mp4\ available $\ youtube\-dl\ \-f\ \[aq]bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best\[aq] -#\ Download\ best\ format\ available\ but\ not\ better\ that\ 480p +#\ Download\ best\ format\ available\ but\ no\ better\ than\ 480p $\ youtube\-dl\ \-f\ \[aq]bestvideo[height<=480]+bestaudio/best[height<=480]\[aq] #\ Download\ best\ video\ only\ format\ but\ no\ bigger\ than\ 50\ MB @@ -1488,8 +1516,8 @@ $\ youtube\-dl\ \-\-dateafter\ 20000101\ \-\-datebefore\ 20091231 .SS How do I update youtube\-dl? .PP If you\[aq]ve followed our manual installation -instructions (https://rg3.github.io/youtube-dl/download.html), you can -simply run \f[C]youtube\-dl\ \-U\f[] (or, on Linux, +instructions (https://ytdl-org.github.io/youtube-dl/download.html), you +can simply run \f[C]youtube\-dl\ \-U\f[] (or, on Linux, \f[C]sudo\ youtube\-dl\ \-U\f[]). .PP If you have used pip, a simple @@ -1518,12 +1546,12 @@ sudo\ apt\-get\ remove\ \-y\ youtube\-dl .fi .PP Afterwards, simply follow our manual installation -instructions (https://rg3.github.io/youtube-dl/download.html): +instructions (https://ytdl-org.github.io/youtube-dl/download.html): .IP .nf \f[C] -sudo\ wget\ https://yt\-dl.org/latest/youtube\-dl\ \-O\ /usr/local/bin/youtube\-dl -sudo\ chmod\ a+x\ /usr/local/bin/youtube\-dl +sudo\ wget\ https://yt\-dl.org/downloads/latest/youtube\-dl\ \-O\ /usr/local/bin/youtube\-dl +sudo\ chmod\ a+rx\ /usr/local/bin/youtube\-dl hash\ \-r \f[] .fi @@ -1585,7 +1613,7 @@ this? Apparently YouTube requires you to pass a CAPTCHA test if you download too much. We\[aq]re considering to provide a way to let you solve the -CAPTCHA (https://github.com/rg3/youtube-dl/issues/154), but at the +CAPTCHA (https://github.com/ytdl-org/youtube-dl/issues/154), but at the moment, your best course of action is pointing a web browser to the youtube URL, solving the CAPTCHA, and restart youtube\-dl. .SS Do I need any other programs? @@ -1683,10 +1711,21 @@ See above for how to update youtube\-dl. .PP These two error codes indicate that the service is blocking your IP address because of overuse. -Contact the service and ask them to unblock your IP address, or \- if -you have acquired a whitelisted IP address already \- use the -\f[C]\-\-proxy\f[] or \f[C]\-\-source\-address\f[] options to select -another IP address. +Usually this is a soft block meaning that you can gain access again +after solving CAPTCHA. +Just open a browser and solve a CAPTCHA the service suggests you and +after that pass cookies to youtube\-dl. +Note that if your machine has multiple external IPs then you should also +pass exactly the same IP you\[aq]ve used for solving CAPTCHA with +\f[C]\-\-source\-address\f[]. +Also you may need to pass a \f[C]User\-Agent\f[] HTTP header of your +browser with \f[C]\-\-user\-agent\f[]. +.PP +If this is not the case (no CAPTCHA suggested to solve by the service) +then you can contact the service and ask them to unblock your IP +address, or \- if you have acquired a whitelisted IP address already \- +use the \f[C]\-\-proxy\f[] or \f[C]\-\-source\-address\f[] options to +select another IP address. .SS SyntaxError: Non\-ASCII character .PP The error @@ -1702,10 +1741,11 @@ means you\[aq]re using an outdated version of Python. Please update to Python 2.6 or 2.7. .SS What is this binary file? Where has the code gone? .PP -Since June 2012 (#342 (https://github.com/rg3/youtube-dl/issues/342)) -youtube\-dl is packed as an executable zipfile, simply unzip it (might -need renaming to \f[C]youtube\-dl.zip\f[] first on some systems) or -clone the git repository, as laid out above. +Since June 2012 +(#342 (https://github.com/ytdl-org/youtube-dl/issues/342)) youtube\-dl +is packed as an executable zipfile, simply unzip it (might need renaming +to \f[C]youtube\-dl.zip\f[] 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 \f[C]__main__.py\f[] file. To recompile the executable, run \f[C]make\ youtube\-dl\f[]. @@ -1838,7 +1878,7 @@ improvements of the built\-in downloader and/or ffmpeg. .PP In particular, the generic extractor (used when your website is not in the list of supported sites by -youtube\-dl (https://rg3.github.io/youtube-dl/supportedsites.html) +youtube\-dl (https://ytdl-org.github.io/youtube-dl/supportedsites.html) cannot mandate one specific downloader. .PP If you put either \f[C]\-\-hls\-prefer\-native\f[] or @@ -1951,8 +1991,8 @@ such as checking that your version of youtube\-dl is current. .SH DEVELOPER INSTRUCTIONS .PP Most users do not need to build youtube\-dl and can download the -builds (https://rg3.github.io/youtube-dl/download.html) or get them from -their distribution. +builds (https://ytdl-org.github.io/youtube-dl/download.html) or get them +from their distribution. .PP To run youtube\-dl as a developer, you don\[aq]t need to build anything either. @@ -2001,7 +2041,7 @@ After you have ensured this site is distributing its content legally, you can follow this quick list (assuming your service is called \f[C]yourextractor\f[]): .IP " 1." 4 -Fork this repository (https://github.com/rg3/youtube-dl/fork) +Fork this repository (https://github.com/ytdl-org/youtube-dl/fork) .IP " 2." 4 Check out the source code with: .RS 4 @@ -2073,7 +2113,7 @@ class\ YourExtractorIE(InfoExtractor): .RE .IP " 5." 4 Add an import in -\f[C]youtube_dl/extractor/extractors.py\f[] (https://github.com/rg3/youtube-dl/blob/master/youtube_dl/extractor/extractors.py). +\f[C]youtube_dl/extractor/extractors.py\f[] (https://github.com/ytdl-org/youtube-dl/blob/master/youtube_dl/extractor/extractors.py). .IP " 6." 4 Run \f[C]python\ test/test_download.py\ TestDownload.test_YourExtractor\f[]. @@ -2088,15 +2128,15 @@ Note that tests with \f[C]only_matching\f[] key in test\[aq]s dict are not counted in. .IP " 7." 4 Have a look at -\f[C]youtube_dl/extractor/common.py\f[] (https://github.com/rg3/youtube-dl/blob/master/youtube_dl/extractor/common.py) +\f[C]youtube_dl/extractor/common.py\f[] (https://github.com/ytdl-org/youtube-dl/blob/master/youtube_dl/extractor/common.py) for possible helper methods and a detailed description of what your extractor should and may -return (https://github.com/rg3/youtube-dl/blob/7f41a598b3fba1bcab2817de64a08941200aa3c8/youtube_dl/extractor/common.py#L94-L303). +return (https://github.com/ytdl-org/youtube-dl/blob/7f41a598b3fba1bcab2817de64a08941200aa3c8/youtube_dl/extractor/common.py#L94-L303). Add tests and code for as many as you want. .IP " 8." 4 Make sure your code follows youtube\-dl coding conventions and check the code with -flake8 (http://flake8.pycqa.org/en/latest/index.html#quickstart): +flake8 (https://flake8.pycqa.org/en/latest/index.html#quickstart): .RS 4 .IP .nf @@ -2153,7 +2193,7 @@ update at all. .PP For extraction to work youtube\-dl relies on metadata your extractor extracts and provides to youtube\-dl expressed by an information -dictionary (https://github.com/rg3/youtube-dl/blob/7f41a598b3fba1bcab2817de64a08941200aa3c8/youtube_dl/extractor/common.py#L94-L303) +dictionary (https://github.com/ytdl-org/youtube-dl/blob/7f41a598b3fba1bcab2817de64a08941200aa3c8/youtube_dl/extractor/common.py#L94-L303) or simply \f[I]info dict\f[]. Only the following meta fields in the \f[I]info dict\f[] are considered mandatory for a successful extraction process by youtube\-dl: @@ -2174,7 +2214,7 @@ extraction does not make any sense without and if any of them fail to be extracted then the extractor is considered completely broken. .PP Any -field (https://github.com/rg3/youtube-dl/blob/7f41a598b3fba1bcab2817de64a08941200aa3c8/youtube_dl/extractor/common.py#L188-L303) +field (https://github.com/ytdl-org/youtube-dl/blob/7f41a598b3fba1bcab2817de64a08941200aa3c8/youtube_dl/extractor/common.py#L188-L303) apart from the aforementioned ones are considered \f[B]optional\f[]. That means that extraction should be \f[B]tolerant\f[] to situations when sources for these fields can potentially be unavailable (even if @@ -2394,10 +2434,90 @@ Incorrect: \[aq]PLMYEtVRpaqY00V9W81Cwmzp6N6vZqfUKD4\[aq] \f[] .fi -.SS Use safe conversion functions +.SS Inline values +.PP +Extracting variables is acceptable for reducing code duplication and +improving readability of complex expressions. +However, you should avoid extracting variables used only once and moving +them to opposite parts of the extractor file, which makes reading the +linear flow difficult. +.SS Example +.PP +Correct: +.IP +.nf +\f[C] +title\ =\ self._html_search_regex(r\[aq]