From: Filippo Valsorda Date: Sat, 8 Dec 2012 00:57:43 +0000 (+0100) Subject: Merge 'rg3/master' into fork_master X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=commitdiff_plain;h=3c6ffbaedbbae8734f6b86fea1169413b656abf3;hp=-c;p=youtube-dl.git Merge 'rg3/master' into fork_master --- 3c6ffbaedbbae8734f6b86fea1169413b656abf3 diff --combined README.md index b218fc3ec,5789ce2e4..2ca021125 --- a/README.md +++ b/README.md @@@ -51,7 -51,7 +51,10 @@@ which means you can modify it, redistri %(upload_date)s for the upload date (YYYYMMDD), %(extractor)s for the provider (youtube, metacafe, etc), %(id)s for the video id and %% for a literal -- percent. Use - to output to stdout. ++ percent. Use - to output to stdout. Can also be ++ used to download to a different directory, for ++ example with -o '/my/downloads/%(uploader)s/%(title ++ )s-%(id)s.%(ext)s' . --restrict-filenames Restrict filenames to only ASCII characters, and avoid "&" and spaces in filenames -a, --batch-file FILE file containing URLs to download ('-' for stdin) @@@ -194,3 -194,5 +197,5 @@@ Please include * The output of `youtube-dl --version` * The output of `python --version` * The name and version of your Operating System ("Ubuntu 11.04 x64" or "Windows 7 x64" is usually enough). + + For discussions, join us in the irc channel #youtube-dl on freenode. diff --combined youtube_dl/__init__.py index f953f1fb9,71c7d29e0..8e46dfea9 --- a/youtube_dl/__init__.py +++ b/youtube_dl/__init__.py @@@ -23,6 -23,12 +23,6 @@@ __authors__ = ) __license__ = 'Public Domain' -__version__ = '2012.11.29' - -UPDATE_URL = 'https://raw.github.com/rg3/youtube-dl/master/youtube-dl' -UPDATE_URL_VERSION = 'https://raw.github.com/rg3/youtube-dl/master/LATEST_VERSION' -UPDATE_URL_EXE = 'https://raw.github.com/rg3/youtube-dl/master/youtube-dl.exe' - import getpass import optparse @@@ -35,46 -41,34 +35,46 @@@ import sy import warnings from .utils import * +from .version import __version__ from .FileDownloader import * from .InfoExtractors import * from .PostProcessor import * def updateSelf(downloader, filename): - ''' Update the program file with the latest version from the repository ''' - # Note: downloader only used for options + """Update the program file with the latest version from the repository""" - if not os.access(filename, os.W_OK): - sys.exit('ERROR: no write permissions on %s' % filename) + # TODO: at least, check https certificates - downloader.to_screen(u'Updating to latest version...') + from zipimport import zipimporter - urlv = compat_urllib_request.urlopen(UPDATE_URL_VERSION) - newversion = urlv.read().strip() - if newversion == __version__: - downloader.to_screen(u'youtube-dl is up-to-date (' + __version__ + ')') - return - urlv.close() + API_URL = "https://api.github.com/repos/rg3/youtube-dl/downloads" + BIN_URL = "https://github.com/downloads/rg3/youtube-dl/youtube-dl" + EXE_URL = "https://github.com/downloads/rg3/youtube-dl/youtube-dl.exe" + + if hasattr(sys, "frozen"): # PY2EXE + if not os.access(filename, os.W_OK): + sys.exit('ERROR: no write permissions on %s' % filename) + + downloader.to_screen(u'Updating to latest version...') + + urla = compat_urllib_request.urlopen(API_URL) + download = filter(lambda x: x["name"] == "youtube-dl.exe", json.loads(urla.read())) + if not download: + downloader.to_screen(u'ERROR: can\'t find the current version. Please try again later.') + return + newversion = download[0]["description"].strip() + if newversion == __version__: + downloader.to_screen(u'youtube-dl is up-to-date (' + __version__ + ')') + return + urla.close() - if hasattr(sys, "frozen"): #py2exe exe = os.path.abspath(filename) directory = os.path.dirname(exe) if not os.access(directory, os.W_OK): sys.exit('ERROR: no write permissions on %s' % directory) try: - urlh = compat_urllib_request.urlopen(UPDATE_URL_EXE) + urlh = compat_urllib_request.urlopen(EXE_URL) newcontent = urlh.read() urlh.close() with open(exe + '.new', 'wb') as outf: @@@ -97,25 -91,9 +97,25 @@@ del "%s except (IOError, OSError) as err: sys.exit('ERROR: unable to overwrite current version') - else: + elif isinstance(globals().get('__loader__'), zipimporter): # UNIX ZIP + if not os.access(filename, os.W_OK): + sys.exit('ERROR: no write permissions on %s' % filename) + + downloader.to_screen(u'Updating to latest version...') + + urla = compat_urllib_request.urlopen(API_URL) + download = [x for x in json.loads(urla.read().decode('utf8')) if x["name"] == "youtube-dl"] + if not download: + downloader.to_screen(u'ERROR: can\'t find the current version. Please try again later.') + return + newversion = download[0]["description"].strip() + if newversion == __version__: + downloader.to_screen(u'youtube-dl is up-to-date (' + __version__ + ')') + return + urla.close() + try: - urlh = compat_urllib_request.urlopen(UPDATE_URL) + urlh = compat_urllib_request.urlopen(BIN_URL) newcontent = urlh.read() urlh.close() except (IOError, OSError) as err: @@@ -127,10 -105,6 +127,10 @@@ except (IOError, OSError) as err: sys.exit('ERROR: unable to overwrite current version') + else: + downloader.to_screen(u'It looks like you installed youtube-dl with pip or setup.py. Please use that to update.') + return + downloader.to_screen(u'Updated youtube-dl. Restart youtube-dl to use the new version.') def parseOpts(): @@@ -305,7 -279,7 +305,7 @@@ action='store_true', dest='autonumber', help='number downloaded files starting from 00000', default=False) filesystem.add_option('-o', '--output', - dest='outtmpl', metavar='TEMPLATE', help='output filename template. Use %(title)s to get the title, %(uploader)s for the uploader name, %(autonumber)s to get an automatically incremented number, %(ext)s for the filename extension, %(upload_date)s for the upload date (YYYYMMDD), %(extractor)s for the provider (youtube, metacafe, etc), %(id)s for the video id and %% for a literal percent. Use - to output to stdout.') + dest='outtmpl', metavar='TEMPLATE', help='output filename template. Use %(title)s to get the title, %(uploader)s for the uploader name, %(autonumber)s to get an automatically incremented number, %(ext)s for the filename extension, %(upload_date)s for the upload date (YYYYMMDD), %(extractor)s for the provider (youtube, metacafe, etc), %(id)s for the video id and %% for a literal percent. Use - to output to stdout. Can also be used to download to a different directory, for example with -o \'/my/downloads/%(uploader)s/%(title)s-%(id)s.%(ext)s\' .') filesystem.add_option('--restrict-filenames', action='store_true', dest='restrictfilenames', help='Restrict filenames to only ASCII characters, and avoid "&" and spaces in filenames', default=False)