Python合并视频网站缓存文件

视频网站缓存合并

处理缓存文件

目录

视频网站缓存合并

# 遍历文件夹,遍历文件,将缓存文件解密
def decrypt(self, top_dir):
    dir_list = os.listdir(top_dir)  # 打开缓存目录
    file_count_all = 0
    for input_dir in dir_list:  # 遍历文件夹
        full_dir = top_dir + '\\' + input_dir   # 拼接文件夹绝对路径
        media_file = ['', '']                   # 定义存放音视频文件名的数组
        if os.path.isdir(full_dir):             # 判断是否为目录
            filelist = os.listdir(full_dir)     # 获取下级目录内文件列表
            file_count = 0                      # 用于media_file数组下标
            media_file = ['', '']               # 初始化存放音视频文件名的数组
            for file in filelist:               # 遍历文件名
                input_file = full_dir + '\\' + file         # 拼接文件绝对路径
                # 判断是否为文件并是可处理的文件后缀名,.txt为测试时使用
                if os.path.isfile(input_file) and file[-4:] in ['.txt', '.m4s', '.m4a']:
                    del_str = self.LE_delstr.text()         # 获取需要清除的内容
                    f = open(input_file, "rb")              # 以二进制方式读取文件内容
                    lines = f.readlines(0)                  # 读取文件
                    lines2 = lines[0]                       # 将第一行赋值给lines2
                    f.close()                               # 关闭文件
                    # 判断文件第一行的开头9个字节是否等于需要删除的内容
                    if lines2[0:9] == bytes(del_str, 'utf-8'):
                        lines2 = lines2[9:]                 # lines2=去除前9个字节的自己
                        lines[0] = lines2                   # 将新的第一行更新到原文件中
                        fd = open(input_file, "wb")         # 以二进制方式写入文件
                        fd.writelines(lines)                # 复写原文件
                        fd.close()                          # 关闭文件
                        self.TE.insertPlainText(file + '已解密' + '\n')    # 在TextEdit控件中写入进度信息
                        new_file_name = input_file[:-4] + '.m4a'          # 拼接新文件名(改变原文件后缀名)
                        new_file_name.replace('/', '\\')                  # 此处可以省略
                        os.rename(input_file, new_file_name)  # 按新文件名更新源文件(解密后文件直接复写解密前的文件),文件位置不变
                        if file_count == 0:                   # 缓存中只有两个可处理文件,一个是音频另一个是视频,无需分辨记录即可
                            media_file[0] = new_file_name     # 将新文件名写入数组
                            file_count = 1
                        else:
                            media_file[1] = new_file_name     # 将新文件名写入数组
                            file_count = 0
                    else:
                        self.TE.insertPlainText(file + '文件损坏或已解密,本次未修改\n')  # 在TextEdit控件中写入进度信息
                    file_count_all = file_count_all + 1
                else:
                    self.TE.insertPlainText(file + '不属于缓存文件,本次未修改\n')       # 在TextEdit控件中写入进度信息
        # 音视频合成部分
        if self.checkBox.isChecked():                   # 判断合并选项是否勾选
            Info = full_dir + '\\.videoInfo'            # 拼接缓存文件中的视频信息文件用于取出视频名称
            f = open(Info, 'r', encoding='utf-8')       # 打开视频信息文件
            lines = str(f.readlines(0))                 # 读取视频信息文件内容
            lines = lines[2:-2]                         # 去除两端的[]
            lines = json.loads(lines)                   # 将内容json处理
            out_file_name = self.LE_output.text() + '\\' + lines.get('tabName') + '.mp4'    # 拼接合并后的文件名
            print(out_file_name)
            cmd_line = self.LE_ff_cmd.text()            # 获取用户定义的命令模板
            cmd_line = cmd_line.replace('video_file', media_file[0])    # 将各个参数替换到命令模板中
            cmd_line = cmd_line.replace('audio_file', media_file[1])
            cmd_line = cmd_line.replace('output_file', out_file_name)
            cmd_line = self.LE_ffmpeg.text() + " " + cmd_line           # 将执行程序(ffmpeg.exe)加入命令
            print(cmd_line)
            os.system(cmd_line)                         # 执行合并命令
            self.TE.insertPlainText(out_file_name + '已完成转换' + '\n')  # 在TextEdit控件中写入进度信息
    return file_count_all

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值