拿到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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM