介绍:Aegisub的API接口来源于【Automation 4 Lua】脚本,而这个脚本是基于【Lua】语言写的。

一、需要输入的内容有:

script_name (脚本名,字符串) - 脚本的名称,应尽量简洁
script_description (脚本描述,字符串) - 描述该脚本可以达成什么目的,也不建议太长。
script_version (脚本版本号,字符串或数字) - 脚本的版本号
script_author (脚本作者,字符串) - 脚本作者信息

二、需要处理的内容有:

API是一个输入再输出的过程,但这个这两个过程都需要Aegisub来完成。aegisub会给一个关于subtitlesuserdata,其本质上为一个table。我们需要对这个table中的元素进行处理,再返回给aegisub。输出的内容subtitles[i]则会呈现在aegisub对应的文本框中。

固定格式:aegisub.register_macro(name, description, processing_function, validation_function, is_active_function)

每个脚本的最后都需要通过这个对象函数将处理好的数据再传回给aegisub,其中validation_function, is_active_function可以不传入。

难点1:了解subtitles对象的结构

subtitles对象的类型为userdata,可以当做一个table来使用,结构类似于:
table_userdata = {subtitles[1],subtitles[2],...,subtitles[#subtitles]},而table_userdata中每一个元素的类型还是table,需要将table的内容打印出来,方便理解和操作。

----获取table里的内容
script_name = "删除空字幕"
script_description = "删除空字幕"function clean_empty_subs(subtitles)local i = 1local linewhile(i <= #subtitles)dolocal result = {}local a = 1----对输入的table进行处理for k,v in pairs(subtitles[i]) dok = string.format("%q", k)v = string.format("%q", v)result[a] = string.format("%s[%s] = %s", '', k, v)a = a + 1end----判断字幕行,并对符合条件的进行替换if subtitles[i].text == ""thenline = subtitles[i]line.text = table.concat(result, "\n")subtitles[i] = lineendi=i+1end
endaegisub.register_macro(script_name, script_description, clean_empty_subs)

过滤之后,空白字幕行得到的结果:

[“layer”] = “0”
[“margin_b”] = “0”
[“class”] = “dialogue”
[“extra”] = “table: 0x1538c020”
[“margin_t”] = “0”
[“margin_l”] = “0”
[“style”] = “Default”
[“actor”] = “”
[“start_time”] = “0”
[“raw”] = “Dialogue: 0,0:00:00.00,0:00:05.00,Default,0,0,0,”
[“section”] = “[Events]”
[“text”] = “”
[“margin_r”] = “0”
[“comment”] = “false”
[“effect”] = “”
[“end_time”] = “5000”

难点2:了解ASS字幕的结构

ASS字幕结构参考链接:https://www.douban.com/note/658520175/

打开由aegisub保存的ass文件可知,字幕文件共分为以下四个部分:
[Script Info][Aegisub Project Garbage][V4+ Styles][Events]

但字幕文件中不是每一行都会被返回到subtitles对象,并且也会在其基础上加上一些其他的参数。经过测试,[Aegisub Project Garbage]中的都不会被反馈,[Script Info]、[V4+ Styles]、[Events]中只有以下标记的会被处理反馈。

以上述字幕文件最后一行,反馈出来的有:


需要注意几个参数:
1、class
分为infostyledialogue以及unknown,分别对应[Script Info]、[V4+ Styles]、[Events],从[‘section’]可以看出来;
2、raw
ass文件中原始的行
3、text
最基础的处理参数,直接反馈到aegisub里

【lua】Aegisub的核心API解读相关推荐

  1. 北理工操作系统实验合集 | API解读与例子

    文章目录 传送门 实验报告与源码下载 前言 进程控制API Linux getpid/getppid fork/vfork exit/_exit exec函数族 wait/waitpid pause/ ...

  2. hibernate教程--常用配置和核心API详解

    一.Hibernate的常用的配置及核心API. 1.1 Hibernate的常见配置: 1.1.1.核心配置: 核心配置有两种方式进行配置:  1)属性文件的配置: * hibernate.prop ...

  3. hibernate教程--常用配置和核心API

    一.Hibernate的常用的配置及核心API. 1.1Hibernate的常见配置: 1.1.1.核心配置: 核心配置有两种方式进行配置: 1)属性文件的配置: * hibernate.proper ...

  4. hibernate框架学习第二天:核心API、工具类、事务、查询、方言、主键生成策略等...

    核心API Configuration 描述的是一个封装所有配置信息的对象 1.加载hibernate.properties(非主流,早期) Configuration conf = new Conf ...

  5. EXT核心API详解(二)-Array/Date/Function/Number/String

    EXT核心API详解(二)-Array/Date/Function/Number/String Array类 indexOf( Object o )  Number object是否在数组中,找不到返 ...

  6. 核心API最佳实践——JDK日志分级

    核心API最佳实践--JDK日志分级 时间:2005-10-29 08:00 来源:网管之家bitsCN.com 字体:[大 中 小] 日志(Log)是什么?字典对其的解释是"对某种机器工作 ...

  7. Java核心API需要掌握的程度

    Java的核心API是非常庞大的,这给开发者来说带来了很大的方便,经常人有评论,java让程序员变傻. 但是一些内容我认为是必须掌握的,否则不可以熟练运用java,也不会使用就很难办了. 1.java ...

  8. JavaEE基础(02):Servlet核心API用法详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.核心API简介 1.Servlet执行流程 Servlet是JavaWeb的三大组件之一(Servlet.Filter.Listener) ...

  9. 鱼眼图像自监督深度估计原理分析和Omnidet核心代码解读

    作者丨苹果姐@知乎 来源丨https://zhuanlan.zhihu.com/p/508090405 编辑丨3D视觉工坊 在自动驾驶实际应用中,对相机传感器的要求之一是拥有尽可能大的视野范围,鱼眼相 ...

最新文章

  1. java-mybatis环境搭建
  2. 手机端自适应字体大小和元素宽度自适应
  3. 阿里云物模型层初始化代码实现
  4. Netflix Curator 使用 Zookeeper 编程
  5. 给销售范围组合分配定价过程
  6. 前端学习(2018)vue之电商管理系统电商系统把good_cat转换为字符串
  7. 【C语言进阶深度学习记录】三十 二维数组与二维指针
  8. ****CentOS下安装JDK1.7
  9. Java/JDK下载安装与环境配置(Windows 10 超详细的图文版教程 )
  10. 无盘工作站建立全攻略
  11. 组建BXP无盘网络 (一)
  12. 使用计算机对炼钢过程,炼钢过程计算机二级系统
  13. Arm linux开发板连接笔记本连通外网
  14. 华为matebook14摄像头无法启动问题
  15. 超过ChatGPT3达到ChatGPT4%90性能的小羊驼来了-Vicuna(校招社招必备,chatgpt风口来了赶紧学起来吧)
  16. 宝塔环境使用微软OneDrive云盘免费自动备份网站数据最佳方案!
  17. 被手机“绑架”又不能完全指望手机的柔宇科技,上市之后会是一片坦途吗?
  18. 前端PDF文件转图片方法(你值得收藏)
  19. WPF教程(二) WPF vs WinForms
  20. html5 移动端 开发工具,H5推荐:最好用的五大移动应用开发工具

热门文章

  1. Mac环境下百度网盘闪退的解决方法
  2. 水滴公司更名为水滴科技集团,王慧文担任监事
  3. pass all options of select from View to controller
  4. tensorflow特征图可视化
  5. 软件工程第1次作业:阅读教材,提五个问题
  6. ASEMI整流模块MDA300-16封装,MDA300-16大小
  7. 杂谈——TCP/IP 协议栈详解
  8. 90-什么是集成学习
  9. 2008-1-14 《软件工程》课后习题解答...
  10. 极具职场竞争力的操作系统背景知识学习笔记(Windows+Linux)