youtube-dl

Another place where youtube-dl lives on
git clone git://git.oshgnacknak.de/youtube-dl.git
Log | Files | Refs | README | LICENSE

commit c4105fa035a5c7c4d9aebc4a27822b1839961b7f
parent 871dbd3c920b414147e0c396354ca40a148de62c
Author: Philipp Hagemeister <phihag@phihag.de>
Date:   Mon, 27 Feb 2012 00:42:26 +0100

release 2012.02.26

Diffstat:
MLATEST_VERSION | 2+-
MREADME.md | 3++-
Myoutube-dl | 43++++++++++++++++++++++++++++++++-----------
Myoutube_dl/__init__.py | 2+-
4 files changed, 36 insertions(+), 14 deletions(-)

diff --git a/LATEST_VERSION b/LATEST_VERSION @@ -1 +1 @@ -2012.01.08b +2012.02.26 diff --git a/README.md b/README.md @@ -12,7 +12,7 @@ which means you can modify it, redistribute it or use it however you like. ## OPTIONS -h, --help print this help text and exit - -v, --version print program version and exit + --version print program version and exit -U, --update update this program to latest version -i, --ignore-errors continue on download errors -r, --rate-limit LIMIT download rate limit (e.g. 50k or 44.6m) @@ -66,6 +66,7 @@ which means you can modify it, redistribute it or use it however you like. --get-format simulate, quiet but print output format --no-progress do not print progress bar --console-title display progress in console titlebar + -v, --verbose print various debugging information ### Video Format Options: -f, --format FORMAT video format code diff --git a/youtube-dl b/youtube-dl @@ -18,12 +18,14 @@ __authors__ = ( ) __license__ = 'Public Domain' -__version__ = '2012.01.08b' +__version__ = '2012.02.26' UPDATE_URL = 'https://raw.github.com/rg3/youtube-dl/master/youtube-dl' + import cookielib import datetime +import getpass import gzip import htmlentitydefs import HTMLParser @@ -31,9 +33,11 @@ import httplib import locale import math import netrc +import optparse import os import os.path import re +import shlex import socket import string import subprocess @@ -305,7 +309,14 @@ def _encodeFilename(s): """ assert type(s) == type(u'') - return s.encode(sys.getfilesystemencoding(), 'ignore') + + if sys.platform == 'win32' and sys.getwindowsversion().major >= 5: + # Pass u'' directly to use Unicode APIs on Windows 2000 and up + # (Detecting Windows NT 4 is tricky because 'major >= 4' would + # match Windows 9x series as well. Besides, NT 4 is obsolete.) + return s + else: + return s.encode(sys.getfilesystemencoding(), 'ignore') class DownloadError(Exception): """Download Error exception. @@ -889,7 +900,15 @@ class FileDownloader(object): # the connection was interrumpted and resuming appears to be # possible. This is part of rtmpdump's normal usage, AFAIK. basic_args = ['rtmpdump', '-q'] + [[], ['-W', player_url]][player_url is not None] + ['-r', url, '-o', tmpfilename] - retval = subprocess.call(basic_args + [[], ['-e', '-k', '1']][self.params.get('continuedl', False)]) + args = basic_args + [[], ['-e', '-k', '1']][self.params.get('continuedl', False)] + if self.params['verbose']: + try: + import pipes + shell_quote = lambda args: ' '.join(map(pipes.quote, args)) + except ImportError: + shell_quote = repr + self.to_screen(u'[debug] rtmpdump command line: ' + shell_quote(args)) + retval = subprocess.call(args) while retval == 2 or retval == 1: prevsize = os.path.getsize(_encodeFilename(tmpfilename)) self.to_screen(u'\r[rtmpdump] %s bytes' % prevsize, skip_eol=True) @@ -2014,7 +2033,7 @@ class VimeoIE(InfoExtractor): """Information extractor for vimeo.com.""" # _VALID_URL matches Vimeo URLs - _VALID_URL = r'(?:https?://)?(?:(?:www|player).)?vimeo\.com/(?:groups/[^/]+/)?(?:videos?/)?(?:moogaloop.swf\?clip_id=)?([0-9]+)' + _VALID_URL = r'(?:https?://)?(?:(?:www|player).)?vimeo\.com/(?:groups/[^/]+/)?(?:videos?/)?([0-9]+)' IE_NAME = u'vimeo' def __init__(self, downloader=None): @@ -4198,11 +4217,6 @@ def updateSelf(downloader, filename): downloader.to_screen(u'Updated youtube-dl. Restart youtube-dl to use the new version.') def parseOpts(): - # Deferred imports - import getpass - import optparse - import shlex - def _readOptions(filename_bytes): try: optionf = open(filename_bytes) @@ -4344,6 +4358,8 @@ def parseOpts(): verbosity.add_option('--console-title', action='store_true', dest='consoletitle', help='display progress in console titlebar', default=False) + verbosity.add_option('-v', '--verbose', + action='store_true', dest='verbose', help='print various debugging information', default=False) filesystem.add_option('-t', '--title', @@ -4360,7 +4376,7 @@ def parseOpts(): filesystem.add_option('-w', '--no-overwrites', action='store_true', dest='nooverwrites', help='do not overwrite files', default=False) filesystem.add_option('-c', '--continue', - action='store_true', dest='continue_dl', help='resume partially downloaded files', default=False) + action='store_true', dest='continue_dl', help='resume partially downloaded files', default=True) filesystem.add_option('--no-continue', action='store_false', dest='continue_dl', help='do not resume partially downloaded files (restart from beginning)') @@ -4480,10 +4496,14 @@ def _real_main(): # General configuration cookie_processor = urllib2.HTTPCookieProcessor(jar) - opener = urllib2.build_opener(urllib2.ProxyHandler(), cookie_processor, YoutubeDLHandler()) + proxy_handler = urllib2.ProxyHandler() + opener = urllib2.build_opener(proxy_handler, cookie_processor, YoutubeDLHandler()) urllib2.install_opener(opener) socket.setdefaulttimeout(300) # 5 minutes should be enough (famous last words) + if opts.verbose: + print(u'[debug] Proxy map: ' + str(proxy_handler.proxies)) + extractors = gen_extractors() if opts.list_extractors: @@ -4577,6 +4597,7 @@ def _real_main(): 'rejecttitle': opts.rejecttitle, 'max_downloads': opts.max_downloads, 'prefer_free_formats': opts.prefer_free_formats, + 'verbose': opts.verbose, }) for extractor in extractors: fd.add_info_extractor(extractor) diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py @@ -18,7 +18,7 @@ __authors__ = ( ) __license__ = 'Public Domain' -__version__ = '2012.01.25' +__version__ = '2012.02.26' UPDATE_URL = 'https://raw.github.com/rg3/youtube-dl/master/youtube-dl'