Python 下載視頻 m3u8

該方法爲下載網頁上的視頻
通常情況下,視頻網站的視頻不是一個整文件,而是成百上千個 ts流 文件

我們獲取第一個名爲“*****0001.ts”的文件地址,以及最後一個的地址,就可以用 Python 下載

按下 F12 ,選擇 Network,就可以找到不斷產生的ts文件

找到編號的第一個,右鍵獲取地址,修改代碼中的 url 地址,注意最後的 “%04d” 要根據實際情況修改,作用時將整數變爲字符類型(前補零)

修改文件下載的地址,我默認是 H:/PyDownload/ 注意,地址一定要是現存的,程序不會自動建立不存在的目錄

修改線程數,根據電腦內存的大小進行修改,一般100線程就可以將網速佔滿

最後,修改個數 range()

建議下載完成後自己進行合併,用的是 cmd 中的 copy 命令

copy /b *.ts new.mp4

import requests
import os
import time
from multiprocessing import Pool

def run(i):
    url = 'https://dapian.video-yongjiu.com/20190917/12948_614ba440/1000k/hls/e6f33517ce300%04d.ts'%i
    print("開始下載:"+url)
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36"}
    r = requests.get(url, headers = headers,stream=True,timeout=600)
    # print(r.content)
    with open('H:/PyDownload/{}'.format(url[-7:]),'wb') as f:
        f.write(r.content)
        f.close()

def merge(t,cmd):
    time.sleep(t)
    res=os.popen(cmd)
    print(res.read())



if __name__ == '__main__':
    # 創建進程池,執行10個任務
    pool = Pool(32)
    for i in range(500):
        pool.apply_async(run, (i,)) #執行任務
    pool.close()
    pool.join()
    #調用合併
    # merge(5,"copy /b H:\\PyDownload\\*.ts H:\\PyDownload\\new.mp4")
    print('ok!處理完成')
``
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章