import requests
from tqdm import tqdm
import os
import base64
from cryptography.fernet import Fernet
import aiohttp
import asyncio
import uuid
from pymysql import *
import csv
import math
from time import sleep
try:
import uvloop
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
except ImportError:
pass
# 单线程下载
def downloadByUrl(url, downloadPath, fileName):
# 完整路径+文件名
dst = downloadPath + fileName
'''同步'''
response = requests.get(url, stream=True)
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:
for chunk in req.iter_content(chunk_size=1024):
if chunk:
f.write(chunk)
pbar.update(1024)
pbar.close()
return file_size
sleep(3)
def getVieoList():
wither = open('data.txt','r')
conne = wither.read()
air =conne.split('\n')#每次读取一行
print(air)
wither.close()
return air
sleep(2)
# exit()
# reader= .reader(f)
# redersp = list(reader)c
# print(reader)
# print(redersp)
# # data = [a]
# data.append(redersp[a][0])
if __name__ == '__main__':
# 保存位置(先创建好文件夹)
downloadPath = "D:\\WORK\\matreial\\Captures\\boy\\绝世战神\\"
print(downloadPath)
# mp4链接列表(注意!只能是带有mp4后缀的链接才能正常下载)
demo = getVieoList()
num = 1
# 方法一:单线程下载
for item in demo:
if item == '':
continue
fileName = f"index_{num}.mp4"
sleep(1)
# print(fileName)
downloadByUrl(item, downloadPath, fileName)
sleep(1)
num += 1
# # 方法二:多线程下载
# for index in range(len(urlData)):
# # 文件名(uuid)
# for i in range(1, 101):
# fileName = f"{uuid.n+1}.mp4"
# task = [asyncio.ensure_future(async_download_from_url(urlData[index], downloadPath, fileName))]
# try:
# loop = asyncio.get_event_loop()
# loop.run_until_complete(asyncio.wait(task))
# except:
# loop.run_until_complete(loop.shutdown_asyncgens())
# # 循环下载完成后关闭所有线程
# loop.close();
如果不知道如何通过接口获取响应的关键信息,亲参考python通过接口响应的数据,提取指定参数CSDN