blob: a4e458a41511b15b6c1d681755d32ab6964c01bb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
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.")
|