corrected -U to support new zipfile and exe (#153) formats

This commit is contained in:
Filippo Valsorda 2012-03-31 01:19:30 +02:00
parent 303692b5ed
commit 53e893615d
4 changed files with 66 additions and 21 deletions

View File

@ -1,11 +1,12 @@
from distutils.core import setup
import py2exe
import sys
import sys, os
# If run without args, build executables
if len(sys.argv) == 1:
sys.argv.append("py2exe")
os.chdir(os.path.dirname(sys.argv[0]))
sys.path.append('./youtube_dl')
options = {
@ -21,10 +22,23 @@ console = [{
"dest_base": "youtube-dl",
}]
setup(
console = console,
options = {"py2exe": options},
zipfile = None,
init_file = open('./youtube_dl/__init__.py')
for line in init_file.readlines():
if line.startswith('__version__'):
version = line[11:].strip(" ='\n")
break
else:
version = ''
setup(name='youtube-dl',
version=version,
description='Small command-line program to download videos from YouTube.com and other video sites',
url='https://github.com/rg3/youtube-dl',
packages=['youtube_dl'],
console = console,
options = {"py2exe": options},
zipfile = None,
)
import shutil

Binary file not shown.

BIN
youtube-dl.exe Normal file

Binary file not shown.

View File

@ -22,6 +22,8 @@ __license__ = 'Public Domain'
__version__ = '2012.02.27'
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 cookielib
@ -44,33 +46,62 @@ from PostProcessing import *
def updateSelf(downloader, filename):
''' Update the program file with the latest version from the repository '''
# Note: downloader only used for options
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...')
try:
urlv = urllib2.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()
if hasattr(sys, "frozen"): #py2exe
directory = os.path.dirname(filename)
exe = os.path.abspath(filename)
if not os.access(directory, os.W_OK):
sys.exit('ERROR: no write permissions on %s' % directory)
try:
urllib.urlretrieve(UPDATE_URL_EXE, exe + '.new')
except (IOError, OSError), err:
sys.exit('ERROR: unable to download latest version')
try:
bat = os.path.join(directory, 'youtube-dl-updater.bat')
b = open(bat, 'w')
print >> b, """
timeout /t 5 /nobreak
move /Y "%s.new" "%s"
del "%s"
""" %(exe, exe, bat)
b.close()
os.startfile(bat)
except (IOError, OSError), err:
sys.exit('ERROR: unable to overwrite current version')
else:
try:
urlh = urllib2.urlopen(UPDATE_URL)
newcontent = urlh.read()
vmatch = re.search("__version__ = '([^']+)'", newcontent)
if vmatch is not None and vmatch.group(1) == __version__:
downloader.to_screen(u'youtube-dl is up-to-date (' + __version__ + ')')
return
finally:
urlh.close()
except (IOError, OSError), err:
sys.exit('ERROR: unable to download latest version')
except (IOError, OSError), err:
sys.exit('ERROR: unable to download latest version')
try:
outf = open(filename, 'wb')
try:
outf.write(newcontent)
finally:
outf.close()
except (IOError, OSError), err:
sys.exit('ERROR: unable to overwrite current version')
outf = open(filename, 'wb')
try:
outf.write(newcontent)
finally:
outf.close()
except (IOError, OSError), err:
sys.exit('ERROR: unable to overwrite current version')
downloader.to_screen(u'Updated youtube-dl. Restart youtube-dl to use the new version.')