千家信息网

如何实现ass/ssa批量转换srt的脚本

发表于:2024-12-13 作者:千家信息网编辑
千家信息网最后更新 2024年12月13日,这篇文章主要介绍"如何实现ass/ssa批量转换srt的脚本",在日常操作中,相信很多人在如何实现ass/ssa批量转换srt的脚本问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对
千家信息网最后更新 2024年12月13日如何实现ass/ssa批量转换srt的脚本

这篇文章主要介绍"如何实现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 ExplicitConst Encoding = "unicode" 'assume unicode'Author: Demon'Website: http://demon.tw'Date: 2012/6/16Dim shell, folder, fso, ext, i, argsSet shell = CreateObject("Shell.Application")Set fso = CreateObject("scripting.filesystemobject")Set args = WScript.ArgumentsIf 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  NextElse  For i = 0 To args.Count - 1    ASS2SRT args(i), Encoding  NextEnd IfMsgBox CInt(i) & " file(s) Converted!", vbInformationFunction 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, adSaveCreateOverWriteEnd Function

把上面代码保存为ass2srt.vbs,然后将需要转换的ass/ssa字幕拖动到ass2srt.vbs脚本上即可。如果需要批量转换的ass/ssa字幕比较多,可以先把它们放到同一个文件夹里,然后直接双击运行ass2srt.vbs,选择字幕所在的文件夹即可。

到此,关于"如何实现ass/ssa批量转换srt的脚本"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

脚本 代码 字幕 文件 学习 文件夹 正则 表达式 语言 引擎 所在 更多 格式 问题 面的 utf-8 帮助 选择 不同 实用 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 荣耀10手机显示服务器拒绝连接 用户对服务器配置要求 太和县网络安全 每个国家最主要的服务器 公安网络安全专业好吗 i型延伸网络安全防护设备 护苗青少年网络安全课公共号 云服务器里可以处理数据吗 网络安全百度云视频 综述类文章一般在哪个数据库 数据库的核心操作是 塔式服务器电源可以修复吗 重庆互联网 圣灵科技 燕塞湖服务器咋样 企业网络安全问题论文题目 低年级小学网络安全 内网访问服务器数据库速度慢 移动互联网创业者服务器怎么选 电极材料数据库 狠抓网络安全责任落实要怎么 决策支持系统软件开发工具 云智能网络安全预警仪升级 济南星飞网络技术有限公司 回拨软件开发 华为企业代理服务器 杨浦区软件开发系统 河南中专软件开发单招学校 网络安全渗透漏洞扫描 南京app软件开发开发公司 郧西县天气预报软件开发
0