下載咪咕視頻


最近想看紀錄片《綠色星球》,剛剛好在咪咕網站上找到這個視頻。就萌生了一個想法把這個視頻下載下來。

網址:https://m.hebeilaibang.com/bf-174799-1-1.html

網頁分析工具,很容易找到m3u8文件。右邊紅框,框出來的就是一個個ts視頻文件。統計了下時長為1:30:02的視頻,拆分成了4000多個小的ts視頻文件。

 

 

 那思路就是:

步驟1. 下載,打開m3u8文件。提取里的ts文件。

步驟2.下載ts文件,合並為完整的視頻文件。

步驟1代碼:有些人就會問為啥不用requests,一開始就是使用的requests但是老是提示證書問題(ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed),短時間內沒有找到解決這個證書問題的辦法. 反正目標就是要下載ts文件,能下載下來就行,這里就直接使用了python的wget包。

先看看下載下來的m3u8文件,是這個樣子的。

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:2
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:1.303,
/VMDIR4CAA791091D21D23E63637080226F370/20220111/fRia4tyb/2850kb/hls/NhAPlV8p.ts
#EXTINF:1.2,
/VMDIR4CAA791091D21D23E63637080226F370/20220111/fRia4tyb/2850kb/hls/PKkwv5hd.ts
#EXTINF:1.2,
/VMDIR4CAA791091D21D23E63637080226F370/20220111/fRia4tyb/2850kb/hls/Ux79JcrZ.ts
#EXTINF:1.2,
/VMDIR4CAA791091D21D23E63637080226F370/20220111/fRia4tyb/2850kb/hls/HAhapIrq.ts
#EXTINF:1.2,
/VMDIR4CAA791091D21D23E63637080226F370/20220111/fRia4tyb/2850kb/hls/YDl5LAiY.ts
#EXTINF:1.2,
/VMDIR4CAA791091D21D23E63637080226F370/20220111/fRia4tyb/2850kb/hls/12fNJKSm.ts
#EXTINF:1.2,
/VMDIR4CAA791091D21D23E63637080226F370/20220111/fRia4tyb/2850kb/hls/plbmFStJ.ts

ts結尾的文件是我們需要下載下來的。拼接完整的網址就可以下載下來了。這里還有個問題,就是這些ts文件命名是亂碼的(NhAPlV8p.ts)。需要給他整理個編號。

import wget

ts_list = []
web_url = "https://cdn2.bzjupinhang.com:65"

def read_file():#只留下ts文件放到ts_list列表中。
    with open("index.m3u8") as files:
        for line in files:
            # print(type(line))
            if line.endswith(".ts\n"):
                ts_list.append(line.strip("\n"))

def download_ts():#拼接下載ts文件的網址,使用wget下載,並對下載下來的視頻按順序進行編號。
    for i in range(3695,len(ts_list)):
        print(web_url+ts_list[i])
        ts_file = "{}.ts".format(i)
        wget.download(web_url+ts_list[i], out=ts_file)

read_file()
download_ts()

運行這段腳本就是開始下載了。拼網速。下載完成以后進行合並。

import os

def heBingTsVideo(download_path,merge_path):
    all_ts = os.listdir(download_path)
    with open(hebing_path, 'wb+') as f:
        for i in range(len(all_ts)):
            ts_video_path = os.path.join(download_path, "{}.ts".format(i))
            f.write(open(ts_video_path, 'rb').read())
    print("合並完成!!")


download_path = "D:\\movie"
merge_path = "D:\\movie\\綠色星球.mp4"
heBingTsVideo(download_path,merge_path)

 


免責聲明!

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



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