通过接口响应的链接地址,进行解析下载到本地,上源码

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值