mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-25 03:05:34 +00:00
f98d09ab4c
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
46 lines
1.0 KiB
Python
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.")
|