mirror of https://github.com/devine-dl/devine.git
Add missing while loop to Curl-Impersonate downloader
This commit is contained in:
parent
172ab64017
commit
ba93c78b99
|
@ -70,34 +70,36 @@ def curl_impersonate(
|
|||
for url, out_path in uri:
|
||||
out_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
attempts = 1
|
||||
try:
|
||||
stream = session.get(url, stream=True)
|
||||
stream.raise_for_status()
|
||||
with open(out_path, "wb") as f:
|
||||
written = 0
|
||||
for chunk in stream.iter_content(chunk_size=1024):
|
||||
download_size = len(chunk)
|
||||
f.write(chunk)
|
||||
written += download_size
|
||||
if progress:
|
||||
progress(advance=1)
|
||||
|
||||
now = time.time()
|
||||
time_since = now - last_speed_refresh
|
||||
while True:
|
||||
try:
|
||||
stream = session.get(url, stream=True)
|
||||
stream.raise_for_status()
|
||||
with open(out_path, "wb") as f:
|
||||
written = 0
|
||||
for chunk in stream.iter_content(chunk_size=1024):
|
||||
download_size = len(chunk)
|
||||
f.write(chunk)
|
||||
written += download_size
|
||||
if progress:
|
||||
progress(advance=1)
|
||||
|
||||
download_sizes.append(download_size)
|
||||
if time_since > 5 or download_size < 1024:
|
||||
data_size = sum(download_sizes)
|
||||
download_speed = data_size / (time_since or 1)
|
||||
progress(downloaded=f"{filesize.decimal(download_speed)}/s")
|
||||
last_speed_refresh = now
|
||||
download_sizes.clear()
|
||||
break
|
||||
except Exception as e:
|
||||
if DOWNLOAD_CANCELLED.is_set() or attempts == MAX_ATTEMPTS:
|
||||
raise e
|
||||
time.sleep(RETRY_WAIT)
|
||||
attempts += 1
|
||||
now = time.time()
|
||||
time_since = now - last_speed_refresh
|
||||
|
||||
download_sizes.append(download_size)
|
||||
if time_since > 5 or download_size < 1024:
|
||||
data_size = sum(download_sizes)
|
||||
download_speed = data_size / (time_since or 1)
|
||||
progress(downloaded=f"{filesize.decimal(download_speed)}/s")
|
||||
last_speed_refresh = now
|
||||
download_sizes.clear()
|
||||
break
|
||||
except Exception as e:
|
||||
if DOWNLOAD_CANCELLED.is_set() or attempts == MAX_ATTEMPTS:
|
||||
raise e
|
||||
time.sleep(RETRY_WAIT)
|
||||
attempts += 1
|
||||
|
||||
return 0
|
||||
|
||||
|
|
Loading…
Reference in New Issue