2011年1月29日星期六

EP物:用Notepad++把srt批量转换为ass

之所以会做出这种EP的事情,是因为找不到合适的批量转换工具。
一般的时轴工具只能逐个转,下了个叫“字幕转换助手”啥的工具,转出来的结果又添加了太多奇怪的东西。
于是,就产生了标题所说的解决方案了。

在这里,把步骤记录一下:
1、正则表达式模式替换^\d+$,然后删除文件开头的空行
把srt的“行号”删除

2、扩展模式替换 \r\n|
换行符换成文本中不会出现的符号,以绕开跨行处理的麻烦

3、普通模式替换 ||##
4、扩展模式替换 ##|##\r\n
再引入一个文本中不会出现的另一个分隔符#,表示真正的换行,而原来的“|”号的意义变成了“字幕台词的换行”

由于我比较小白,跨行正则表达式不会弄,于是先利用以上四步产生如此格式的行:
00:00:08,086 --> 00:00:11,756|・「I want to shine| on you」##

然后,用一个相对简单的正则表达式
5、正则表达式模式替换 (\d+:\d+:\d+),(\d\d)\d --> (\d+:\d+:\d+),(\d\d)\d|([^#]+)##Dialogue: 0,\1.\2,\3.\4,Default,,0000,0000,0000,,\5
注意:srt里,秒和毫秒的分割符是“,” ,而ass里是“.”。srt的毫秒是三位数,ass的毫秒是两位数

6、普通模式替换 |\N
此时剩下的|表示字幕的换行,因此替换为ASS语法的换行\N

搞定,最后在文件头加上ASS的style即可。

咦,说了半天,你究竟怎样批量啊,喂!
淡定淡定,没看到Notepad++的“替换所有打开文件”吗?
没错,首先,打开所有要转换的srt文件,然后依次“替换所有打开文件”来执行上述的六个步骤,搞定后“全部保存”。这就是批量了。^_^

没有评论:

发表评论