首页 > 编程语言 >利用python自动将下载好的音视频合成

利用python自动将下载好的音视频合成

时间:2023-02-11 22:33:54浏览次数:41  
标签:rename dict1 name dict2 python 音视频 下载 file dir

网上看到一个油猴脚本,可以自动下载任何视频,下载后自动生成音频和视频,需要用到ffmpeg对音视频进行合成,于是花了几个小时写了一个python脚本,实现自动扫描并合成视频功能

使用此脚本前,您可能需要配置如下清单

安装油猴脚本

安装无限制下载视频脚本:https://greasyfork.org/zh-CN/scripts/445751-unlimited-downloader

下载ffmpeg音视频合成工具

配置下载目录和ffmpeg目录,分别是脚本中的两个变量:download_dir,ffmpeg_dir

完成上述配置后,即可享受无限制的视频下载及合成

import os
import tkinter as tk
import tkinter.messagebox
 
 
def alert_success():
    if (tk.messagebox.askquestion(title='提示', message='合并完成,是否打开下载文件夹?') == 'yes'):
        output_dir = r'C:\Users\Administrator\Downloads'
        os.system("explorer.exe %s" % output_dir)
 
 
def trim_file(file_name):
    if isinstance(file_name, str):
        if file_name.startswith('audio') or file_name.startswith('video'):
            if ' ' in file_name:
                rename = file_name.replace(' ', '')
                print('清除文件名中的空格', file_name)
                os.rename(download_dir + '\\' + file_name, download_dir + '\\' + rename)
                return rename
    return file_name
 
def scan_download_dir(download_dir):
    dict1 = {}
    g = os.walk(download_dir)
    for path, dir_list, file_list in g:
        for file_name in file_list:
            rename = trim_file(file_name)
            if isinstance(rename, str):
                if rename.startswith('audio'):
                    key1 = rename[5:]
                    if key1 in dict1:
                        dict2 = dict1[key1]
                    else:
                        dict2 = {}
                    dict2['audio'] = os.path.join(path, rename)
                    dict1[key1] = dict2
                if rename.startswith('video'):
                    key1 = rename[5:]
                    if key1 in dict1:
                        dict2 = dict1[key1]
                    else:
                        dict2 = {}
                    dict2['video'] = os.path.join(path, rename)
                    dict1[key1] = dict2
    return dict1
 
 
def synthetic_video(dict1):
    for key in dict1:
        dict2 = dict1[key]
        if isinstance(dict2, dict):
            audio = dict2['audio']
            video = dict2['video']
            output = download_dir + '\\output' + key
            cmd = f'{ffmpeg_dir} -i {video} -i {audio} -c:v copy -c:a aac -strict experimental {output}'
            print('执行脚本', cmd)
            os.system(cmd)
 
 
if __name__ == '__main__':
    print('扫描下载文件夹')
    download_dir = r'C:\Users\Administrator\Downloads'
    ffmpeg_dir = r'D:\program\ffmpeg-5.1.2-full_build\bin\ffmpeg'
 
    dict1 = scan_download_dir(download_dir)
    if dict1:
        print('循环合成文件并输出', dict1)
        synthetic_video(dict1)
 
        print('弹窗提醒')
        alert_success()

 

标签:rename,dict1,name,dict2,python,音视频,下载,file,dir
From: https://www.cnblogs.com/shijia/p/17112714.html

相关文章

  • Python 高级编程之生成器与协程进阶(五)
    目录一、概述二、生成器1)生成器和迭代器的区别2)生成器创建方式1、通过生成器函数创建2、通过生成器表达式创建3)生成器表达式4)yield关键字5)生成器函数6)return和yield异同......
  • python 变量拷贝(深拷贝&浅拷贝)
    #浅拷贝:拷贝父对象,不拷贝对象内部的子对象importcopya={'a':[1,2,3]}b=a.copy()a['a'].append(4)print(a,b)print(id(a['a']),id(b['a']))print("="*......
  • Python黑客编程之爆破网站登录表单
    描述遍历字典,发送requests请求到目标网站,根据响应判断是否登录成功分析SecLists仓库中存放了大量有用的字典文件,我这里用了一个爆破字典cain.txt在本地部署wordpres......
  • 2023最新Python阅读书籍推荐
    abyteofpython(中文:简明Python教程)入门的书很多,但能让新手轻松看懂的就少了,作者写的思路非常清晰,对每一个知识点讲解的很到位,不多不少,对初学者来说,力道刚刚好。这本书是......
  • python路径 目录 文件夹
    绝对路径1、os.path方法importosimportsyscurrent_directory=os.path.dirname(os.path.abspath(__file__))print(current_directory)2、os.path.abspath方法import......
  • Python黑客编程之暴力字典web扫描器
    描述通过读取字典中的关键字,拼接成url,来测试目标站点文件目录结构代码设置了一个resume参数,如果因为网络等问题导致扫描中断,重新启动扫描时可以将resume设置为上次......
  • Python SQLite创建数据库和数据表及数据的增删改查
    SQLite是一款轻型的SQL类型数据库,处理速度快且占用资源非常低,Python自带,不需要配置不需要任何外部的依赖。数据库本身就是一个.db文件,非常适合存储本地数据。本文主要介绍......
  • Python基础学习总结
    python基础内容解释器编译器:将其他语言翻译成机器语言。分类编译器有两种类型,编译和解释(翻译时间点的不同)。编译型语言:源程序交给编译器,统一编译,一次性执行解释型......
  • Thonny MicroPython 使用mpy-cross 生成MPY文件加速运行与加密
    安装mpy-cross  https://www.cnpython.com/pypi/mpy-cross  这里直接在Thonny的管理包模块进行安装 安装完成 使用方法可以参照上方官方文档  效果......
  • jdbc及ojdbc下载
    mysql网址:https://www.mysql.com/downloads/下载JDBC驱动:进入DOWNLOADS标签下,点击页面MYSQLCommunity(GPL)Downloads;进入页面点击Conector/J;进入页面选择平台为:Platef......