webvtt字幕转srt字幕的python程序(附改名程序)
最近写了两个比较简单的python程序,原有都是由于看公开课感觉比较费劲,一个是下载的视频无用的名字太长,另一个就是下载的vtt字幕播放器不识别,写了一个vtt转换成str字幕格式的文件
vtt to str比较简单:
大概就是打开一个vtt文件,把开头的webvtt删掉,把所有的"."替换成",",把后缀名改成srt。参考下面两个网页
http://mooc.guokr.com/post/615236/
http://blog.csdn.net/iracer/article/details/48765347
要是单纯的吧vtt改成srt。播放时的确会显示字幕,但是字幕会无视时间轴,一个劲的走,根本起不到字幕的作用。
要是一个个用记事本打开,重复的操作这些工作还是比较恶心。毕竟mooc一份时间比较短,总份数又比较多。
我的方法就是读出文件后,用split('.'),把所有的内容分割起来,再 str1+ ',' + str2 迭代起来把所有的内容拼接起来,这样完成了替换。
用str = listvtt[0][8:]的方式删掉了WEBVTT\n\n 这8个字符。最后重新建立一个同样名字的srt字幕文件
下面就是我的具体实现
#4到9行是把路径中所有的vtt文件找出来
#os.listdir(path) 返回一个内容是path所有文件名的数组
#coding = utf-8
import os
path = r"E:\folders"
vttName = [] for i in os.listdir(path):
name = i.split('.')
if name[-1] == 'vtt':
vttName.append(i) for vttname in vttName:
vtt = open(path + "\\" + vttname)
filevtt = vtt.read()
vtt.close()
#print filevtt
listvtt = filevtt.split('.')
#print listvtt
#print listvtt[0][8:]
strvtt = listvtt[0][8:]
for i in range(1 , len(listvtt) ):
strvtt = strvtt + "," + listvtt[i] #print strvtt
srtName = vttname.split('.')
srt = open(path + '\\' + srtName[0] + '.srt','w') srt.write(strvtt)
srt.close()
#listvtt[0]是vtt文件的在第一个'.'好的所有内容,由于vtt的文件格式前面为WEBVTT\n\n 正好可以删去 用了魔术数字 8
闲话不多说,其实主要的就是用到了python 的 os包中的 changename 以及python的文件读写。
changename 比较无脑,
文件读写就是把文件的内容读出来——就是读成一个str,修改这个str,并写入到文件中。
程序很简单,而且python不愧是思考问题最简单易行的方法。
changname 非常简陋:
path = 'E:\\folders'
for files in os.listdir(path):
print files
p = files.split('_')
print p
print p[-1]
oldname = path + '//' + files
newname = path + '//' + p[-1]
os.rename(oldname, newname)
这个就是根据文件名的特点,提取了最后一个也就是我想要的内容并更改名字,而且也是一次性的把文件夹里所有的文件名都改了,有点不太智能。但也够用了 :P
而且这个程序我是直接在idle 中用的,比较简单与原始
webvtt字幕转srt字幕的python程序(附改名程序)的更多相关文章
- 【Win 10 应用开发】加载外部的 srt 字幕
据说系统内置的多媒体功能支持 srt. ssa 等字幕,老周测试过几种格式的字幕均能加载. SRT 字幕是最简单的字幕结构,甚至你用记事本都能做出来,就是分为几行来写. 第一行是字幕的编号,应该是从1 ...
- [UWP小白日记-5]转换MVA学院的XML字幕为SRT
开源地址:第二版开源地址GIT 暂时用不了了,在最新的WIN10 10586.494系统上回闪退,正在酝酿第二版 O(∩_∩)O哈哈~ 新版已经完工:第二版 地方MVA上好多教程,但是微软的所有中国网 ...
- SRT字幕格式
[时间:2019-03] [状态:Open] [关键词:字幕,SRT,文件格式] 0 引言 视频文件中最简单.最常见的外挂字幕格式是SRT(SubRip Text).本人找了好久也没找到类似的标准文档 ...
- [python]用profile协助程序性能优化
转自:http://blog.csdn.net/gzlaiyonghao/article/details/1483728 本文最初发表于恋花蝶的博客http://blog.csdn.net/lanph ...
- 使用Python实现Hadoop MapReduce程序
转自:使用Python实现Hadoop MapReduce程序 英文原文:Writing an Hadoop MapReduce Program in Python 根据上面两篇文章,下面是我在自己的 ...
- [Python学习笔记][第八章Python异常处理结构与程序调试]
1/30 第八章Python异常处理结构与程序调试 异常处理 try-except结构 try: try块 except Exception: except块 try-except-else结构 tr ...
- 将Python代码嵌入C++程序进行编写
将Python代码嵌入C++程序进行编写的实例,python嵌入 把python嵌入的C++里面需要做一些步骤 安装python程序,这样才能使用python的头文件和库 在我们写的源文件中增加“Py ...
- 浅谈 Python 程序和 C 程序的整合
源地址:http://www.ibm.com/developerworks/cn/linux/l-cn-pythonandc/ 概览 Python 是一种用于快速开发软件的编程语言,它的语法比较简单, ...
- python学习1:程序元素和基本使用方法(跟随mooc学习)
程序元素: 注释,缩进,变量,常量,表达式 输入,输出,分支,循环 示例程序,温度转换程序: #TempConvert.pyval=input("请输入带温度表示符号发温度值(例如:32C) ...
随机推荐
- tcpdump命令(转载)
https://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html 简介 用简单的话来定义tcpdump,就是:dump the tra ...
- Linux系统安装(centos6.8)符破解码
1.安装 VMware VMware 是一个虚拟 PC 的软件,可以在现有的操作系统上虚拟出一个新的硬件环境,相当于模拟出一台新的 PC,我们可以在上面构造出一个或多个别的系统,以此来实现在一台机器上 ...
- [UE4]射击起点、终点的计算方法
一.射击起点,这个简单,一般是以角色的相机位置为作为射击起点,而不是枪口的位置作为起点 二.射击终点,角色朝向 * 射击距离 + 射击起点 角色朝向:单位向量 角色朝向 * 射击距离:向量长度 向量长 ...
- 使用IDEA进行Lua代码调试、自动提示、代码跳转、智能重命名
试了几个Lua IDE后,Lua Studio.Lua Glider.VS+babelua插件.Sublime都不是特别满意.直到发现了国人自创的另一个神奇工具:基于IDEA的EmmyLua插件.该插 ...
- vue 定义方法执行方法 获取数据 改变数据 执行方法传值 以及事件对象
<template> <div id="app"> <!-- <img v-bind:src='url' /> <img :src= ...
- Mybatis 系列1-环境搭建
[Mybatis 系列10-结合源码解析mybatis 执行流程] [Mybatis 系列9-强大的动态sql 语句] [Mybatis 系列8-结合源码解析select.resultMap的用法] ...
- sas基础系列(3)-表格标颜色示例
以下代码可以直接在SAS执行查看效果 ods path reset;ods path show;ods html close;options nodate;ods pdf file="Pro ...
- time_base
From:http://blog.csdn.net/supermanwg/article/details/14521869 FFMPEG的很多结构中有AVRational time_base;这样的一 ...
- 微信小程序学习笔记1--小程序的代码构成
最近打算学习一下微信小程序,看了微信公众平台的文档感觉还比较简单,就从这个方向重新找回学习的状态吧: 1.先了解一下小程序的代码构成: 创建项目后会看到四种后缀的文件: .json 后缀的 JSON ...
- java8实战:filter的简单使用
<JAVA8实战>中的例子 要实现的功能:通过Apple的color或weight属性,对List<Apple>进行筛选. 1.首先定义com.owl.entity.Apple ...