Compare commits

...

11 Commits

Author SHA1 Message Date
Philipp Hagemeister
9c228928b6 release 2012.02.27 2012-02-27 20:19:28 +01:00
Philipp Hagemeister
ff3a2b8eab Always determine youtube description 2012-02-27 20:19:03 +01:00
Philipp Hagemeister
c4105fa035 release 2012.02.26 2012-02-27 00:42:26 +01:00
Philipp Hagemeister
871dbd3c92 Output RTMP command line if verbose is set 2012-02-27 00:41:53 +01:00
Philipp Hagemeister
c9ed14e6d6 Move imports to top (Closes #283) 2012-02-26 23:53:56 +01:00
Philipp Hagemeister
1ad85e5061 Set default continue behavior to true, no breakage observed in the wild 2012-02-26 23:44:32 +01:00
Philipp Hagemeister
09fbc6c952 verbose flag, and output proxies if it is set 2012-02-26 23:33:19 +01:00
Philipp Hagemeister
895ec266bb Merge pull request #292 from rbrito/fixes/vimeo-ie
VimeoIE: Allow matches taken from embedded videos.
2012-02-26 14:25:12 -08:00
Rogério Brito
d85448f3bb VimeoIE: Allow matches taken from embedded videos.
With this change, I can directly cut and paste URLs embedded in 3rd-party
pages as `youtube-dl`'s arguments.

Signed-off-by: Rogério Brito <rbrito@ime.usp.br>
2012-02-24 07:12:21 -02:00
Philipp Hagemeister
99d46e8c27 Merge pull request #275 from grawity/winnt-unicode
Support Unicode in file names on Windows NT
2012-01-16 03:23:22 -08:00
Mantas Mikulėnas
4afdff39d7 Support Unicode in file names on Windows NT 2012-01-16 12:08:01 +02:00
4 changed files with 71 additions and 30 deletions

View File

@@ -1 +1 @@
2012.01.08b
2012.02.27

View File

@@ -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

View File

@@ -18,12 +18,14 @@ __authors__ = (
)
__license__ = 'Public Domain'
__version__ = '2012.01.08b'
__version__ = '2012.02.27'
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.get('verbose', False):
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)
@@ -1362,10 +1381,9 @@ class YoutubeIE(InfoExtractor):
lxml.etree
except NameError:
video_description = u'No description available.'
if self._downloader.params.get('forcedescription', False) or self._downloader.params.get('writedescription', False):
mobj = re.search(r'<meta name="description" content="(.*)"(?:\s*/)?>', video_webpage)
if mobj is not None:
video_description = mobj.group(1).decode('utf-8')
mobj = re.search(r'<meta name="description" content="(.*?)">', video_webpage)
if mobj is not None:
video_description = mobj.group(1).decode('utf-8')
else:
html_parser = lxml.etree.HTMLParser(encoding='utf-8')
vwebpage_doc = lxml.etree.parse(StringIO.StringIO(video_webpage), html_parser)
@@ -4198,11 +4216,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 +4357,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 +4375,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 +4495,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 +4596,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)

View File

@@ -18,12 +18,14 @@ __authors__ = (
)
__license__ = 'Public Domain'
__version__ = '2012.01.08b'
__version__ = '2012.02.27'
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.get('verbose', False):
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)
@@ -1362,10 +1381,9 @@ class YoutubeIE(InfoExtractor):
lxml.etree
except NameError:
video_description = u'No description available.'
if self._downloader.params.get('forcedescription', False) or self._downloader.params.get('writedescription', False):
mobj = re.search(r'<meta name="description" content="(.*)"(?:\s*/)?>', video_webpage)
if mobj is not None:
video_description = mobj.group(1).decode('utf-8')
mobj = re.search(r'<meta name="description" content="(.*?)">', video_webpage)
if mobj is not None:
video_description = mobj.group(1).decode('utf-8')
else:
html_parser = lxml.etree.HTMLParser(encoding='utf-8')
vwebpage_doc = lxml.etree.parse(StringIO.StringIO(video_webpage), html_parser)
@@ -4198,11 +4216,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 +4357,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 +4375,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 +4495,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 +4596,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)