Compare commits

...

82 Commits

Author SHA1 Message Date
Ricardo Garcia
ad0525b3e6 Bump version number 2010-10-31 11:24:52 +01:00
Ricardo Garcia
30edbf89e4 Report final URL with -g and do not print URLs normally (fixes issue #49) 2010-10-31 11:24:52 +01:00
Ricardo Garcia
eae2666cb4 Handle weird OSX locale settings gracefully (fixes issue #43) 2010-10-31 11:24:52 +01:00
Ricardo Garcia
2a04438c7c Restore INTERNAL version number 2010-10-31 11:24:52 +01:00
Ricardo Garcia
dd24ff44ab Bump version number 2010-10-31 11:24:48 +01:00
Ricardo Garcia
304a4d85ea Modify _MORE_PAGES_INDICATOR for searches (fixes issue #41) 2010-10-31 11:24:48 +01:00
Ricardo Garcia
d899774377 Accept my_playlists syntax for playlists 2010-10-31 11:24:48 +01:00
Ricardo Garcia
fade05990c Do not specify any format as a last option for the -b flag 2010-10-31 11:24:48 +01:00
Ricardo Garcia
e5b1604882 Set INTERNAL version number 2010-10-31 11:24:48 +01:00
Ricardo Garcia
0c8beb43f2 Bump version number 2010-10-31 11:24:44 +01:00
Ricardo Garcia
71b7300e63 Use get_video_info to work around captcha problems (fixes issue #31) 2010-10-31 11:24:44 +01:00
Ricardo Garcia
8497c36d5a Fix minor problem with size formatting method 2010-10-31 11:24:44 +01:00
Ricardo Garcia
110cd3462e Update User-agent string 2010-10-31 11:24:43 +01:00
Ricardo Garcia
18963a36b0 Fix metacafe.com code due to recent changes in the site 2010-10-31 11:24:43 +01:00
Ricardo Garcia
df1ceb1fd9 Include format 5 in best quality list 2010-10-31 11:24:43 +01:00
Ricardo Garcia
7eb0e89742 Properly encode messages sent to stderr (fixes issue #34) 2010-10-31 11:24:43 +01:00
Ricardo Garcia
8b07dec5f6 Bump version number 2010-10-31 11:24:40 +01:00
Ricardo Garcia
113e5266cc Modify "more pages" check in YouTube playlist (fixes issue #29) 2010-10-31 11:24:40 +01:00
Ricardo Garcia
55e7c75e12 Delay opening file until there is data to write
Fixes issue #19.
2010-10-31 11:24:40 +01:00
Ricardo Garcia
ff21a710ae Restore INTERNAL version number 2010-10-31 11:24:36 +01:00
Ricardo Garcia
7374795552 Bump version number 2010-10-31 11:24:36 +01:00
Ricardo Garcia
0cd61126fc Document new "continuedl" FileDownloader option 2010-10-31 11:24:36 +01:00
Ricardo Garcia
e1f18b8a84 Remove integer casts and replace them with long integer casts 2010-10-31 11:24:36 +01:00
Ricardo Garcia
6a0015a7e0 Fix missing cast preventing detection of already downloaded file 2010-10-31 11:24:36 +01:00
Ricardo Garcia
7db85b2c70 Tweaks to ivanov's code 2010-10-31 11:24:36 +01:00
Paul Ivanov
f76c2df64e Added -c option (--continue)
interrupted downloads will properly resume and append to the previously downloaded data, instead of overwriting the file.

There's some error checking - if the length of the file to be download matches the length of the previously downloaded data, we report that this file has already been downloaded and do nothing.

If there is some other HTTP 416 'Requested range not satisfiable' error, we simply re-download the whole file (reverting to the original functionality)

All other HTTP errors are simply raised.

Resuming does not override -w (--nooverwrite), since it is not clear what should happen if file on disk is larger than file to be downloaded.

Thus, -c does nothing if -w is present.
2010-10-31 11:24:36 +01:00
Ricardo Garcia
daa88ccc2e Fix TypeError when using the -f option (fixes issue #24) 2010-10-31 11:24:36 +01:00
Ricardo Garcia
eb5d184157 Restore INTERNAL version number 2010-10-31 11:24:36 +01:00
Ricardo Garcia
5745bfdcdc Bump version number 2010-10-31 11:24:32 +01:00
Ricardo Garcia
320becd692 Remove trails from the "append_const" change (fixes issue #23) 2010-10-31 11:24:32 +01:00
Ricardo Garcia
968aa88438 Only catch UnavailableFormatError in call to process_info 2010-10-31 11:24:32 +01:00
Ricardo Garcia
cbfff4db63 Verify URLs in simulate mode (fixes issue #22) 2010-10-31 11:24:32 +01:00
Ricardo Garcia
781daeabdb Restore "INTERNAL" version number 2010-10-31 11:24:32 +01:00
Ricardo Garcia
705804f5d1 Update version number in LATEST_VERSION 2010-10-31 11:24:24 +01:00
Ricardo Garcia
1d50e3d153 Bump version number 2010-10-31 11:24:19 +01:00
Ricardo Garcia
d69a1c9189 Handle "content too short" errors properly 2010-10-31 11:24:19 +01:00
Ricardo Garcia
488f619471 Close video file before removing it. 2010-10-31 11:24:19 +01:00
Ricardo Garcia
097ba9472b Remove .hgignore from version tracking 2010-10-31 11:24:19 +01:00
Ricardo Garcia
554f3e284c Add LATEST_VERSION to further ease checking which is the latest stable version 2010-10-31 11:24:19 +01:00
Ricardo Garcia
cab60d710a Put back INTERNAL version 2010-10-31 11:24:19 +01:00
Ricardo Garcia
152edc0d4c Set version number 2010-10-31 11:24:16 +01:00
Ricardo Garcia
b74c859d0f Use store_const instead of append_const as the latter requires Python 2.5 2010-10-31 11:24:16 +01:00
Ricardo Garcia
0e54320009 Restore INTERNAL version number 2010-10-31 11:24:16 +01:00
Ricardo Garcia
43f35682e9 Put version number in place 2010-10-31 11:24:12 +01:00
Ricardo Garcia
ad274509aa Add an "epoch" keyword to the output template 2010-10-31 11:24:12 +01:00
Ricardo Garcia
d09744d055 Add format 35 (flv) as second best in quality 2010-10-31 11:24:12 +01:00
Ricardo Garcia
1c76e23e0f Move the -t and -l options to the filesystem group 2010-10-31 11:24:12 +01:00
dannycolligan
42bcd27d3b Some consistency changes and ghost-file bugfix after discussion with rg3 2010-10-31 11:24:12 +01:00
dannycolligan
2740c509b3 Fixed ambiguity of multiple video option specifiers by dissalowing it; changed some sys.ext calls to parser.error 2010-10-31 11:24:12 +01:00
dannycolligan
7b7759f5a4 Added -b option and created option groups for help prompt 2010-10-31 11:24:12 +01:00
Ricardo Garcia
8d2c83eda5 Update and correct (format,extension) table for YouTube 2010-10-31 11:24:12 +01:00
Ricardo Garcia
2f11508ada Minor documentation change 2010-10-31 11:24:12 +01:00
Ricardo Garcia
b65740e474 Skip blank lines in batch file -- fixes issue #9 2010-10-31 11:24:12 +01:00
Ricardo Garcia
a825f0ca83 Revert version number to INTERNAL 2010-10-31 11:24:12 +01:00
Ricardo Garcia
27c3383e2d Set version number 2010-10-31 11:24:08 +01:00
Ricardo Garcia
dbccb6cd84 Fix code for metacafe.com (this fixes issue #8) 2010-10-31 11:24:08 +01:00
Ricardo Garcia
98164eb3b9 Fix some minor unicode-related problems 2010-10-31 11:24:08 +01:00
Ricardo Garcia
2851b2ca18 Update internal documentation to reflect the new behaviour 2010-10-31 11:24:08 +01:00
Ricardo Garcia
6f21f68629 Download videos after extracting information
This is achieved by letting the InfoExtractors instruct its downloader to
process the information dictionary just after extracting the information. As a
consequence, some code is simplified too.
2010-10-31 11:24:08 +01:00
Ricardo Garcia
147753eb33 Replase self._downloader.to_stderr() with self._downloader.trouble() 2010-10-31 11:24:08 +01:00
Ricardo Garcia
3aaf887e98 Put the downloader in full control of output messages 2010-10-31 11:24:08 +01:00
Ricardo Garcia
9bf386d74b Move the downloader return code to a class member
This makes it possible to initialize it with value zero and later let the
trouble() overwrite the value. It simplifies error treatment and paves the way
for the InfoExtracto objects to call process_info() themselves, which should
solve the issues with tor and some other problems.
2010-10-31 11:24:08 +01:00
Ricardo Garcia
2f4d18a9f7 Use getpreferredencoding() instead of getdefaultlocale()
This fixes issue #7 and is recommended after a bug report I made to the
Python team:

http://bugs.python.org/issue5815
2010-10-31 11:24:08 +01:00
Ricardo Garcia
b0eddb2eb4 Update User-Agent string 2010-10-31 11:24:08 +01:00
Ricardo Garcia
9cee6d9035 Minor adjustments to closely match what a web browser does 2010-10-31 11:24:08 +01:00
Ricardo Garcia
c8619e0163 Move the code to process an InfoExtractor result to its own method 2010-10-31 11:24:08 +01:00
dannycolligan
257453b92b Added cap if user requests ytsearch number over 1000 (with warning) 2010-10-31 11:24:08 +01:00
dannyc@omega
fd9288c315 Changed ytsearchall to retrieve max 1000 results 2010-10-31 11:24:07 +01:00
Ricardo Garcia
1db4ff6054 Restore internal version number indicator 2010-10-31 11:24:07 +01:00
Ricardo Garcia
763826cf2c Establish version number 2010-10-31 11:24:04 +01:00
Ricardo Garcia
af6a92f4c9 Fix issue #5 2010-10-31 11:24:04 +01:00
Ricardo Garcia
f995f7127c Remove some extra whitespace 2010-10-31 11:24:04 +01:00
Ricardo Garcia
e54930cf71 Switch to "INTERNAL" version again 2010-10-31 11:24:04 +01:00
Ricardo Garcia
c6b311c524 Set version number for release 2010-10-31 11:23:58 +01:00
Ricardo Garcia
79e75f66c8 Remove --best-quality option and add proper support for high definition format 2010-10-31 11:23:58 +01:00
Ricardo Garcia
053e77d6ed Remove old ignore patterns which are no longer needed 2010-10-31 11:23:58 +01:00
Ricardo Garcia
d0a9affb46 Replace setter and getter with simple attribute access 2010-10-31 11:23:58 +01:00
Ricardo Garcia
76800042fd Replace version number while in progress 2010-10-31 11:23:58 +01:00
Ricardo Garcia
7ab2043c9c Bump version number 2010-10-31 11:23:52 +01:00
Ricardo Garcia
3e703dd1cd Remove generator and webpage template, moved to wiki 2010-10-31 11:23:52 +01:00
Ricardo Garcia
cc10940385 Fix very wrong code for setting the language
It turned out that, despite the program working without apparent errors,
the code for setting the language was completely wrong. First, it didn't
run unless some form of authentication was performed. Second, I
misstyped _LANG_URL as _LOGIN_URL, so the language was not being set at
all! Amazing it still worked.
2010-10-31 11:23:48 +01:00
Ricardo Garcia
5121ef2071 Fix wrong indentation 2010-10-31 11:23:48 +01:00
5 changed files with 489 additions and 562 deletions

View File

@@ -1,4 +0,0 @@
syntax: glob
index.html
youtube-dl-*
.*.swp

1
LATEST_VERSION Normal file
View File

@@ -0,0 +1 @@
2009.09.13

View File

@@ -1,15 +0,0 @@
#!/usr/bin/env python
import hashlib
import subprocess
template = file('index.html.in', 'r').read()
version = subprocess.Popen(['./youtube-dl', '--version'], stdout=subprocess.PIPE).communicate()[0].strip()
data = file('youtube-dl', 'rb').read()
md5sum = hashlib.md5(data).hexdigest()
sha1sum = hashlib.sha1(data).hexdigest()
sha256sum = hashlib.sha256(data).hexdigest()
template = template.replace('@PROGRAM_VERSION@', version)
template = template.replace('@PROGRAM_MD5SUM@', md5sum)
template = template.replace('@PROGRAM_SHA1SUM@', sha1sum)
template = template.replace('@PROGRAM_SHA256SUM@', sha256sum)
file('index.html', 'w').write(template)

View File

@@ -1,229 +0,0 @@
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
<title>youtube-dl: Download videos from YouTube.com</title>
<style type="text/css"><!--
body {
font-family: sans-serif;
font-size: small;
}
h1 {
text-align: center;
text-decoration: underline;
color: #006699;
}
h2 {
color: #006699;
}
p {
text-align: justify;
margin-left: 5%;
margin-right: 5%;
}
ul {
margin-left: 5%;
margin-right: 5%;
list-style-type: square;
}
li {
margin-bottom: 0.5ex;
}
.smallnote {
font-size: x-small;
text-align: center;
}
--></style>
</head>
<body>
<h1>youtube-dl: Download videos from YouTube.com</h1>
<p class="smallnote">(and more...)</p>
<h2>What is it?</h2>
<p><em>youtube-dl</em> is a small command-line program to download videos
from YouTube.com. It requires the <a href="http://www.python.org/">Python
interpreter</a>, version 2.4 or later, and it's not platform specific.
It should work in your Unix box, in Windows or in Mac OS X. The latest version
is <strong>@PROGRAM_VERSION@</strong>. It's released to the public domain,
which means you can modify it, redistribute it or use it however you like.</p>
<p>I'll try to keep it updated if YouTube.com changes the way you access
their videos. After all, it's a simple and short program. However, I can't
guarantee anything. If you detect it stops working, check for new versions
and/or inform me about the problem, indicating the program version you
are using. If the program stops working and I can't solve the problem but
you have a solution, I'd like to know it. If that happens and you feel you
can maintain the program yourself, tell me. My contact information is
at <a href="http://freshmeat.net/~rg3/">freshmeat.net</a>.</p>
<p>Thanks for all the feedback received so far. I'm glad people find my
program useful.</p>
<h2>Usage instructions</h2>
<p>In Windows, once you have installed the Python interpreter, save the
program with the <em>.py</em> extension and put it somewhere in the PATH.
Try to follow the
<a href="http://rg03.wordpress.com/youtube-dl-under-windows-xp/">guide to
install youtube-dl under Windows XP</a>.</p>
<p>In Unix, download it, give it execution permission and copy it to one
of the PATH directories (typically, <em>/usr/local/bin</em>).</p>
<p>After that, you should be able to call it from the command line as
<em>youtube-dl</em> or <em>youtube-dl.py</em>. I will use <em>youtube-dl</em>
in the following examples. Usage instructions are easy. Use <em>youtube-dl</em>
followed by a video URL or identifier. Example: <em>youtube-dl
"http://www.youtube.com/watch?v=foobar"</em>. The video will be saved
to the file <em>foobar.flv</em> in that example. As YouTube.com
videos are in Flash Video format, their extension should be <em>flv</em>.
In Linux and other unices, video players using a recent version of
<em>ffmpeg</em> can play them. That includes MPlayer, VLC, etc. Those two
work under Windows and other platforms, but you could also get a
specific FLV player of your taste.</p>
<p>If you try to run the program and you receive an error message containing the
keyword <em>SyntaxError</em> near the end, it means your Python interpreter
is too old.</p>
<h2>More usage tips</h2>
<ul>
<li>You can change the file name of the video using the -o option, like in
<em>youtube-dl -o vid.flv "http://www.youtube.com/watch?v=foobar"</em>.
Read the <a href="#otpl">Output template</a> section for more details on
this.</li>
<li>Some videos require an account to be downloaded, mostly because they're
flagged as mature content. You can pass the program a username and password
for a YouTube.com account with the -u and -p options, like <em>youtube-dl
-u myusername -p mypassword "http://www.youtube.com/watch?v=foobar"</em>.</li>
<li>The account data can also be read from the user .netrc file by indicating
the -n or --netrc option. The machine name is <em>youtube</em> in that
case.</li>
<li>The <em>simulate mode</em> (activated with -s or --simulate) can be used
to just get the real video URL and use it with a download manager if you
prefer that option.</li>
<li>The <em>quiet mode</em> (activated with -q or --quiet) can be used to
supress all output messages. This allows, in systems featuring /dev/stdout
and other similar special files, outputting the video data to standard output
in order to pipe it to another program without interferences.</li>
<li>The program can be told to simply print the final video URL to standard
output using the -g or --get-url option.</li>
<li>In a similar line, the -e or --get-title option tells the program to print
the video title.</li>
<li>The default filename is <em>video_id.flv</em>. But you can also use the
video title in the filename with the -t or --title option, or preserve the
literal title in the filename with the -l or --literal option.</li>
<li>You can make the program append <em>&amp;fmt=something</em> to the URL
by using the -f or --format option. This makes it possible to download high
quality versions of the videos when available.</li>
<li>The -b or --best-quality option is an alias for -f 18.</li>
<li>The -m or --mobile-version option is an alias for -f 17.</li>
<li>Normally, the program will stop on the first error, but you can tell it
to attempt to download every video with the -i or --ignore-errors option.</li>
<li>The -a or --batch-file option lets you specify a file to read URLs from.
The file must contain one URL per line.</li>
<li>The program can be told not to overwrite existing files using the -w or
--no-overwrites option.</li>
<li>For YouTube, you can also use the URL of a playlist, and it will download
all the videos in that playlist.</li>
<li>For YouTube, you can also use the special word <em>ytsearch</em> to
download search results. With <em>ytsearch</em> it will download the
first search result. With <em>ytsearchN</em>, where N is a number, it
will download the first N results. With <em>ytsearchall</em> it will
download every result for that search. In most systems you'll need to
use quotes for multiple words. Example: <em>youtube-dl "ytsearch3:cute
kittens"</em>.
<li><em>youtube-dl</em> honors the <em>http_proxy</em> environment variable
if you want to use a proxy. Set it to something like
<em>http://proxy.example.com:8080</em>, and do not leave the <em>http://</em>
prefix out.</li>
<li>You can get the program version by calling it as <em>youtube-dl
-v</em> or <em>youtube-dl --version</em>.</li>
<li>For usage instructions, use <em>youtube-dl -h</em> or <em>youtube-dl
--help.</em></li>
<li>You can cancel the program at any time pressing Ctrl+C. It may print
some error lines saying something about <em>KeyboardInterrupt</em>.
That's ok.</li>
</ul>
<h2>Download it</h2>
<p>Note that if you directly click on these hyperlinks, your web browser will
most likely display the program contents. It's usually better to
right-click on it and choose the appropriate option, normally called <em>Save
Target As</em> or <em>Save Link As</em>, depending on the web browser you
are using.</p>
<p><a href="youtube-dl">@PROGRAM_VERSION@</a></p>
<ul>
<li><strong>MD5</strong>: @PROGRAM_MD5SUM@</li>
<li><strong>SHA1</strong>: @PROGRAM_SHA1SUM@</li>
<li><strong>SHA256</strong>: @PROGRAM_SHA256SUM@</li>
</ul>
<h2 id="otpl">Output template</h2>
<p>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 <em>youtube-dl -o funny_video.flv 'http://some/video'</em>.
However, it may contain special sequences that will be replaced when
downloading each video. The special sequences have the format
<strong>%(NAME)s</strong>. To clarify, that's a percent symbol followed by a
name in parenthesis, followed by a lowercase S. Allowed names are:</p>
<ul>
<li><em>id</em>: The sequence will be replaced by the video identifier.</li>
<li><em>url</em>: The sequence will be replaced by the video URL.</li>
<li><em>uploader</em>: The sequence will be replaced by the nickname of the
person who uploaded the video.</li>
<li><em>title</em>: The sequence will be replaced by the literal video
title.</li>
<li><em>stitle</em>: The sequence will be replaced by a simplified video
title, restricted to alphanumeric characters and dashes.</li>
<li><em>ext</em>: The sequence will be replaced by the appropriate
extension (like <em>flv</em> or <em>mp4</em>).</li>
</ul>
<p>As you may have guessed, the default template is <em>%(id)s.%(ext)s</em>.
When some command line options are used, it's replaced by other templates like
<em>%(title)s-%(id)s.%(ext)s</em>. You can specify your own.</p>
<h2>Authors</h2>
<ul>
<li>Ricardo Garcia Gonzalez: program core, YouTube.com InfoExtractor,
metacafe.com InfoExtractor and YouTube playlist InfoExtractor.</li>
<li>Danny Colligan: YouTube search InfoExtractor, ideas and patches.</li>
<li>Many other people contributing patches, code, ideas and kind messages. Too
many to be listed here. You know who you are. Thank you very much.</li>
</ul>
<p class="smallnote">Copyright &copy; 2006-2007 Ricardo Garcia Gonzalez</p>
</body>
</html>

File diff suppressed because it is too large Load Diff