waecy 发表于 2025-5-22 22:47:09

【懒人必备】✨自动匹配视频名&字幕批量改名+样式统一+简繁转换三件套✨

本帖最后由 waecy 于 2025-5-26 07:20 编辑

首先感谢这些年,坛友们发布/推荐不少实用工具,提高了不少效率

但随着多人修改字幕,版本越来越多…
有的时候强迫症喜欢全部下载对比
批量字幕修改/多目录不同字幕格式命名/自动判断简繁需求越来越频繁
用第三方工具或编辑器正则替换,不同修改版本对比一遍,重命名一遍,修改样式一遍,几个小时过去了…

一直以来这三大批量工具没有现成的轮子,只能自己造,花了几天成功测试成功,直接发布给大家提升效率


使用PowerShell写的, 本来想用bat写, 结果BUG越来越多❌,放弃了,但可以用bat直接套用ps1用


虽然打包exe发布会更好, 但考虑了下,还是放源码版,里面置顶全局常量, 方便自定义正则,替换文本,样式,方便后期维护, 让坛友都能自定义最强一套, 毕竟每人有自己喜爱字体样式,没必要按我的来
能够一键命名/简繁/字幕处理脚本

乛ᴗ乛相信论坛不少编程大佬,都已经有自用的版本python.C#,C+,Java造轮了,有更好的可以推荐

测试环境
Windows 10 专业版 22H2
PowerShell v5.1.19041.5848


目前只在本地系统测试过,坛友可以自行测试版本


分别起名为
✅ 1.zSubRen重名器
✅ 2.zSubCC转换器
✅ 3.zSubTC转换器/zSubAC转换器



zSubRen重名器介绍


1.自动把视频目录下,所有子目录包含字幕文件名并且集数相同的改成和视频文件一样的名字

2.能识别各种常见视频格式(mp4/mkv/avi等)和字幕格式(ass/srt等)

3.通过集数自动匹配,比如把"第01集.ass"改成"视频01.mp4"对应的字幕名(通过正则匹配, 支持 01 - 01等格式,如果有没有的文件格式,可以全局变量后续添加)

4.可以跳过特定文件夹(比如SPs文件夹,可以自定义添加过滤)

5.可选生成操作日志,记录改了哪些文件,自己选择是否开启





zSubCC转换器介绍

1.专门处理ASS, SSA可编辑字幕文件

2.自动统一字幕样式(字体、大小、位置等)

3.适配不同视频分辨率(从480p到1080p都能调)

4.自动删除不需要的字幕(比如日文字幕)

5.保持原文件编码不变,不会乱码

6.支持批量处理整个文件夹所有混合格式字幕

7.字幕子集化字体更改引用真实字体名,包括行号样式\fnxxxx

8. 自定义全局替换词典,可
替换词 = 替换为
禁止相同替换词出现相同的,会导致错误,简体和繁体可视为不同替换词

9. ""、“”、‘’ 、『』 批量替换为「」格式




ZSubTC转换器介绍

1.简繁字幕互相转换(简体转繁体或繁体转简体)

3.支持ass/srt/ssa三种字幕格式

4.自动识别内容该转简体还是繁体

5.跳过特殊内容(比如OP/ED字幕不转换)

6.保持原文件编码,不会乱码

7.可以一键处理整个文件夹



以前发帖对比过
GUI第三方工具优先建议用「繁化姬」
但如果API有时维护或无法使用时情况下
可用本地「ConvertZ」,转换最快,但是缺点就是不支持正则.「」转换"",强迫症实在忍不了,之前用EmEditor 正则批量替换,现在有这个方便多了





PS: 可以下载Ditto这个剪切板增强第三方软件,把这三个文件单独复制,置顶,然后属性设置三个独立全局快捷键,以后要处理那个目录下,直接按快捷键自动复制到目录下一键处理



※ 已把测试字幕文件和ps1放压缩包,支持特殊路径运行,坛友可自行下载测试…






再补充个批量提取MKV的第三方工具的,这款知名度低, 但实用度高, 论坛没多少人提起过, 适合提取多个WebRip的MKV字幕/视频/音频等


zSubCC转换器v0.6【新增自定义替换词典,可以按自己需求添加】


可自行添加替换词典,但不能重复
$GLOBAL_REPLACE_DICT = @{
    "三溫暖" = "桑拿"
    # 可以继续添加其他替换规则...
    # "原词" = "替换词"
}

不能
原词=1
原词=2
这样会报错

自定义全局样式,这个坛友选自己喜欢字幕组的样式,或者自己用Aegisub设置完样式后生成ass,直接复制对应的就好
$styleRules = @{
    '1920x1080' = @{
      # 这里定义字幕默认预设分辨率样式
      # 不区分大小写,Sub-CN已经包含sub-cn,不要重复填写相同样式,不然会报错
      'Sub-CN'= '方正准圆_GBK,63,&HFFFFFF,&H000000,&H000000,&H000000,1,0,0,0,100,100,1,0,1,1,1,2,10,10,20,1'
      'Default' = '方正准圆_GBK,63,&HFFFFFF,&H000000,&H000000,&H000000,1,0,0,0,100,100,1,0,1,1,1,2,10,10,20,1'
    }
    '1280x720' = @{
      'Sub-CN'= '方正准圆_GBK,43,&H00FFFFFF,&H00000000,&H00000000,&H00000000,-1,0,0,0,100,100,1,0,1,1,0,2,10,10,15,1'
      'Default' = '方正准圆_GBK,43,&H00FFFFFF,&H00000000,&H00000000,&H00000000,-1,0,0,0,100,100,1,0,1,1,0,2,10,10,15,1'
    }
    '720x480' = @{
      'Sub-CN'= '方正准圆_GBK,28,&H00FFFFFF,&H00000000,&H00000000,&H00000000,-1,0,0,0,100,100,1,0,1,1,0,2,10,10,10,1'
      'Default' = '方正准圆_GBK,28,&H00FFFFFF,&H00000000,&H00000000,&H00000000,-1,0,0,0,100,100,1,0,1,1,0,2,10,10,10,1'
    }
    '718x476' = @{
      'Sub-CN'= '方正准圆_GBK,28,&H00FFFFFF,&H00000000,&H00000000,&H00000000,-1,0,0,0,100,100,1,0,1,1,0,2,10,10,10,1'
      'Default' = '方正准圆_GBK,28,&H00FFFFFF,&H00000000,&H00000000,&H00000000,-1,0,0,0,100,100,1,0,1,1,0,2,10,10,10,1'
    }
    '640x360' = @{
      'Sub-CN'= '方正准圆_GBK,22,&H00FFFFFF,&H00000000,&H00000000,&H00000000,-1,0,0,0,100,100,1,0,1,1,0,2,10,10,6,1'
      'Default' = '方正准圆_GBK,22,&H00FFFFFF,&H00000000,&H00000000,&H00000000,-1,0,0,0,100,100,1,0,1,1,0,2,10,10,6,1'
    }
    '480x272' = @{
      'Sub-CN'= '方正准圆_GBK,16,&H00FFFFFF,&H00000000,&H00000000,&H00000000,-1,0,0,0,100,100,1,0,1,1,0,2,10,10,5,1'
      'Default' = '方正准圆_GBK,16,&H00FFFFFF,&H00000000,&H00000000,&H00000000,-1,0,0,0,100,100,1,0,1,1,0,2,10,10,5,1
    }
}

zSubCC转换器v0.7【新增批量替换""、“”、‘’ 、『』→ 「」,不影响全局词典】


流程图:




zSubCC转换器v0.8【新增删除ass,ssa开头{tag数字标签}】


专门处理字幕开头的行内样式,为了不影响全局样式,可以自定义删除,暂时不需要这功能,可以$RemoveStartTagsEnabled =0来禁用
# 新增:控制删除开头标签的配置
$RemoveStartTags = "blur|bord|shad"# 要删除的起始标签,用|分隔多个标签类型
$RemoveStartTagsEnabled = 1# 0=禁用此功能,1=启用


修改前
Dialogue: 0,0:00:02.00,0:00:05.23,Default,,0,0,0,,{\blur2}两千年前 神话的时代
Dialogue: 0,0:00:05.85,0:00:10.58,Default,,0,0,0,,{\blur2}有一位灭亡了人类国度 烧毁了精灵之森
替换后
Dialogue: 0,0:00:02.00,0:00:05.23,Default,,0,0,0,,两千年前 神话的时代
Dialogue: 0,0:00:05.85,0:00:10.58,Default,,0,0,0,,有一位灭亡了人类国度 烧毁了精灵之森




lisbt 发表于 2025-5-23 00:09:45

tmdtmdtmdqq 发表于 2025-5-23 12:06:30

看了一下代码,有两个功能使用时候要注意:
1. 分辨率调整不是简单调一下PlayResX/PlayResY和Style就行的,要把字幕里所有位置信息都要调整,\bord、\blur等都要根据参数ScaledBorderAndShadow判断是否调整。
2. 繁简转化直接暴力单字替换,这样做不可取,会导致错字太多。建议使用繁化姬,特别是用对应的地区化 中国化、香港化、台湾化 进行转换。繁化姬会分析句子成分根据词语去做转化,而且地区化会把一些词语转为对应地区的常用说法。大部分情况都能正确进行转换。


原文繁化姬香港化繁化姬台湾化
蒜头发芽了
你的头发长长了
桑拿蒜頭發芽了
你的頭髮長長了
桑拿蒜頭發芽了
你的頭髮長長了
三溫暖
繁化姬再次中国化蒜头发芽了
你的头发长长了
桑拿蒜头发芽了
你的头发长长了
三温暖 *

* 最后将“三溫暖”再次进行中国化后,并没有转化为“桑拿”,想想这也是能理解的。因为转换前并不知道这是哪种地区的语言文字,譬如放在香港的语言中,并没有“三溫暖”一词,那么就应该直接转换为“三温暖”。想替换这种需要进行 自訂取代(自定义取代)。


waecy 发表于 2025-5-23 12:32:56

本帖最后由 waecy 于 2025-5-27 00:58 编辑

tmdtmdtmdqq 发表于 2025-5-23 12:06
看了一下代码,有两个功能使用时候要注意:
1. 分辨率调整不是简单调一下PlayResX/PlayResY和Style就行的, ...
感谢备注,只是根据目前需求, 先简单实现了功能,后期想到什么再加,翻简转换那个PowerShell不支持相同键值对,因此两边必须唯一,遇到不同的台繁和香繁单字就没辙了

但可以用另一个处理脚本处理
两字及以上关键词来实现批量替换$GLOBAL_REPLACE_DICT = @{
    # 台湾繁体字
      "三溫暖" = "桑拿"
      "菁英"="精英"
      "欸"="诶"
      "夥"="伙"
      "祕"="秘"
      "拚"="拼"
      "牠"="它"
      "妳"="你"
      "浏海"="刘海"
      "拚命"="拼命"
      "网路"="网络"
      "资讯"="情报"

      # 香港繁体(港繁)→ 简体中文
      "差唔多" = "差不多"
      "唔该" = "谢谢"
      "唔係" = "不是"
      "落雨" = "下雨"
      "的士" = "出租车"
      "飛機" = "飞机"
      "電郵" = "邮件"
      "入面" = "里面"
      "出面" = "外面"
      "靚" = "漂亮"
      "核突" = "恶心"
      "潮濕" = "潮湿"
      "滾水" = "开水"
      "雪糕" = "冰激凌"
      "朱古力" = "巧克力"
      "忌廉" = "奶油"
      "茄汁" = "番茄酱"
      "雲呢拿" = "香草"
      "芝士" = "奶酪"
      "甜品" = "甜点"
      "宵夜" = "夜宵"
      "早茶" = "早茶"
      "腸粉" = "肠粉"
      "雲吞" = "馄饨"
      "餛飩" = "馄饨"
      "菠蘿油" = "菠萝油条"
      "西多士" = "吐司夹心面包"
      "撈丁" = "捞面"
      "燒味" = "烧味"
      "叉燒" = "叉烧"

      # 简体
      "三温暖" = "桑拿"



}这样必须左侧「需替换词」唯一就行,右侧「替换词」可以相同
左侧繁体/简体「需替换词」≠「相同替换词」
所以可以这样写
"三溫暖"="桑拿"
"三温暖"="桑拿"


PS: 行内样式目前只能修改固定格式,特效字幕都是行内样式,但凡删错了会导致整体字幕无法正常显示,因此不打算直接删除,必须符合规则才行,还有pos没有统一性的难题…



页: [1]
查看完整版本: 【懒人必备】✨自动匹配视频名&字幕批量改名+样式统一+简繁转换三件套✨