From: Antonio Ospite Date: Sat, 31 Mar 2012 11:09:17 +0000 (+0200) Subject: winfreed.py: factor out a generic download_file() function X-Git-Url: https://git.ao2.it/winfreed.git/commitdiff_plain/a038a000a90d424d600b62966c9f89fb08ebe495 winfreed.py: factor out a generic download_file() function --- diff --git a/winfreed.py b/winfreed.py index 4b4f6bb..99eabb7 100755 --- a/winfreed.py +++ b/winfreed.py @@ -63,15 +63,8 @@ def show(pkg): print -def download(pkg): - # the "%s" in URLs are meant to be replaced with LANGCODE - try: - pkg_url = pkg['URL'] % LANGCODE - except: - pkg_url = pkg['URL'] - pass - - response = urllib2.urlopen(pkg_url) +def download_file(url, dest_dir): + response = urllib2.urlopen(url) url = response.geturl() filename = "" @@ -92,11 +85,11 @@ def download(pkg): # TODO: Add some integrity verification of downloaded files (md5, sha256?) - destfile = os.path.join(OUTPUT_DIR, filename) + destfile = os.path.join(dest_dir, filename) if os.path.exists(destfile): # TODO: check if the file is a full download from previous run, # if not download again discarding the existing file? - sys.stderr.write("Warning (%s): %s exists!\n" % (pkg['package_name'], destfile)) + sys.stderr.write("Warning: %s exists!\n" % destfile) return outfile = open(destfile, mode='w') @@ -104,7 +97,8 @@ def download(pkg): total_size = response.info().getheader('Content-Length').strip() total_size = int(total_size) - widgets = [pkg['name'], ' ', Percentage(), ' ', Bar(marker='=', left='[', right=']'), + #widgets = [pkg['name'], ' ', Percentage(), ' ', Bar(marker='=', left='[', right=']'), + widgets = [filename, ' ', Percentage(), ' ', Bar(marker='=', left='[', right=']'), ' ', ETA(), ' ', FileTransferSpeed()] pbar = ProgressBar(widgets=widgets, maxval=total_size).start() @@ -119,6 +113,19 @@ def download(pkg): pbar.update(bytes_so_far) pbar.finish() + outfile.close() + + +def download(pkg): + # the "%s" in URLs are meant to be replaced with LANGCODE + try: + pkg_url = pkg['URL'] % LANGCODE + except: + pkg_url = pkg['URL'] + pass + + download_file(pkg_url, OUTPUT_DIR) + def show_all(): process_all(PKG_DIR, show)