python-计算文件夹里面的视频总时间

为什么想做这个

  • 有时候学习的时候,离线看视频,想知道总视频的时间,从而盘算好每天看多少个视频,或者每天看多久。

代码展示

  • 先安装moviepy依赖
pip install moviepy
  • 代码
import os
from moviepy.editor import VideoFileClip as vfc
import time


def folder_movie_files(folder: str) -> list[str]:  # 一个文件夹里面有多少视频文件
    movie_type = ('.flv', '.mp4', '.avi')   # 这里代表你需要计算视频的后缀
    file_list = []
    for a, b, c in os.walk(folder):
        for filename in c:
            if filename.endswith(movie_type):
                file_path = os.path.join(a, filename)
                file_list.append(file_path)
    print(folder, ": 有", len(file_list), "个视频文件")
    return file_list


def single_movie_time(movie_path: str) -> int:  # 计算单个视频的时间
    time = 0
    try:
        movie = vfc(movie_path)
        # print(movie_path, "正在计算...")
        time += movie.duration
        movie.close()
    except:
        print(movie_path, '该文件出现异常')
    return time


def folders_movie_times(folders: list[str]) -> int:  # 一个文件夹列表中的movie有多少页
    print("正在计算...")
    movie_files = []
    for folder in folders:
        movie_files += folder_movie_files(folder)
    time = 0
    movie_files_len = len(movie_files)
    count = 0
    for movie_path in movie_files:
        time += single_movie_time(movie_path)
        count += 1
        print("已完成%.2f" % (count * 100 / movie_files_len), "%")
    return time


if __name__ == '__main__':
    time_start = time.time()
    path = ["目录"]
    time_count = folders_movie_times(path)
    print("总视频时间:", round(time_count, 2), "秒")
    print("总视频时间:", round(time_count / 60, 2), "分钟")
    print("总视频时间:", round(time_count / 60 / 60, 2), "小时")
    time_end = time.time()
    print("程序运行时间:", round(time_end - time_start, 2), "秒")
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值