import os
import time
import requests
from tqdm import tqdm # 進度條模塊
def down_from_url(url, dst):
# 設置stream=True參數讀取大文件
response = requests.get(url, stream=True)
# 通過header的content-length屬性可以獲取文件的總容量
file_size = int(response.headers['content-length'])
if os.path.exists(dst):
# 獲取本地已經下載的部分文件的容量,方便繼續下載,如果不存在就從頭開始下載。
first_byte = os.path.getsize(dst)
else:
first_byte = 0
# 如果大於或者等於則表示已經下載完成,否則繼續
if first_byte >= file_size:
return file_size
header = {
"Range": f"bytes={
first_byte}-{
file_size}"}
pbar = tqdm(total=file_size, initial=first_byte, unit='B', unit_scale=True, desc=dst)
req = requests.get(url, headers=header, stream=True)
with open(dst, 'ab') as f:
# 每次讀取一個1024個字節
for chunk in req.iter_content(chunk_size=1024):
if chunk:
f.write(chunk)
pbar.update(1024)
pbar.close()
return file_size
if __name__ == '__main__':
urlList = []
for url in urlList:
# 根據時間戳生成文件名
down_from_url(url, str(time.time()) + ".mp4")