op200 发表于 8 小时前

Tag Replace : 功能强大的通用型 Aegisub 自动化脚本

本帖最后由 op200 于 2024-11-21 13:05 编辑

项目地址

起因(一些碎碎念):

这个脚本最初是从24年4月份开始写了,一直更新到现在,今天更新到了 2.1.4 版本

写这个脚本的原因是因为当时我决定开始学习 Aegisub 的特效,也就是使用自动化脚本生成复杂的字幕样式,于是我学习了一下 Aegisub 自带的卡拉OK模板执行器,以及找到了那个有很多特效模板的 ASS 压缩包

但是我觉得那些特效模板虽然丰富,但无法解决我99%的需求,而且这些模板中有很多bug,例如有些模板会丢失首位帧、有的动效位置错位等等各种各样的问题

正所谓自己写的代码再答辩都能看懂,但看别人代码就跟看天书一样,我决定自己写特效,而不是用模板,然后我就决定入门卡拉OK模板执行器,但我刚入门一点皮毛我就忍不了了——为啥这个脚本连判断哪些行被执行都只能用样式名判断?我本以为它能像HTML那样用类名判断

再加上网上的相关教程很少,让我的学习动力很低,于是我决定自己写一个执行器 (/≧▽≦)/

用了一上午学完了lua的基本语法之后,我就开始着手写脚本了

一开始的写了基本的功能——标签的替换、自动注释原行、insert 和 append、用 class 分类……
然后因为我想手动优化执行效率,导致代码可读性很差,把基本功能的bug 修完就花了近一周时间

后面慢慢地加入新的功能,一直更新到现在,功能已经(应该算是)基本完善了,想着可能对大家来说有点用(目前就我自己在用),所以发出来给大伙瞅瞅(


功能:

具体功能在项目的wiki里有写,很全面,但不怎么详细

对比卡拉OK模板执行器的功能,应该很多功能是没有的,不过具体哪些功能我不确定,因为我没用过那个脚本

追踪
对大部分字幕制作者来说最有用的应该是追踪功能,之前我发过帖子,在那之后我还加上了对蒙板追踪的功能,可以实现对不规则图形蒙板的追踪,具体用法是用mocha导出追踪数据,将数据写在模板行的变量里,然后对同类的执行行执行就行了,好处是可以把数据存在ass文件里,这就很开源(

匹配行
我就是因为不喜欢卡拉OK模板执行器的匹配功能才写这个脚本的,所以匹配部分我用的是类匹配,可以为每一行单独定义n个类,类有交集的行会被执行;
除了类匹配,还支持样式名和说话人匹配

插入
与卡拉OK模板执行器不同,这个脚本的插入是默认插在原行的后面的,当然也可以插在整个字幕的尾部;
还有缓存行的功能,可以先自己把字幕行存起来,然后经行复杂的处理,在丢进缓存里,然后释放缓存,行就会被插入到字幕中,这可以有效避免手动插入导致API出bug(Aegisub的API有些奇怪的bug)

其他
还有一些其他的奇奇怪怪的功能,比如颜色渐变、时域标签渐变等等,有的功能还挺好用,有的就比较多余



增加新的功能:

如果你有什么觉得好用的新功能,可以告诉我,我有空会尝试增加进去
(这代码我自己都读不懂,估计也就我自己能加功能了)


页: [1]
查看完整版本: Tag Replace : 功能强大的通用型 Aegisub 自动化脚本