aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build_exe.py24
-rwxr-xr-xyoutube-dlbin41021 -> 40912 bytes
-rw-r--r--youtube-dl.exebin0 -> 5488249 bytes
-rw-r--r--youtube_dl/__init__.py63
4 files changed, 66 insertions, 21 deletions
diff --git a/build_exe.py b/build_exe.py
index 4cf064e83..338c10f66 100644
--- a/build_exe.py
+++ b/build_exe.py
@@ -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
diff --git a/youtube-dl b/youtube-dl
index d088bd953..7e4640c66 100755
--- a/youtube-dl
+++ b/youtube-dl
Binary files differ
diff --git a/youtube-dl.exe b/youtube-dl.exe
new file mode 100644
index 000000000..29e221993
--- /dev/null
+++ b/youtube-dl.exe
Binary files differ
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.')