release 2012.02.26

This commit is contained in:
Philipp Hagemeister 2012-02-27 00:42:26 +01:00
parent 871dbd3c92
commit c4105fa035
4 changed files with 36 additions and 14 deletions

View file

@ -1 +1 @@
2012.01.08b 2012.02.26

View file

@ -12,7 +12,7 @@ which means you can modify it, redistribute it or use it however you like.
## OPTIONS ## OPTIONS
-h, --help print this help text and exit -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 -U, --update update this program to latest version
-i, --ignore-errors continue on download errors -i, --ignore-errors continue on download errors
-r, --rate-limit LIMIT download rate limit (e.g. 50k or 44.6m) -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 --get-format simulate, quiet but print output format
--no-progress do not print progress bar --no-progress do not print progress bar
--console-title display progress in console titlebar --console-title display progress in console titlebar
-v, --verbose print various debugging information
### Video Format Options: ### Video Format Options:
-f, --format FORMAT video format code -f, --format FORMAT video format code

View file

@ -18,12 +18,14 @@ __authors__ = (
) )
__license__ = 'Public Domain' __license__ = 'Public Domain'
__version__ = '2012.01.08b' __version__ = '2012.02.26'
UPDATE_URL = 'https://raw.github.com/rg3/youtube-dl/master/youtube-dl' UPDATE_URL = 'https://raw.github.com/rg3/youtube-dl/master/youtube-dl'
import cookielib import cookielib
import datetime import datetime
import getpass
import gzip import gzip
import htmlentitydefs import htmlentitydefs
import HTMLParser import HTMLParser
@ -31,9 +33,11 @@ import httplib
import locale import locale
import math import math
import netrc import netrc
import optparse
import os import os
import os.path import os.path
import re import re
import shlex
import socket import socket
import string import string
import subprocess import subprocess
@ -305,7 +309,14 @@ def _encodeFilename(s):
""" """
assert type(s) == type(u'') 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): class DownloadError(Exception):
"""Download Error exception. """Download Error exception.
@ -889,7 +900,15 @@ class FileDownloader(object):
# the connection was interrumpted and resuming appears to be # the connection was interrumpted and resuming appears to be
# possible. This is part of rtmpdump's normal usage, AFAIK. # 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] 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: while retval == 2 or retval == 1:
prevsize = os.path.getsize(_encodeFilename(tmpfilename)) prevsize = os.path.getsize(_encodeFilename(tmpfilename))
self.to_screen(u'\r[rtmpdump] %s bytes' % prevsize, skip_eol=True) self.to_screen(u'\r[rtmpdump] %s bytes' % prevsize, skip_eol=True)
@ -2014,7 +2033,7 @@ class VimeoIE(InfoExtractor):
"""Information extractor for vimeo.com.""" """Information extractor for vimeo.com."""
# _VALID_URL matches Vimeo URLs # _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' IE_NAME = u'vimeo'
def __init__(self, downloader=None): 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.') downloader.to_screen(u'Updated youtube-dl. Restart youtube-dl to use the new version.')
def parseOpts(): def parseOpts():
# Deferred imports
import getpass
import optparse
import shlex
def _readOptions(filename_bytes): def _readOptions(filename_bytes):
try: try:
optionf = open(filename_bytes) optionf = open(filename_bytes)
@ -4344,6 +4358,8 @@ def parseOpts():
verbosity.add_option('--console-title', verbosity.add_option('--console-title',
action='store_true', dest='consoletitle', action='store_true', dest='consoletitle',
help='display progress in console titlebar', default=False) 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', filesystem.add_option('-t', '--title',
@ -4360,7 +4376,7 @@ def parseOpts():
filesystem.add_option('-w', '--no-overwrites', filesystem.add_option('-w', '--no-overwrites',
action='store_true', dest='nooverwrites', help='do not overwrite files', default=False) action='store_true', dest='nooverwrites', help='do not overwrite files', default=False)
filesystem.add_option('-c', '--continue', 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', filesystem.add_option('--no-continue',
action='store_false', dest='continue_dl', action='store_false', dest='continue_dl',
help='do not resume partially downloaded files (restart from beginning)') help='do not resume partially downloaded files (restart from beginning)')
@ -4480,10 +4496,14 @@ def _real_main():
# General configuration # General configuration
cookie_processor = urllib2.HTTPCookieProcessor(jar) 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) urllib2.install_opener(opener)
socket.setdefaulttimeout(300) # 5 minutes should be enough (famous last words) 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() extractors = gen_extractors()
if opts.list_extractors: if opts.list_extractors:
@ -4577,6 +4597,7 @@ def _real_main():
'rejecttitle': opts.rejecttitle, 'rejecttitle': opts.rejecttitle,
'max_downloads': opts.max_downloads, 'max_downloads': opts.max_downloads,
'prefer_free_formats': opts.prefer_free_formats, 'prefer_free_formats': opts.prefer_free_formats,
'verbose': opts.verbose,
}) })
for extractor in extractors: for extractor in extractors:
fd.add_info_extractor(extractor) fd.add_info_extractor(extractor)

View file

@ -18,7 +18,7 @@ __authors__ = (
) )
__license__ = 'Public Domain' __license__ = 'Public Domain'
__version__ = '2012.01.25' __version__ = '2012.02.26'
UPDATE_URL = 'https://raw.github.com/rg3/youtube-dl/master/youtube-dl' UPDATE_URL = 'https://raw.github.com/rg3/youtube-dl/master/youtube-dl'