拿到m3u8文件直接下载,代码献上


import requests
import asyncio
import aiohttp
import aiofiles


headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36",
"referer":"https://www.feifantv.cc/"
}

def download_m3u8_file(url, name):
resp = requests.get(url, headers=headers)
with open(name,mode="wb") as f:
f.write(resp.content)


async def download_ts(url, name, session):
pass
async with session.get(url) as resp: #发送网络请求

async with aiofiles.open(f"video5/{name}.ts", mode="wb") as f: #创建文件,当文件很多时,我们创建一个文件夹标记为mark(文件夹点击右键,最后一个,选红色的)
await f.write(await resp.content.read()) #把文件写到文件夹

print(f"{name}下载完成")



async def aio_download(url):
count = 0    #计数
tasks = [] #准备元组接受任务,把所有的任务加到元组里面来
async with aiohttp.ClientSession() as session: #提前创建session。把它当做一个参数传给需要网络请求的函数。避免在网络请求时,在一个个创建session
async with aiofiles.open("紫川第一集.txt", mode="r", encoding="utf-8") as f: #打开异步协程文件
async for line in f: #逐行读取

if line.startswith("#"): #对于开头时#

continue

# lines = line.strip('hls/')[1] #去除换行符,空格

# lines = ('https://www.lbbf9.com' + line).strip() #不是完整的m3u8文件,用这个来链接




task = asyncio.create_task(download_ts(line, count, session)) #建立一个协程对象:download_ts():协程函数

tasks.append(task) #当task调用函数download_ts(),每执行一次得到的结果都加入到列表tasks
count = count + 1    # 计数,可以知道我们一共由多少个文件。并且可以当文件名传给下一个函数。在合并文件的时候就能很轻松。
# print(count)

await asyncio.wait(tasks) #等待任务结束,我们就把tasks列表返回出来



def main(url): #第一步:调用函数的入口,所有的步骤都在这里面进行

#下载m3u8文件
download_m3u8 = download_m3u8_file(url, "紫川第一集.txt")

with open ("紫川第一集.txt",mode="r") as f: #读取文件
for line in f: #line:行。 逐行读取
if line.startswith("#"): #当以#开头
continue #过
line = line.strip() #去除行空白或者换行符

# second = ('https://www.lbbf9.com' + line).strip()
        #拿到链接要去除换行符,不然错误怎么来的都不知道,拿到的链接(m3u8文件的ts链接)不完整就改这句,把前缀加进去
# print(second)


# # 4.下载视频

# # 异步协程
asyncio.run(aio_download(line))#完整链接(m3u8文件里的ts链接),直接用line,不完整链接,用second

#
if __name__ == '__main__': #第一步,准备调用
url = 'https://new.iskcd.com/20211221/yWRT2CEK/1100kb/hls/index.m3u8' #第一步:调用的网页(改为要访问的m3u8文件)
main(url) #第一步:调用函数

用python 合并文件,有时候会有卡顿,感觉不太舒服。
我常用的TS文件合成软件:te合成工具(www.greenxf.com)
posted @   yu-ye  阅读(966)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
点击右上角即可分享
微信分享提示