根据视频编码时间批量重命名视频文件

整理收藏的小视频的时候发现很多视频命名很随意,自己命名又太麻烦,看着乱糟糟的文件又心烦,所有写了这个程序,代码如下:

import osfrom filetype import filetype
from pymediainfo import MediaInfovideo_extension = ('mp4', 'm4v', 'mov')def RenameByEncodeTime(videos_path: str):"""靠视频文件的编码时间来重命名当前路径下的所有视频文件"""# 统计操作次数个数count = 0# 遍历目录for root, dirs, files in os.walk(videos_path):# 循环目录中的文件for file in files:# 获取当前操作文件路径old_path = os.path.join(root, file)# 获取当前操作文件的拓展名extension = filetype.guess_extension(old_path)# 如果当前操作文件是视频才继续if extension in video_extension:# 解析当前操作文件的媒体信息media_info = MediaInfo.parse(old_path)# 然后遍历 media_info.tracks 中的每个轨道。for track in media_info.tracks:# 如果轨道的类型是”General“if track.track_type == 'General':encode_data = track.encoded_date# 编码时间不为空的情况if encode_data:# 去掉文件名中的“:"和“UTC ”new_name = f'{encode_data.replace(":", "").replace("UTC ", "")}'# 获取当前操作文件所在目录的路径dir_name = os.path.dirname(old_path)# 根据新文件名组合新路径new_path = f'{dir_name}\\{new_name}.{extension}'# 初始编码时间下存在文件if os.path.exists(new_path):# 判断旧文件名和新文件名的绝对路径是否相同,防止对已经完成命名的文件重复命名# 先转换为小写是为了解决后缀名大写导致的判断通过的问题if old_path.lower() != new_path.lower():# 重复计数repeat_count = 1# 循环判断加编号后直到不存在文件后重命名repeat_path = new_pathwhile os.path.exists(repeat_path):repeat_count += 1repeat_path = f'{dir_name}\\{new_name}-{repeat_count}.{extension}'os.rename(old_path, repeat_path)# 重命名后输出路径信息并计数加1print(f'{old_path} -> {repeat_path}')count += 1# 如果同一个编码时间下已存在两个文件时,给使用这个初始编码时间的文件重命名加编号if repeat_count == 2:# 加编号”-1“后的路径first_path = f'{dir_name}\\{new_name}-1.{extension}'os.rename(new_path, first_path)# 重命名后输出路径信息并计数加1print(f'{new_path} -> {first_path}')count += 1# 初始编码时间下是不存在文件,即为初始编码时间下的重命名else:# 重复计数repeat_count = 2# 加编号”-1“后的路径first_path = f'{dir_name}\\{new_name}-1.{extension}'# 不存在加编号”-1“后的文件则证明当前重命名为初始编码时间重命名if not os.path.exists(first_path):# 重命名后输出路径信息并计数加1os.rename(old_path, new_path)print(f'{old_path} -> {new_path}')count += 1# 如果存在加编号”-1“后的文件则证明当前编码时间下存在多个文件else:# 循环判断加编号直到不存在文件后重命名repeat_path = first_pathwhile os.path.exists(repeat_path):repeat_count += 1repeat_path = f'{dir_name}\\{new_name}-{repeat_count}.{extension}'os.rename(old_path, repeat_path)# 重命名后输出路径信息并计数加1print(f'{old_path} -> {repeat_path}')count += 1print(f'\n已处理次数:{count}')if __name__ == '__main__':print('根据视频编码时间批量重命名视频文件')# 视频文件所在目录path = input("请输入视频文件所在目录的路径:")while path == '':path = input('路径不能为空:')RenameByEncodeTime(path)input('按任意键继续……')

运行截图: 

 注意:有些视频被二次编编码后,它的编码时间可能被删除,这些视频不会被重命名;目前只测试了mp4、m4v、mov这三种格式,代码中也限定了只修改这三种格式,需要修改其他格式请自行修改代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/179381.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不敢信,30+岁的项目经理会是这样

大家好,我是老原。 你们知道,每个阶段的项目经理都是什么样的吗? 20多岁时,刚踏入项目管理的你可能是个什么都不懂的职场小白,或者只能在旁边打打下手; 到了30岁,经历了项目的人情冷暖&#…

@Version乐观锁配置mybatis-plus使用(version)

1:首先在实体类的属性注解上使用Version import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.Versio…

OpenCV必知必会基础3(包括色彩空间的变换、ROI、OpenCV中最重要的结构体Mat以及获取图像的属性)

文章目录 OpenCV的色彩空间——RGB与BGROpenCV的色彩空间——HSV与HSLHSV主要用于OpenCV中HSL OpenCV色彩空间转换YUV主要用于视频中题目 图像操作的基石Numpy【基础操作】np.arraynp.zerosnp.onesnp.fullnp.identitynp.eye Numpy基本操作之矩阵的检索与赋值Numpy基本操作三——…

051-第三代软件开发-日志容量时间限制

第三代软件开发-日志容量时间限制 文章目录 第三代软件开发-日志容量时间限制项目介绍日志容量时间限制 关键字: Qt、 Qml、 Time、 容量、 大小 项目介绍 欢迎来到我们的 QML & C 项目!这个项目结合了 QML(Qt Meta-Object Language…

Python Web APP在宝塔发布

本地测试运行:uvicorn main:app --host 127.0.0.1 --port 8082 --reload 宝塔发布: 运行配置——>启动模式:worker_class uvicorn.workers.UvicornWorker

德迅云安全为您介绍关于抗D盾的一些事

抗D盾概述: 抗D盾是新一代的智能分布式云接入系统,接入节点采用多机房集群部署模式,隐藏真实服务器IP,类似于网站CDN的节点接入,但是“抗D盾”是比CDN应用范围更广的接入方式,适合任何TCP 端类应用包括&am…

web缓存-----squid代理服务

squid相关知识 1 squid的概念 Squid服务器缓存频繁要求网页、媒体文件和其它加速回答时间并减少带宽堵塞的内容。 Squid代理服务器(Squid proxy server)一般和原始文件一起安装在单独服务器而不是网络服务器上。Squid通过追踪网络中的对象运用起作用。…

pg_bouncer在使用中的坑勿踩

目录 简介 环境信息 问题配置 问题配置 启动pgbouncer 链接逻辑图 测试存在问题 pgadmin4 Idea JAVA调用 ​编辑 dbeaver 建议: 简介 前面文章说过关于pg_bouncer的安装讲解,这里讲一下在使用中的坑,在进行配置的时候需要注意。 …

6、使用本地模拟器调试项目

本地模拟器推荐内存为16G以上,最低内存要求8G(比较卡顿) 一、安装本地镜像 1、在开发工具的“文件”菜单中选择“设置” 2、在“设置”中选择“SDK”,在右侧勾选“System-image-phone”,点击“应用”开始安装 3、点击…

载誉前行 | 求臻医学MRD检测方案荣获金如意奖·卓越奖

2023年11月11日 由健康界、海南博鳌医学创新研究院 中国医药教育协会数字医疗专业委员会联合主办的 第三届“金如意奖”数字医疗优选解决方案 评选颁奖典礼 在2023中国医院管理年会上揭晓榜单并颁奖 求臻医学MRD检测解决方案 荣获第三届金如意奖最高奖项——卓越奖 这一…

没有第一、第二学历之分!成人学历一样可以填补学历空缺

如果你还在纠结成人学历是不是第一学历的问题, 可以来看看官方怎么说。 (图片来源:教育部官网) 请问专升本(非成人高招专升本)毕业后的第一学历是专科还是本科? 学历是指人们在教育机构中接…

rabbitmq 集群搭建

RabbitMQ集群介绍 RabbitMQ集群是一组RabbitMQ节点(broker)的集合,它们一起工作以提供高可用性和可伸缩性服务。 RabbitMQ集群中的节点可以在同一物理服务器或不同的物理服务器上运行。 RabbitMQ集群的工作原理是,每个节点在一个…