Merge 'rg3/master' into fork_master
authorFilippo Valsorda <filippo.valsorda@gmail.com>
Sat, 8 Dec 2012 00:57:43 +0000 (01:57 +0100)
committerFilippo Valsorda <filippo.valsorda@gmail.com>
Sat, 8 Dec 2012 00:57:43 +0000 (01:57 +0100)
1  2 
README.md
youtube_dl/__init__.py

diff --combined README.md
index b218fc3eca20217871ca7d202b044278a4f7c385,5789ce2e44b187aa321b09171c5fbd8630eb29f9..2ca021125902f04a6306acec5e2fd5ac922bfa52
+++ 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 f953f1fb9cdbac7fc727bfb2d77a90792f062dd8,71c7d29e076f1b16e19129df69cd487821324b51..8e46dfea946d04046bbf943899f6d41a7c5e1c54
@@@ -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:
          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():
              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)