福星小子批量整理工作日志

源目录是 DBD-Raws 的福星小子大包:[DBD-Raws][福星小子][001-218TV全集+剧场版+OVA][1080P][BDRip][HEVC-10bit][简繁外挂][FLAC][MKV],共 647 项。目标是拆成 Emby 友好的结构:TV+OVA 进剧集目录,剧场版进电影目录,全部规范命名后刮削。
盘点
先摸清家底:
- 196 个 TV 视频:23 个双集文件覆盖 001–046,172 个单集覆盖 047–218,外加 1 个 042.5 特别篇
- 12 个 OVA、6 部剧场版
- 428 个外挂字幕(sc/tc 各一半)
- 5 个附属目录:Fonts / ED / PV / menu / Scans
目标命名规则定下来:
- TV:
福星小子.1981.S01E047.mkv,双集S01E001-E002 - 特别篇:
S00E13 - OVA:
S00E01-12 - 剧场版:
福星小子.1983.mkv这种,按上映年映射(01→1983、02→1984、03→1985、04→1986、05→1988、06→1991) - 字幕与视频同名,挂
.sc.ass/.tc.ass
教训一:有 skill 不许另起炉灶
一上来我犯了老毛病:直接让第三方模型写了个新改名脚本。被当场叫停。
openlist-media skill 里现成的 ol_batch.py 本来就支持正则批量改名,分 20 条正则跑就能覆盖全部命名规则——双集、单集、特别篇、OVA、剧场版、字幕,各一条或几条的事。新脚本除了引入新 bug 没有任何收益。
教训记下来:先论证现成工具差在哪,论证不出来就不许写新的。 这条以后作为硬规矩。
教训二:编号方案要对正则友好
OVA 原计划编号 S00E02-13,特别篇占 S00E01。看着合理,实际做不了:正则替换只能做字符串捕获和拼接,不能做 +1 运算。源文件名里的 OVA 序号要整体偏移一位,纯正则做不到。
解法很简单:把编号方案倒过来——OVA 占 S00E01-12(序号直通,零运算),特别篇挪到 S00E13。问题直接消失。
设计编号方案时先想工具能做什么,再想怎么编。 顺序反了就是给自己挖坑。
改名与移动
改名本身顺利:642 个文件全部成功,0 失败,扫了一遍确认旧格式零残留。
移动就慢得多。广雅盘的 move 接口一次大约 25 个文件一批,每批要 1-2 分钟。624 个文件要搬几十批。写法是幂等循环:
- 列目标目录,按前缀分区(TV 的、字幕的、剧场版的)
- 取一小批搬过去
- 重复直到源区域搬空
幂等的好处是中断了重跑就行,不用记进度。
中途踩了个分区 bug:判断剧集文件用了 startswith('福星小子.19'),结果 福星小子.1981.S01E... 没问题,但剧场版 福星小子.1983.mkv 也被吞进剧集分区了。改成精确正则 ^福星小子\.1981\.S\d+E\d+ 并加断言(分区结果数量必须等于预期,不等就直接报错停手),再继续。
断言很便宜,搬错位置很贵。
基础设施掉链子
干到一半 OpenList 请求全挂。排查下来不是网络问题:本机 OpenList 服务没了。原因是 VM 根重置把 /etc/systemd/system 下的 unit 文件清了,keepalive 机制也没能自愈。
处理:从持久化卷里把 unit 文件重新装回 systemd,拉起服务,确认 API 恢复,重跑幂等循环接着搬。
另外 OpenList 偶发 401。一开始怀疑 token 失效,重读 token 发现根本没变——是服务端瞬断。处理办法就是重读 token + 退避重试,不需要重新授权。
刮削
TV 侧:TMDB 条目 34163,上传 tvshow.nfo + poster.jpg + fanart.jpg。
分集 nfo 按铁律跳过。原因:本地是 23 个双集文件,和 TMDB 的 218 集单集编号对不齐,硬传分集 nfo 必然错位,刮出来的标题简介全乱。跳过是唯一正确选择。
电影侧:6 部剧场版全部刮到,nfo + 海报 + 背景图齐全。
TMDB 密钥存 ~/.config/tmdb/env,权限 600,刮削脚本只从环境变量读,不落地、不回显。这条一直是这么做的,继续保持。
收尾:2008 OVA
正片搞完,发现电影目录里还躺着一个历史遗留:[2008] Lum_福星小子(うる星やつら ザ・障害物水泳大会)_OVA 目录。拆平成 福星小子.2008.mkv 加繁简两条字幕,TMDB 电影条目 531732,刮削完成。
结果
- 剧集目录
/gyp/剧集/福星小子.1981/:208 个 mkv + 416 个 ass + 5 个附属目录 - 电影目录
/gyp/电影/:6 部剧场版 + 1 部 2008 OVA - 改名 642/642 成功,刮削全部到位
工具链是攒出来的,每次实战的教训都应该沉淀回 skill,下次直接复用。