5.0 KiB
5.0 KiB
补字幕(2026-10-03 定)
参考 MoviePilot 插件「海拉鲁字幕大师」(ifsherlock/MoviePilot-Plugins plugins.v3/subtitlemanualupload 1.2.6)。本项目只取手动上传和在线搜索;调轴、AI 翻译联动、入库后自动补字幕不做。自动补字幕以后接进我们自己的工作流(整理完成、订阅缺字幕、智能体调用),复用本模块的能力,不照插件的事件队列做。
拆分
| 层面 | 放在哪 |
|---|---|
| 字幕站的登记、代理、限流、健康、浏览器会话 | 复用站点体系:新站点类型「字幕站」(site.kind = subtitle),站点页单列一组,添加站点时选「字幕站」 |
| 解析、配对、写入、历史、在线搜索与下载 | 新模块 subtitles(server)+ packages/domain/src/subtitles(纯函数)+ packages/adapters/src/subtitles(SubHD / 字幕库) |
| 入口 | 作品页「补字幕」:上传 / 在线搜索 → 预览配对 → 写入;同页看历史、撤销 |
写入规则(用户确认)
- 写在视频同目录,
视频主干名 + 语言后缀 + 扩展名;语言后缀沿用整理规则sidecarLanguageSuffix(.chi.zh-cn/.zh-tw/.eng/.ja/.ko)。 - 同名字幕已存在:先备份到数据目录(不在媒体库里留
.bak),再临时文件 + 改名原子写入。 - 写入后登记为字幕资产(
media_asset.kind = subtitle,位置sidecar_of_location_id指向视频),记一条历史;撤销 = 删掉写入的文件,有备份就还原。 - 只写进作品在媒体库里的视频所在目录(媒体库根目录已启用);字幕和压缩包内容走 JSON(base64),服务端不留临时文件。
解析与配对(对照插件 matching/subtitle_language.py、upload/upload_session.py)
- 支持
.srt .ass .ssa .vtt .sub .sbv和.zip(rar / 7z 先不做,插件也要依赖容器里的 unar)。 - 语言:先看文件名标签(chs / cht / 简体 / 繁體 / eng / 双语 …),再看内容(CJK、假名、谚文、繁体常用字比例);中英双语按简中处理(与整理规则一致)。
- 季集:用文件名解析(复用资源名解析器);电影只有一个目标。对不上的留空让人选;同一集多个字幕按语言区分,同语言重复的提示。
在线(SubHD、字幕库)
- 搜索词:作品中文名、原名、年份,剧集带季号;结果按标题与季集匹配度排序,对不上的不列。
- 验证码:① 代码识别(SubHD SVG 路径长度表、字幕库 BMP 采样模板,在沙箱里);② 没过就由智能体视觉在浏览器里接管;③ 智能体也没过就转人工。
- 何时接管:字幕库请求遇到云锁验证码页,沙箱识别提交 3 次仍是验证码页(或识别不出字符),且自动化总开关开着。SubHD 现在的下载页前端已没有验证码这一步(2026-10-03 抓页确认),只保留旧 SVG 识别,不接管。
- 怎么接管:用该字幕站的匿名浏览器会话打开同一地址;页面已不是验证码页(例如人刚在原站视图里过过)就直接算过;否则派视觉子流程(系统发起,截图读码、输入、点「点击继续访问网站」,≤ 6 步、1 次,预算取智能体设置),按页面上「网站访问认证页面」字样消失核实。
- 结果:过了 → 读回浏览器里该站的 Cookie 并进字幕库请求的 Cookie 罐,重开原页面,搜索 / 下载照常继续,用户无感;没过 → 会话转等待处理,待处理事项「字幕库需要你在原站视图里过一次验证码」(附子流程每步截图),本次搜索报错并提示去原站视图;人过完交还后再搜,接管时发现页面已放行,直接带回 Cookie。
- 原站视图手动下载(与 PT 站「下载当前资源」同一思路):字幕站的原站视图工具栏是「下载当前字幕」。人在原站视图里打开一条字幕详情页(SubHD
/a/<sid>、字幕库/detail/<id>.html)→ 点按钮 → 选作品 → 补字幕对话框自动带着浏览器里的 Cookie 下载这一条、解压、按季集配对到视频,可逐个改写到哪个视频后写入,历史记来源。 - 下载结果走与上传相同的解析 → 预览 → 写入。
分步
- 手动上传:解析、配对预览、写入、历史与撤销、作品页入口。(v0.3.22 完成)
- 字幕站类型 + SubHD / 字幕库搜索下载(第 ① 层验证码),站点页与添加站点;rar / 7z。(v0.3.24 完成;解压、页面解析、验证码都在沙箱里,见 ADR-005)
- 验证码智能体视觉接管 + 原站视图「下载当前字幕」。(v0.3.25 完成)
实测记录(2026-10-03):字幕库搜索、验证码、下载、解压、配对全链路通;SubHD 搜索通,下载流程与单独实测一致,但当晚测试请求较多后 SubHD 对本机限流(直连与代理都超时),需要隔天复测。
复测(2026-10-03 晚):SubHD 按豆瓣 ID 搜索、prepare-download、下载全通,连续下载 7 个未触发验证码。