python应用:vtt字幕转srt字幕

Python 专栏收录该内容
2 篇文章 0 订阅

文章为原创手写,如需转发请贴上原文地址,谢谢!

缘由

今天下载了一堆mp4视频,但是字幕是vtt格式的,发现这是web html5比较常用的字幕格式,本地播放器的话用的还是srt多一点。两个文件打开对比了下发现差别也不是很大,为了后面定制化地适应新的需求,决定写一个脚本:

具体操作

看下vtt的文件:

在这里插入图片描述

看下srt的文件

在这里插入图片描述

  • vtt文件是WEBVTT开头,srt没有
  • srt没个段落开头都有一个序号,vtt没有
  • srt以",“为分隔符,vtt以”.“为分隔符。关于这点不知道两个格式的标准也在进化,我刚开始并没有替换”.“也能使用。srt用”."作为分隔符也没有问题。
import os


def traverseFolder(targetFolder):
    if(targetFolder[-1]==os.path.sep):
        targetFolder=targetFolder[0:-1]
    for root, dirs, files in os.walk(targetFolder):
        for oneFile in files:
            vtt2srt(root+os.path.sep+oneFile)

def vtt2srt(filePath):
    fileSplitName=os.path.splitext(filePath)
    if(fileSplitName[1]==".vtt"):
        print("Processing with file:    "+filePath)
        with open(filePath,"r",encoding="utf-8") as fin:
            fileContent=fin.readlines()
            lineNum=2
            fileMaxLineNum=len(fileContent)
            with open(fileSplitName[0]+".srt","w",encoding="gbk") as fout:
                fout.write("1\n")
                for i in range(2,fileMaxLineNum):
                    fout.write(fileContent[i].replace(".",","))
                    if(fileContent[i].strip()=="" and i+1<fileMaxLineNum and fileContent[i+1].strip()!=""):
                        fout.write(str(lineNum)+"\n")
                        lineNum+=1
            
                    
targetFolder=input("请输入一个目录:")
traverseFolder(targetFolder)

代码简要说明

traverseFolder函数是遍历文件夹获得所有文件的。vtt2srt函数是做具体处理的。

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值