import requests
from tqdm import tqdm
import os
session = requests.Session()
# 视频路径(此次下载文件大小与本地文件大小一样)
file_url = "https://f.video.weibocdn.com/00497ZGZgx07LFXmitba0104120hHWg30E070.mp4?label=mp4_720p&template=1280x720.25.0&trans_finger=775cb0ab963a74099cf9f840cd1987f1&media_id=4623023358279700&tp=8x8A3El:YTkl0eM8&us=0&ori=1&bf=3&ot=h&lp=yODMkOxvUyYIS9MUSBJLo&ps=mZ6WB&uid=8zomq6&ab=11243-g2,1493-g0,1192-g0,1191-g0,1258-g0&Expires=1697877799&ssig=zsyly7p%2ByW&KID=unistore,video"
# stream=True 参数表示启用流式传输,使得响应内容不会一次性加载到内存中,
# 而是随着数据的接收逐步返回,这对于处理大文件或需要实时处理的情况非常有用。
response = session.get(file_url, stream=True)
# 获取已下载文件大小(本地文件)
total_size = os.path.getsize('kevin.mp4')
print(total_size)
# 获取进度条
progress_bar = tqdm(total= total_size, unit='B', unit_scale=True)
# 进度条重置
progress_bar.reset()
data = 0
# 这里可以使用 response 对象来处理获取到的数据
# 例如,将数据写入文件
with open('kevin2.mp4', 'wb') as f:
for chunk in response.iter_content(chunk_size=1024):
if chunk:
f.write(chunk)
data += len(chunk)
# 进度条更新
progress_bar.update(len(chunk))
# 为了验证下载文件大小是否一样
print(data == total_size)
# 进度关闭
progress_bar.close()
tqdm 进度条
于 2023-10-21 15:48:42 首次发布