python將下載到本地m3u8視頻合成MP4的代碼詳解
更新時間:2020年11月24日 11:42:24 作者:東方佑
這篇文章主要介紹了python將下載到本地m3u8視頻合成MP4的代碼詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
代碼如下所示:
import os
import requests
import datetime
from Crypto.Cipher import AES
def decode_key_file(key_file_name):
with open(key_file_name,"r") as f:
data=f.read()
return data
def decode_m_file(m_file_name):
with open(m_file_name,"r") as f:
data=f.read()
return data.split("\n")[6::2]
def decode_video(filename):
data_list=[[],[],[]]
file_list=os.listdir(filename)
for one_file_name in file_list:
if "m3u8" in one_file_name:
data_list[0].append(filename+"/"+one_file_name)
elif "key" in one_file_name:
data_list[1].append(filename + "/" + one_file_name)
else:
data_list[2].append(filename + "/" + one_file_name)
key=decode_key_file(data_list[1][0])
name_list=decode_m_file(data_list[0][0])
for one_name in name_list:
for path_name in data_list[2]:
if one_name in path_name:
with open(path_name,"rb") as f:
data_name=f.read()
if len(key): # AES 解密
cryptor = AES.new(key, AES.MODE_CBC, key)
with open(key + ".mp4", 'ab') as f:
f.write(cryptor.decrypt(data_name))
if __name__ == '__main__':
decode_video("./data")
視頻下載下來如下圖所示

https://ngmov.me/?channelCode=ngdl50
這個應用下載下來的視頻就是這樣的解法

改進版本
def decode_key_file(key_file_name):
with open(key_file_name, "r") as f:
data = f.read()
return data
def decode_m_file(m_file_name):
with open(m_file_name, "r") as f:
data = f.read()
return data.split("\n")[6::2]
def decode_video(filename):
data_list = [[], [], []]
file_list = os.listdir(filename)
for one_file_name in file_list:
if "m3u8" in one_file_name:
data_list[0].append(filename + "/" + one_file_name)
elif "key" in one_file_name:
data_list[1].append(filename + "/" + one_file_name)
else:
data_list[2].append(filename + "/" + one_file_name)
try:
key = decode_key_file(data_list[1][0])
except:
key = one_file_name
name_list = decode_m_file(data_list[0][0])
for one_name in name_list:
for path_name in data_list[2]:
if one_name in path_name:
with open(path_name, "rb") as f:
data_name = f.read()
if len(key): # AES 解密
cryptor = AES.new(key, AES.MODE_CBC, key)
with open(key + ".mp4", 'ab') as f:
f.write(cryptor.decrypt(data_name))
else:
with open(key + ".mp4", 'ab') as f:
f.write(data_name)
f.flush()
if __name__ == '__main__':
data_list = os.listdir("/home/dfy/Videos/Download")
index=0
for path_one in data_list:
index+=1
if index<18:
continue
decode_video("/home/dfy/Videos/Download" + "/" + path_one)
到此這篇關于python將下載到本地m3u8視頻合成MP4的代碼詳解的文章就介紹到這了,更多相關python把m3u8視頻合成MP4內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python操作word常見方法示例【win32com與docx模塊】
這篇文章主要介紹了Python操作word常見方法,結合實例形式分析了Python使用win32com模塊與docx模塊操作word的相關實現技巧及相關注意事項,需要的朋友可以參考下2018-07-07
pytorch + visdom CNN處理自建圖片數據集的方法
這篇文章主要介紹了pytorch + visdom CNN處理自建圖片數據集的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06

