字幕来源
EasySub 并行查询多个来源。单个来源失败不会丢弃其他结果,自动匹配与手动选择共享相同的安全下载和文件写入规则。
当前支持
| 来源 | 获取方式 | 使用条件 |
| OpenSubtitles | 官方 REST API,OSHash 与文件名搜索 | 需要用户自己的 API Key,默认关闭 |
| 迅雷 | HTTPS 文件名搜索与本地 CID | 无需 Token,自动匹配后会标记时间轴验证状态 |
| ASSRT | 官方搜索、详情、文件或压缩包下载 | 需要个人 32 位 Token,保存在应用偏好 |
| Shooter | 本地视频指纹 | 旧版来源,默认关闭,当前有效匹配较少 |
SubtitleBest 与 A4K 尚未接入。外部服务的可用性和账户政策可能随时变化。
配置与使用
- 在设置中启用需要的来源。迅雷和 ASSRT 默认开启;ASSRT 填写 Token 后才参与搜索。
- OpenSubtitles API Key 可从 Consumers 页面获取。Key 不写入 URL、日志或下载请求。
- ASSRT Token 可从 用户面板获取。Token 保存在应用偏好,不访问钥匙串。
- 最多设置三种字幕语言。自动下载先锁定最高可用语言,再按 ASS/SRT 偏好选择。
- 批量下载最多同时处理 8 个视频并搜索全部已启用来源;同一季会先用首集建立来源偏好,再并发处理其余集数。用户选择的 ASS/SRT 顺序始终优先,每种格式会分别沿用来源;缺少候选时自动回退。年份或季集冲突会被排除,证据不足的结果保留给手动选择。
- 关闭覆盖时,同格式的后续字幕会保存为
影片名.1.srt、影片名.2.srt 等。
匹配与隐私
- 视频不会上传。来源只接收整理后的文件名,或由本地少量文件片段计算出的哈希。
- 片名、年份与季集用于身份判断;分辨率、片源、编码和发布组只作为软评分。
- OpenSubtitles 对大于等于 128 KiB 的视频仅读取开头和结尾各 64 KiB 计算 OSHash。
- 迅雷 CID 在本地计算;指纹一致的候选拥有更高可信度。
- 自动匹配能验证元数据,但无法在下载前证明字幕时间轴完全同步。
下载安全
- 只接受当前 Provider 签发的候选,拒绝随意替换的下载引用。
- 压缩包通过系统
bsdtar 只读检查,仅提取安全路径中的 ASS/SRT 文件。
- 字幕会检查大小、编码和基本内容结构,并通过公共原子写入层保存。
- 当前不支持 SSA、VobSub、字幕正文预览或跨来源内容去重。
开发与验证
新增来源需实现 SubtitleProvider 并注册。使用可注入的 HTTPTransport 编写固定响应测试,然后运行 swift test 和 python3 Scripts/generate_project.py。
参考:OpenSubtitles REST API、OpenSubtitles OSHash、ASSRT API。