TA的每日心情 | 慵懒 20 小时前 |
---|
签到天数: 1063 天 [LV.10]以坛为家III
星辰大海
- 积分
- 1357598
|
本帖最后由 tmdtmdtmdqq 于 2024-11-16 12:41 编辑
针对srt首次转为ass的官中字幕(被他人添加过样式/屏幕字的ass官中字幕不可用以下规则!(替换比较暴力,该过的字幕容易误判而导致改错))
因地域语言差异,以下某些规则可能只适用于简体文字的语言习惯。
欢迎探讨和补充更多的官中字幕的词句通用修改思路。
2024/10/27 Init v1.0
2024/11/13 Update v1.1: 增加省略号的替换规则,增加提示中显示aegisub行号功能
2024/11/14 Update v1.2: 增加单行字幕字数超长提示(默认30个utf-8字),
增加\N两侧没有特殊符号,则把\N直接删掉的规则【sommio提议】(默认不启用)
2024/11/16 Update v1.3: 脚本中的换行符换成\n适配linux系统,
增加日文的直角引号符替换成中文的直角引号符【sommio提议】,
增加句子两端的英文半角括号替换成中文括号的规则【sommio提议】(默认不启用)
增加句中存在括号时的提示
以下均为正则表达式 | 序号 | 类型 | 查找目标(已正则转义) | 替换为 | 备注 | 01 | 替换 | [‧.・] | · | 间隔号(人名中间的点号) | 02 | 替换 | [!!] | ! | 感叹号替换为英文半角的。或替换为中文字符“!”,反正统一观感就行 | 03 | 替换 | [\??] | ? | 疑问号替换为英文半角的。或替换为中文字符“?”,反正统一观感就行 | 04 | 替换 | !\?|!?|\?!|?! | ?! | 疑问感叹号(日文用!?,而中文用?!)替换为英文半角的。或替换为中文字符“?!”,反正统一观感就行 | 05 | 替换 | ... | …
| 三个英文句号替换成半个中文省略号 | 06 | 替换 | 「 | 「
| 日文的左直角引号替换成中文的 | 07 | 替换 | 」 | 」
| 日文的右直角引号替换成中文的 | 08 | 替换 多次
| (,,0,0,0,,[^,,\r\n]*?)[,,] | $1 | 去除句中逗号。如果句中逗号后面没有空格,则替换为$1后面加个空格,即“$1 ”(不含双引号,后面有空格)。要替换多次,直至找不到为止 | 09 | 替换 多次 | (,,0,0,0,,[^"\r\n]*?)"([^"\r\n]+)" | $1「$2」 | 英文双引号""替换为「」。要替换多次,直至找不到为止 | 10 | 替换 多次 | (,,0,0,0,,[^“\r\n]*?)“([^”\r\n]+)”
| $1「$2」 | 中文双引号“”替换为「」。要替换多次,直至找不到为止 | 11 | 查找 多次 | \\N | \N为ass字幕的换行符,一般替换成空格或分割成两行不同时间的字幕或直接删掉变成一行 |
| 12 | 查找 多次 | [耶啦欸诶] | 根据句意去除/替换台湾腔语气词 耶、啦、欸、诶 为 啊、吧、呀 之类的 |
| 13 | 查找 多次 | 怎样 | 看情况替换成 怎么回事/什么情况 |
| 14 | 查找 多次 | 满 | 看情况替换成 挺/蛮/颇 |
| 15 | 查找 多次 | 是说
| 看情况替换成 话说 |
| 16 | 查找 多次 | 没差 | 看情况替换成 没所谓/都可以/差不多 |
|
写了个python脚本按上面规则简单处理了一下,能将.srt文件转换为.ass文件输出,会删除繁化姬行备注
- python <official_subtitle_processor.py路径> <字幕文件/目录1> <字幕文件/目录2> ... <字幕文件/目录N>
- 例:
- python "Z:\official_subtitle_processor.py" d:\1.ass z:\2.srt "c:\3 4.ass" "d:\zimu dir"
复制代码 或者用里面的脚本建立个快捷方式,直接把多个字幕/目录拖进去快捷方式图标就行
处理后的字幕后缀为 .formatted.ass,存在源字幕对应的目录下
● 不需要日志文件则将代码中的log_save_to_file变量改为False
● 程序结束时候不想按下Enter再结束则将stop_after_finished_process变量改为False
● 不需要在提示中显示aegisub行号,则将tips_show_aegisub_line_num变量改为False
● #号打头的行号是文档编辑工具(记事本之类)的行号,A打头的行号是Aegisub的行号
● 单行最大字数提示(遇到\N当两行),想修改提示的最大字数阈值,则将single_line_max_char_num变量修改为你想要的字数
● 对于默认不启用的规则,如需启用则把下面规则对应行前面的#号去掉(#号前面的空格不能删)
○ 【sommio提议】\N的两侧没有特殊符号,则把\N直接删掉,此规则默认不启用。(v1.3版代码在68行): #text = re.sub(r'(,,0,0,0,,[^\r\n]*?[^\d\s\(\)()"《》“”「」-])\\N([^\d\s\(\)()"“”「」-])', r'\1\2', text)
○【sommio提议】句子两端的英文半角括号替换成中文括号,此规则默认不启用。(v1.3版代码在70行):
#text = repeat_replace(lambda x: re.sub(r'(,,0,0,0,,(?:[^\r\n]*?\\N|))\(([^\(\r\n]+?)\)(\\N|[\r\n]|$)', r'\1(\2)\3', x), text)
● srt转成ass补充的字幕元数据信息(字体、颜色、字幕位置等),需要修改则自行修改ass_header变量
● 需要增改替换规则,则修改process_using_rules方法
● 需要增改潜在错误的查找规则,则修改grep_using_rules方法
以上这些变量和方法都定义在脚本的开头,一打开文件就能找到
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
查看全部评分
|