m3u8批量转mp4备忘

import os
from PyQt5. QtWidgets import QApplication , QFileDialog
import shutil
from Crypto.Cipher import AES
import pandas as pd
 
#普通加密合并
def merge_type_1(name,kye,checklist):
    cryptor = AES.new(kye, AES.MODE_CBC,kye)
    with open ( name +'.mp4','wb+') as f1:
        for ss in checklist:
            f2=open(ss,'rb')
            f1.write(cryptor.decrypt(f2.read()))
            f2.close()    
    f1.close()
    return 1

#文件重命名检查合法性
def check_name(in_name,illegal_word):
    for nw in illegal_word:
        in_name=in_name.replace(nw,' ')
    return in_name
illegal_word='?',',','_','/','*',''',''','<','>','|'

filename ='xx.csv'
reader=pd.read_csv(filename)
rmax,cmax=reader.shape

#csv文件
csvch={}
for r in range(0,rmax):
    csvch[reader.iloc[r,1]]=reader.iloc[r,3]

a=QApplication([''])
 
#选择文件夹,该文件夹为m3u8文件夹的上级文件夹
directory1 = QFileDialog.getExistingDirectory(caption="选择目录文件夹",directory= "/")
print('程序开始运行……')
doclist1=os.listdir(directory1)

counter=0

for x1 in doclist1:
    directory2=directory1 + '/' + x1
    print(directory2+'开始合并……')
    doclist=os.listdir(directory2)
 
    if ('local.key' and  'localPlayList.m3u8' and 'video.info')in doclist:
        d='localPlayList.m3u8'
        directory3=directory2 + '/' + d
        checklist=[]
        with open (directory3,'r')as file:
            context=file.readlines()
            for i in range(len(context)):
                if '#EXTINF:' in context[i]:
                    if 'seg' in context[i+1] :
                        if  context[i+1][:-1] in doclist:
                            checklist.append(directory2 + '/' +context[i+1][:-1])
                    
                if 'EXT-X-KEY:' in context[i]:
                    if  'local.key'in context[i]:
                        kye_path=directory2 + '/'+'local.key'
                        sp_type=1
                        kye_file=open(kye_path,'rb')
                        kye=kye_file.read()
                        kye_file.close()
                        continue
                        
                if 'EXT-X-ENDLIST' in context[i+1]:
                    if  sp_type==1:
                        
                        #video.info文件读取uuid对应的url
                        rename=directory2 + '/' + 'video.info'
                        rnf=open(rename,'rb')
                        for ix in rnf.readlines():
                            url=ix.find(b'https://')
                            url2=ix.find(b't\x00d/storage')
                            xname=str(ix[url:url2])[2:-1]
                            #xname=str(ix[url:url+51])[2:-1]
                            break
                        #url匹配csv中的文件名
                        if xname in csvch:
                            x1=csvch[xname]
                            print(x1)
                            x1=check_name(x1,illegal_word)

                        merge_type_1(x1,kye,checklist)
                        #shutil.rmtree(os.path.dirname(kye_path))
                    counter=counter+1
                    print(directory2+'合并完成!已完成'+str(counter)+'个……')
                    break        
    else:
        print('出错了!')
 
 
print('程序已结束','已完成:',str(counter),'个!')

某浏览器缓存转mp4功能太不完善,自行代码解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值