这篇文章主要介绍“如何实现ass/ssa批量转换srt的脚本”,在日常操作中,相信很多人在如何实现ass/ssa批量转换srt的脚本问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何实现ass/ssa批量转换srt的脚本”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

iPad中的OPlayer只支持srt格式的字幕,而动画一般使用的是ass/ssa格式的字幕,所以需要将ass/ssa批量转换srt。
Google了一下,在《ass2srt[ass/ssa批量转换srt]》中找到一个ass2srt.wsf脚本,内容如下:
Windows 脚本 (.wsf) 文件是一个包含可扩展标记语言(XML)代码的文本文档,它结合了若干功能,提高了脚本编程的灵活性。由于 Windows 脚本文件并不局限于特定的引擎,它们能够包含所有遵循 ActiveX(R)规范的脚本引擎的脚本。
上面的脚本文件同时包含了JScript和VBScript的代码。问题在于,有这个必要么?单纯用JScript或者VBScript都可以实现,为什么要混用不同的语言呢?JScript在代码中的作用仅仅是正则表达式而已,一个合理的推断是作者不会VBScript的正则表达式,或者嫌VBScript的正则表达式太麻烦。就算撇开语言混杂不说,上面代码的风格实在是不敢恭维。
下面是我写的ass2srt.vbs,也许比上面的代码好一点点罢。
Option Explicit
Const Encoding = "unicode" 'assume unicode
'Author: Demon
'Website: /tupian/20230522/demon.tw
'Date: 2012/6/16
Dim shell, folder, fso, ext, i, args
Set shell = CreateObject("Shell.Application")
Set fso = CreateObject("scripting.filesystemobject")
Set args = WScript.Arguments
If args.Count = 0 Then
Set folder = shell.BrowseForFolder(0, "请选择ASS字幕所在的文件夹", 1)
If folder Is Nothing Then WScript.Quit
For Each i In fso.GetFolder(folder.Self.Path).Files
ext = LCase(fso.GetExtensionName(i.Path))
If ext = "ass" Or ext = "ssa" Then
ASS2SRT i.Path, Encoding
End If
Next
Else
For i = 0 To args.Count - 1
ASS2SRT args(i), Encoding
Next
End If
MsgBox CInt(i) & " file(s) Converted!", vbInformation
Function ASS2SRT(path, charset)
Const adTypeText = 2
Const adReadLine = -2
Const adSaveCreateOverWrite = 2
Dim ass, srt, re, str, arr, s, e, t, i
Set ass = CreateObject("ADODB.Stream")
Set srt = CreateObject("ADODB.Stream")
Set re = New RegExp
re.Global = True
re.IgnoreCase = True
re.Pattern = "\{.*?\}"
ass.Type = adTypeText
ass.Charset = charset
ass.Open
ass.LoadFromFile path
srt.Type = adTypeText
srt.Charset = "utf-8"
srt.Open
i = 0
Do Until ass.EOS
str = ass.ReadText(adReadLine)
If Left(str, 8) = "Dialogue" Then
i = i + 1
arr = Split(str, ",", 10)
s = "0" & arr(1) & "0" 'Start time
e = "0" & arr(2) & "0" 'End time
t = arr(9) 'Text
s = Replace(s, ".", ",")
e = Replace(e, ".", ",")
t = re.Replace(t, "")
t = Replace(t, "\n", vbCrLf)
t = Replace(t, "\N", vbCrLf)
srt.WriteText i & vbCrLf
srt.WriteText s & " --> " & e & vbCrLf
srt.WriteText t & vbCrLf & vbCrLf
End If
Loop
path = Left(path, Len(path) - 3) & "srt"
srt.SaveToFile path, adSaveCreateOverWrite
End Function把上面代码保存为ass2srt.vbs,然后将需要转换的ass/ssa字幕拖动到ass2srt.vbs脚本上即可。如果需要批量转换的ass/ssa字幕比较多,可以先把它们放到同一个文件夹里,然后直接双击运行ass2srt.vbs,选择字幕所在的文件夹即可。
到此,关于“如何实现ass/ssa批量转换srt的脚本”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!
名称栏目:如何实现ass/ssa批量转换srt的脚本-创新互联
网页网址:http://www.scyingshan.cn/article/dcigsp.html


咨询
建站咨询
