GustavoBarbieriDownloader

This download a list of URLs to current directory

It doesn't override files, use .X version instead.

#!python
#!/usr/bin/python2.4

import sys

def usage():
    print >> sys.stderr, "Usage:\n\n\t%s <url1> <url2> ... <urlN>\n\n" % \
          sys.argv[ 0 ]
# usage()

if len( sys.argv ) < 2:
    usage()
    raise SystemExit


import os
import urlparse
def get_file_name( url ):
    try:
        fname = os.path.basename( urlparse.urlparse( url )[ 2 ] )
    except:
        fname = "unknow-download-name"

    i = 1
    name = fname
    while os.path.exists( name ):
        name = "%s.%d" % ( fname, i )
        i += 1
    return name
# get_file_name()


import urllib
for url in sys.argv[ 1 : ]:
    try:
        fname = get_file_name( url )
        print >> sys.stderr, "Downloading:", url, "->", fname

        remote = urllib.urlopen( url )

        i = remote.info()
        clength = int( i[ "Content-Length" ] )
        try:
            ctype = i[ "Content-Type" ]
        except:
            ctype = "Unknow-Type"
        print >> sys.stderr, "\t", ctype, "is", clength, "bytes long."

        local = open( fname, "wb" )
        last  = 0
        size  = 0
        for b in remote:
            size += len( b )
            pos = int( size * 79 / clength )
            if pos > last:
                last = pos
                sys.stderr.write( "#" )

            local.write( b )
        # for b in remote

        sys.stderr.write( "\n" )

        remote.close()
        local.close()

    except Exception, e:
        print >> sys.stderr, "Unknow error: ", e