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所有文件名的數組
 1 #coding = utf-8
 2 import os
 3 path = r"E:\folders"
 4 vttName = []                                     
 5 
 6 for i in os.listdir(path):
 7     name = i.split('.')
 8     if name[-1] == 'vtt':
 9         vttName.append(i)
10 
11 for vttname in vttName:
12     vtt = open(path + "\\" + vttname)
13     filevtt = vtt.read()
14     vtt.close()
15     #print filevtt
16     listvtt = filevtt.split('.')
17     #print listvtt
18     #print listvtt[0][8:]
19     strvtt = listvtt[0][8:]
20     for i in range(1 , len(listvtt) ):
21         strvtt = strvtt + "," + listvtt[i]
22     
23     #print strvtt
24     srtName = vttname.split('.')
25     srt = open(path + '\\' + srtName[0] + '.srt','w')
26     
27     srt.write(strvtt)
28     srt.close()    
29     
30     

 

#listvtt[0]是vtt文件的在第一個'.'好的所有內容,由於vtt的文件格式前面為WEBVTT\n\n 正好可以刪去 用了魔術數字 8

 

閑話不多說,其實主要的就是用到了python 的 os包中的 changename 以及python的文件讀寫。

changename 比較無腦,

文件讀寫就是把文件的內容讀出來——就是讀成一個str,修改這個str,並寫入到文件中。

程序很簡單,而且python不愧是思考問題最簡單易行的方法。

changname 非常簡陋:

 1 path = 'E:\\folders'
 2 for files in os.listdir(path):
 3     print files
 4     p = files.split('_')
 5     print p
 6     print p[-1]
 7     oldname = path + '//' + files
 8     newname = path + '//' + p[-1]
 9     os.rename(oldname, newname)
10     

這個就是根據文件名的特點,提取了最后一個也就是我想要的內容並更改名字,而且也是一次性的把文件夾里所有的文件名都改了,有點不太智能。但也夠用了 :P

而且這個程序我是直接在idle 中用的,比較簡單與原始

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM