aboutsummaryrefslogtreecommitdiff
path: root/youtube_dl/__init__.py
diff options
context:
space:
mode:
authorFilippo Valsorda <filippo.valsorda@gmail.com>2012-03-31 01:19:30 +0200
committerFilippo Valsorda <filippo.valsorda@gmail.com>2012-03-31 01:19:30 +0200
commit53e893615d6e2fd01836c3cba444dffaa0db57c5 (patch)
tree7c846686966666f4392c10fe067dde6057fca580 /youtube_dl/__init__.py
parent303692b5eda95a7071c449d12d61ea28f8eac907 (diff)
corrected -U to support new zipfile and exe (#153) formats
Diffstat (limited to 'youtube_dl/__init__.py')
-rw-r--r--youtube_dl/__init__.py63
1 files changed, 47 insertions, 16 deletions
diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py
index 6d2b0ce85..6e6946fda 100644
--- a/youtube_dl/__init__.py
+++ b/youtube_dl/__init__.py
@@ -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.')