镜像自地址
https://github.com/lhly/cloud-drive-renamer.git
已同步 2026-10-20 05:37:47 +08:00
新增 episodeExtract 规则类型,支持从文件名提取季集号并按模板生成新文件名。提取失败的文件会在预览中显示错误信息并自动跳过执行,避免误操作。
- 支持模板变量:{prefix} {season} {episode} {ext}
- 提供 helperPre/helperPost 锚点辅助提取
- 支持集数偏移和自定义前导零位数
- 更新规则工厂、类型定义和国际化配置
- 添加单元测试和设计文档
1.8 KiB
1.8 KiB
剧集提取规则设计(P1)
背景
当前规则体系缺少“从文件名提取季集号并标准化命名”的能力。用户希望支持模板化命名,并在提取失败时可视化失败项且自动跳过执行。
目标
- 新增
episodeExtract规则类型 - 支持模板变量:
{prefix}{season}{episode}{ext} - 提取失败文件:预览标红 + 执行跳过
非目标
- 不实现复杂表达式/条件模板
- 不做自动 season 猜测
- 不改动执行器核心模型
参数设计
template: stringprefix: stringseason?: number | string(默认1)offset?: number | string(默认0)leadingZeroCount?: number(默认3, 1~10)helperPre?: stringhelperPost?: string
提取策略
优先级:
- helper 锚点提取
SxxExx/Season x Episode xEPxx- 通用数字兜底
生成策略
season输出两位(01~99)episode应用 offset 后按前导零补齐- 模板渲染后,如果模板未包含
{ext},自动补原扩展名
失败策略
- 当某文件无法提取 episode 或 offset 后无效:
- 保持原名
- 记录错误信息到
extractErrorMap - 预览展示红色错误
- 执行阶段由于“未变化”被自动跳过
接入点
src/types/rule.tssrc/rules/episode-extract.tssrc/rules/rule-factory.tssrc/content/components/config-panel.tssrc/content/components/file-selector-panel.tssrc/locales/*
风险与缓解
- 风险:规则参数输入不完整导致预览异常
- 缓解:沿用现有
Invalid rule configuration分支,参数未就绪时不生成预览
- 缓解:沿用现有
- 风险:提取失败导致用户误解“未执行”
- 缓解:红色错误态 + 明确错误文案
验证
tests/unit/episode-extract-rule.test.tstests/unit/rules.test.tsnpm test -- --runnpm run typecheck