diff options
| author | Filippo Valsorda <filippo.valsorda@gmail.com> | 2012-03-31 01:19:30 +0200 | 
|---|---|---|
| committer | Filippo Valsorda <filippo.valsorda@gmail.com> | 2012-03-31 01:19:30 +0200 | 
| commit | 53e893615d6e2fd01836c3cba444dffaa0db57c5 (patch) | |
| tree | 7c846686966666f4392c10fe067dde6057fca580 | |
| parent | 303692b5eda95a7071c449d12d61ea28f8eac907 (diff) | |
corrected -U to support new zipfile and exe (#153) formats
| -rw-r--r-- | build_exe.py | 24 | ||||
| -rwxr-xr-x | youtube-dl | bin | 41021 -> 40912 bytes | |||
| -rw-r--r-- | youtube-dl.exe | bin | 0 -> 5488249 bytes | |||
| -rw-r--r-- | youtube_dl/__init__.py | 63 | 
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-dlBinary files differ index d088bd953..7e4640c66 100755 --- a/youtube-dl +++ b/youtube-dl diff --git a/youtube-dl.exe b/youtube-dl.exeBinary files differ new file mode 100644 index 000000000..29e221993 --- /dev/null +++ b/youtube-dl.exe 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.') | 
