gecko-dev/python/dlmanager/examples/dl_tqdm.py
Mike Hommey f98d09ab4c Bug 1341215 - Vendor dlmanager. r=chmanchester
from https://github.com/parkouss/dlmanager

Note this technically should come before the first patch, but mozreview
won't show useful interdiffs if I do that, so I'll reorder the patches
before landing.

--HG--
extra : rebase_source : dedca9393783623461509c7c85e35302f4b08a2a
2017-02-23 15:30:46 +09:00

46 lines
1.0 KiB
Python

import argparse
import tqdm
from six.moves.urllib.parse import urlparse
from dlmanager import Download
def parse_args(argv=None):
parser = argparse.ArgumentParser()
parser.add_argument("url", help="url to download")
return parser.parse_args(argv)
def download_progress(bar):
last_b = [0]
def inner(_, current, total):
if total is not None:
bar.total = total
delta = current - last_b[0]
last_b[0] = current
if delta > 0:
bar.update(delta)
return inner
def download_file(url, dest=None):
if dest is None:
dest = urlparse(url).path.split('/')[-1]
with tqdm.tqdm(unit='B', unit_scale=True, miniters=1, dynamic_ncols=True,
desc=dest) as bar:
dl = Download(url, dest, progress=download_progress(bar))
dl.start()
dl.wait()
if __name__ == '__main__':
options = parse_args()
try:
download_file(options.url)
except KeyboardInterrupt:
print("\nInterrupted.")