(抓)如何抓"小白影音"的m3u8並轉成ts
如何抓"小白影音"的m3u8並轉成ts
#研究用,不鼓勵盜取行為,請支持正版
參考 https://blog.csdn.net/human_soul/article/details/103263573
視頻切成幾千個ts檔,我老愛上一些網課,也會有一個習慣就是同時錄製
但有時想要回播,有空再看,最快的方法就是寫一個能抓取視頻串流的程式
。找到一個電影網上的視頻,也是m3u8的串流結構,今天就用這個來練
手一下。
目標網址
安裝m3u8
pip install m3u8
step1—觀察網頁型態
網頁空處按滑鼠右鍵>檢查,或以我的筆電快捷是ctrl+shift+i
觀察結果可以發現,大概就是在結構的表面就會列出一系列
副檔名.ts的檔,找出index.m3u8,再按response,有一整列檔名
那就是全部影片的.ts清單。
再來看右邊*.ts最後個數字是多少,這樣做是因為等下要用迴圈
把它下一一下載
下來。
先確定一下最後的.ts是不是片子的結尾
step2—開始寫程式碼
1:藍色截取那段是主要網址,後面的檔案名等下利用m3u8庫來抓
step3—寫主要抓取的網址
tsUrl='https://yiyi.55zuiday.com/20180216/hsMX5SId/800kb/hls/'
savepath=r'D:/暫存/test'
m3u8_url=r'https://yiyi.55zuiday.com/20180216/hsMX5SId/800kb/hls/index.m3u8'
m3u8_url等下在抓*.ts時會用到
m3u8_obj=m3u8.load(m3u8_url) #讀取index.m3u8裡文件
for seg in m3u8_obj.segments:
dest_url=tsUrl+seg.uri
print(dest_url)
------------------------------------------------------
顯示結果
...
https://yiyi.55zuiday.com/20180216/hsMX5SId/800kb/hls/fWwEd68882081.ts
https://yiyi.55zuiday.com/20180216/hsMX5SId/800kb/hls/fWwEd68882082.ts
https://yiyi.55zuiday.com/20180216/hsMX5SId/800kb/hls/fWwEd68882083.ts
https://yiyi.55zuiday.com/20180216/hsMX5SId/800kb/hls/fWwEd68882084.ts
https://yiyi.55zuiday.com/20180216/hsMX5SId/800kb/hls/fWwEd68882085.ts
https://yiyi.55zuiday.com/20180216/hsMX5SId/800kb/hls/fWwEd68882086.ts
https://yiyi.55zuiday.com/20180216/hsMX5SId/800kb/hls/fWwEd68882087.ts
https://yiyi.55zuiday.com/20180216/hsMX5SId/800kb/hls/fWwEd68882088.ts
https://yiyi.55zuiday.com/20180216/hsMX5SId/800kb/hls/fWwEd68882089.ts
https://yiyi.55zuiday.com/20180216/hsMX5SId/800kb/hls/fWwEd68882090.ts
https://yiyi.55zuiday.com/20180216/hsMX5SId/800kb/hls/fWwEd68882091.ts
step4—請求表頭和開始下載檔案
把剛剛step3抓取方法合在一起如下
tsUrl='https://yiyi.55zuiday.com/20180216/hsMX5SId/800kb/hls/'
savepath=r'D:/暫存/test'
m3u8_url=r'https://yiyi.55zuiday.com/20180216/hsMX5SId/800kb/hls/index.m3u8'
m3u8_obj=m3u8.load(m3u8_url)
for seg in m3u8_obj.segments:
dest_url=tsUrl+seg.uri
# print(dest_url)
headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64)\
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101\
Safari/537.36', }
tsfiles=requests.get(dest_url, headers=headers)
if tsfiles.status_code==200:
print(tsfiles,dest_url)
————————————————————————————————————————————————————
結果回傳
PS D:\python> & C:/Python38/python.exe d:/python/shiaubeiFilmsDownlod.py
<Response [200]> https://yiyi.55zuiday.com/20180216/hsMX5SId/800kb/hls/fWwEd6888000.ts
<Response [200]> https://yiyi.55zuiday.com/20180216/hsMX5SId/800kb/hls/fWwEd6888001.ts
<Response [200]> https://yiyi.55zuiday.com/20180216/hsMX5SId/800kb/hls/fWwEd6888002.ts
<Response [200]> https://yiyi.55zuiday.com/20180216/hsMX5SId/800kb/hls/fWwEd6888003.ts
<Response [200]> https://yiyi.55zuiday.com/20180216/hsMX5SId/800kb/hls/fWwEd6888004.ts
<Response [200]> https://yiyi.55zuiday.com/20180216/hsMX5SId/800kb/hls/fWwEd6888005.ts
Response [200]表示請求成功
下載的函式如下:
def downloadTS(savepath, seg):
with open(os.path.join(savepath, seg.uri), 'wb') as d:
d.write(tsfiles.content)
RETURN="%s...下載完成"%seg.uri
d.close()
time.sleep(1)
return RETURN
最後合併在一起的程式碼
import requests
import os, time
import m3u8
def downloadTS(savepath, seg):
with open(os.path.join(savepath, seg.uri), 'wb') as d:
d.write(tsfiles.content)
RETURN="%s...下載完成"%seg.uri
d.close()
time.sleep(1)
return RETURN
tsUrl='https://yiyi.55zuiday.com/20180216/hsMX5SId/800kb/hls/'
savepath=r'D:/暫存/test'
m3u8_url=r'https://yiyi.55zuiday.com/20180216/hsMX5SId/800kb/hls/index.m3u8'
m3u8_obj=m3u8.load(m3u8_url)
for seg in m3u8_obj.segments:
dest_url=tsUrl+seg.uri
# print(dest_url)
headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64)\
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101\
Safari/537.36', }
tsfiles=requests.get(dest_url, headers=headers)
if tsfiles.status_code==200:
print(tsfiles,dest_url)
print(downloadTS(savepath, seg))
資料夾裡就會開始顯現抓下來的ts,等全抓好後,再利用CMD下個指令,讓
幾千個ts合成一個ts
copy /b *.ts aaa.ts
#aaa.ts自己設的檔名
首先打開CMD進入剛下載下來的ts的路徑,並打上
copy /b *.ts (想生成的檔名).ts
然後把ffmpeg這個程式和要合成的ts檔放在同一個資料夾裡
檔案在此下載
回到CMD底下的影片目錄裡並下ffmpeg的轉換mp4指令,如下
ffmpeg -i 檔名自取.ts -acodec copy -vcodec copy 檔名自取.mp4
打開ts檔的目錄,就可以看到轉換後的mp4
留言
張貼留言