/SubRenamer

🎞 字幕文件批量改名和自动调轴工具 | Batch rename subtitle files to match video names with one-click.

Primary LanguageC#GNU General Public License v2.0GPL-2.0

SubRenamer

🎞 字幕文件批量改名工具

A Tool for Batch Rename Subtitle Files to Match Video Names with One Click.

(Read this in other languages: English)

原因? 如果视频和字幕文件名一致,任何视频播放器都可以自动载入字幕。

目的? 重命名外挂字幕文件名,使之与视频文件名对应。

对比普通批量改名软件,有什么区别?

SubRenamer 专注于字幕文件改名,简单易用。

对于大多数视频与字幕文件,您仅需将其拖入程序,即可被自动精准地识别,一键改名,省去了普通改名软件较为繁杂的设置操作。

如何拥有 SubRenamer?

点击以下链接下载最新版本:

Windows (x86) macOS (M1) Linux (x86)

可在 Release 页面找到历史版本和更新日志。

如果下载速度慢,可以尝试网盘下载:蓝奏云 (密码: 233)

使用教程

【B站】「追番神器」真 · 番剧字幕一键重命名 自动化字幕文件批量改名工具程序

【小众软件】SubRenamer – 字幕批量重命名,自动匹配视频文件与字幕文件[Windows]

特性

  • 自动匹配:自动识别算法,一键匹配
  • 拖拽导入:拖拽快速导入文件及文件夹
  • 多语言匹配:支持视频字幕多语言匹配(一对多映射)
  • 多语言筛选:导入前自动检测并筛选指定语言的字幕
  • 多匹配规则:对于复杂的文件名格式,支持手动匹配
  • 手动匹配编辑器:自定义规则,支持简单通配符
  • 正则表达式编辑器:包含正则表达式匹配测试工具
  • 匹配微调:支持对匹配结果进行微调
  • 改名命令:右键快速复制 Linux 改名命令到剪贴板
  • 字幕备份:改名前自动备份字幕文件
  • 追加后缀:支持在文件扩展名前添加自定义后缀
  • 文件识别:通过文件扩展名自动区分视频和字幕,支持自定义
  • 快捷键:支持快捷键操作,提高效率
  • 夜间模式:支持夜间模式,跟随系统切换
  • 窗口置顶:支持窗口置顶,方便操作
  • 跨平台:支持 Windows、macOS、Linux
  • 体积小:仅 15MB 左右

Important

重制说明:SubRenamer 第一版于 2019 年发布,当时使用 WinForm 进行开发,仅支持 Windows 平台。2024 年 SubRenamer 完成重制发布 v2.0 版本,采用全新技术栈 AvaloniaUI + .NET 8 开发,支持跨平台,可以在 Windows、macOS、Linux 上原生运行(不是 Electron.js)。

匹配编辑 匹配规则自定义
手动匹配规则编辑器 正则表达式规则编辑器
夜间模式 字幕语言筛选
右键菜单 快捷键支持 设置界面

拖拽导入文件

2024-04-13.14.56.44.webm

改名说明

拖入的视频和字幕文件如果处于不同的文件夹内,执行改名只会将字幕文件复制到视频所在的文件夹中,不会改动原始字幕文件,所以无需备份。

反之,如果视频和字幕文件名处于相同的文件夹内,执行改名会直接修改字幕文件名(设置可以勾选启用备份,将原始字幕文件备份到 SubBackup 目录内)。

改名后的字幕文件名将与视频文件名一致。

算法原理

自动匹配模式

自动匹配模式通过比对文件名之间的差异部分 (diff) 来确定集数 (extract),并根据集数自动关联视频文件和字幕文件 (mapping),以实现自动匹配。

为实施自动匹配,需导入至少两个文件名格式一致的视频文件和两个字幕文件。

手动匹配模式

自动匹配模式可能在复杂的文件名格式下失效,此时可切换至手动匹配模式,手动模式允许你自定义规则(支持简单通配符和正则表达式)。程序提供一个简单的编辑器,以便你可以快速地编写匹配规则。

用户故事

请听 ABCDE 的故事(🌫️

(缩减版) 小A下载了一部新更的生肉番,又从字幕网站下载到了一套字幕文件,生肉番的 视频文件名 常常和 字幕文件名 不一致,看番时需要手动选定字幕,下次打开又得重新选定。小A拥有了 SubRenamer,从此改名交给他来做,终于可以安安心心看番啦。

(探究版) 小B今天下载了一部番剧,小B因不会他国语言从而需要找寻一套字幕。小B下载到了字幕,但因 字幕文件名 与 视频文件名 不相对应,播放器无法自动载入字幕文件,小B因每次都要手动选择字幕文件而烦恼万分。最终,小B实在受不鸟了,毅然决然决定修改文件名...... 所以问题来了,小B如何才能快速地修改字幕文件名,而不是一个一个慢慢地手动修改呢???

(激情版) 小C热爱学习,小C下载了一套100000000集的学习视频,提升自我人生价值的大好机会到了,准备今天晚上就开淦(darkbubi),可到了晚上,小C打开下载好的视频时却突然想起,自己什么也(bing)听(bu)不(xiang)懂(xue)(此刻的小C对于学习的热情瞬间熄灭)。可是突然!小C发现了 SubRenamer,下载一套字幕后,修改按钮一敲,100000000集的学习视频字幕文件顺利加载,小C对于学习的热情死(bu)灰(ke)复(neng)燃(di)

(慵懒版) 小D拥有了 SubRenamer 后,字幕文件改名的操作全交给 SubRenamer,省去了大量时间可以留给睡觉。

(蜜汁版) 小E . .o. 0。.O . 。o.

(稽智版) 小F选择重新下载内挂字幕的番剧 lol

FAQ

macOS 无法打开,提示已损坏

网上可以找到很多解决的方法,这里提供一个方法,在终端中输入以下命令:

sudo xattr -d com.apple.quarantine /Applications/SubRenamer.app

原因是没有经过苹果开发者签名,macOS 会提示已损坏,而注册开发者账号需要 99 美元/年。

在 Linux Wayland 桌面环境没有缩放?

这是一个上游问题,AvaloniaUI 在 Wayland 桌面环境下缩放比例可能不准确,导致文字很小,可以在启动时设置环境变量手动设置缩放比例。

AVALONIA_SCREEN_SCALE_FACTORS="eDP-1=2;" ./SubRenamer

多语言翻译 (I18n)

SubRenamer 支持多语言切换,目前支持的语言有:

  • English
  • 简体中文 (Simplified Chinese)
  • 繁體中文 (Traditional Chinese)
  • 日本語 (Japanese)

语言文件位于:SubRenamer/Assets/Lang 目录内,可以通过编辑 XAML 文件来添加或完善语言翻译。我们期待你的参与,欢迎提交 PR 添加更多语言翻译。

有 BUG?

可在 issues 页 反馈。

Stargazers over time

Stargazers over time

编译说明

建议使用 JetBrains Rider 或 Visual Studio 2022 打开项目。

Prerequisites

Windows

  • Visual Studio 2022, including .NET 8 & Desktop development with C++ workload.
  • Alternatively, you can install JetBrains Rider to build the project. (Recommended).

Fedora (36+)

sudo dnf group install "C Development Tools and Libraries" "Development Tools"

sudo dnf install dotnet-sdk-8.0 libicu-devel cmake zlib-devel -y

Ubuntu (20.04+)

sudo apt-get install dotnet-sdk-8.0 libicu-dev cmake zlib1g-dev -y

macOS (12+)

# Install Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Install xcode command line tools
xcode-select --install

# Install dependencies
brew install dotnet-sdk8 icu4c cmake zlib

单元测试

dotnet test SubRenamer.Tests --verbosity normal

单元测试代码位于 SubRenamer.Tests 目录内,推荐使用 Rider 内置的可视化工具执行测试和查看测试结果。

测试数据

TopLevelTests.json 文件存放了测试用例数据,包含各种各样的字幕和视频文件名列表用于测试匹配算法,欢迎提交 PR 添加更多测试用例,修改文件后执行单元测试命令即可查看测试结果。

每次代码提交将通过 GitHub Actions 自动执行单元测试,确保代码质量。

构建单文件

在 Win 平台,为了构建出单个包含静态链接依赖库的 exe 文件(无额外的动态链接 dll 依赖库文件),需要手动把 这几个 dll 文件 下载放到 native 目录内。然后添加环境变量 ENABLE_NATIVE_LIBS=true 再执行编译。

Publish with NativeAOT

dotnet publish -r <RID> -c Release

# Build for Windows example
dotnet publish -r win-x64 -c Release

Builder the installer with NSIS

NSIS installer ~13MB size

pwsh ./publish.ps1

if you builder the installer with nsis, you can ignore upx compression, so you can get better startup performance.

技术实现

  • AOT 编译,单文件发布
  • 多平台打包及分发
  • 跨平台适配处理
  • IoC 容器,依赖注入,MVVM,LINQ
  • JSON 源生成器
  • 多线程,纤程
  • 全局异常捕获
  • 错误日志反馈
  • JSON 配置管理
  • 版本管理,升级检查
  • 用量统计
  • GitHub API
  • GitHub Actions CI/CD
  • 单元测试
  • 多语言,国际化
  • HiDPI 支持

开源协议

本项目采用 GPL-2.0 协议开源,详见 LICENSE 文件。