python第三方下载库求助
各位大佬,有没有好用的第三方下载库呢,是C端GUI的问题,我用DrissionPage的对象返回下载进度,不能直接用于QProgress的setValue,但是自己封装requests又显得重复造轮子{:1_907:},百度也没找到其他的下载库。有无大佬解惑,还是说我DrissionPage使用方法错误导致返回的不是正确的浮点值? https://drissionpage.cn/download/browser/
可以看看官方例子,感觉是类型转换不正确,发发完整代码出来看看 Satifer 发表于 2024-11-5 11:03
https://drissionpage.cn/download/browser/
可以看看官方例子,感觉是类型转换不正确,发发完整代码出来 ...
f = download_file()
f.add(file_url=url,goal_path=download_path)
print(f.rate)
self._signal_bus.setting_download_file_set_progress.emit(f.rate)
logger.info(f"{f.file_name} 下载完成")
这个,不管是print还是信号传递的.都是None Satifer 发表于 2024-11-5 11:03
https://drissionpage.cn/download/browser/
可以看看官方例子,感觉是类型转换不正确,发发完整代码出来 ...
而且根据官方文档,加了show_msg=True之后,print(f.rate)有值了,但是他是console打印且阻塞的,最后信号激活过去就是100.
而用requests模块就会一直回调信号方法,展现过程进度
with requests.get(download_url, stream=True, timeout=10) as response:
response.raise_for_status()# 如果请求返回了一个错误状态,将引发HTTPError
total_size_in_bytes = int(response.headers.get('content-length', 0))
chunk_size = 1024# 1KB per chunk
progress_bar_size = total_size_in_bytes / 100
# 以二进制模式打开文件
with open(file_name, "wb") as file:
for chunk in response.iter_content(chunk_size=chunk_size):
if chunk:# 确保不处理keep-alive新块
file.write(chunk)
self.update_progress.emit(int((file.tell() / progress_bar_size))) 不忘记你的眼睛 发表于 2024-11-8 20:49
f = download_file()
f.add(file_url=url,goal_path=download_path)
print(f ...
大概看了一下,似乎是追踪的对象不对。f.add(...) 的返回值才是当前任务的状态对象,应该用 task = f.add(...) 然后追踪 task.rate 而不是 f.rate。
页:
[1]