in utilities/networking.py [0:0]
def download_url_once(url, filename, progress=True):
"""
Download file from a URL to filename, optionally
displaying progress bar with tqdm
taken from https://stackoverflow.com/a/37573701
"""
# Streaming, so we can iterate over the response.
try:
r = requests.get(url, stream=True, proxies=proxies)
except ConnectionError as err:
print(err)
return False
# Total size in bytes.
total_size = int(r.headers.get('content-length', 0))
block_size = 1024 #1 Kibibyte
if progress:
t=tqdm(total=total_size, unit='iB', unit_scale=True)
done = True
datalen = 0
with open(filename, 'wb') as f:
itr = r.iter_content(block_size)
while True:
try:
try:
data = next(itr)
except StopIteration:
break
if progress:
t.update(len(data))
datalen += len(data)
f.write(data)
except KeyboardInterrupt:
done = False
print('Cancelled')
except ConnectionError as err:
done = False
print(err)
if progress:
t.close()
if (not done) or (total_size != 0 and datalen != total_size):
print("ERROR, something went wrong")
try:
os.remove(filename)
except OSError as e:
print(e)
return False
else:
return True