docs: 重写 README、新增项目报告与开发工具配置
CI / lint + test + build (push) Canceled after 0s

- README 现代化重写:徽章区、特性一览、统一 GitHub 提示块格式、修正版本号与 AI 默认值
- 新增 docs/PROJECT_REPORT.md 学术项目报告(含许可证合规分析与死链修复记录)
- 收录 23 份 ADR 架构决策记录与 CONTEXT.md 领域术语表
- 新增开发配置:.editorconfig / .shellcheckrc / .markdownlint-cli2.jsonc
- .gitignore 补充 mo_map/、检查报告、编辑器临时文件
- 新增 config.example.json 配置模板(不含真实密钥)
This commit is contained in:
Shuery committed 2026-08-14 22:41:40 +08:00
1 parent 0df07ad0ae
commit c1ed1795c2
31 files changed
+1816 -234

No files matched your search

@@ -0,0 +1,11 @@
# 目的目录规范:Jellyfin 官方合规结构与本地化
目的目录结构按 Jellyfin 官方文档对齐:`Movies/{title} ({year})/` 夹内同名文件;`Shows/{title} ({year})/Season NN/`(补零、不缩写);`SxxExx - 集名`;特典 `Season 00` 用描述性命名(非匹配 S00Exy);`Music/{artist}/{album}/`(一夹一专辑);`MusicVideos/{artist}/{title}`(根目录无空格,识别信号待样本驱动)。`Season NN` 与 `SxxExx` 是 Jellyfin 解析格式,**不可本地化**;根目录与 Unknown 等语义占位可本地化——新配置键 `FOLDER_MOVIES`/`FOLDER_SHOWS`/`FOLDER_MUSIC`/`FOLDER_MUSICVIDEOS`/`FOLDER_UNKNOWN`,**默认跟随系统语言**(locale 含 zh → 中文名)。
三个修复:① 撞名不再替换(后者胜会静默丢链接),按官方多版本格式去重(`{文件夹名} - 2.ext`,前缀与文件夹名逐字符一致);② 同源旧链接(回退 → 正确识别的迁移场景)在目标不存在时按 `find -inum` 清理,幂等路径零开销;③ 年份占位统一——无年份省略括号段(识别与回退共用),消除 `(Unknown)` 与空括号 `()`。
音乐条目新增:`AUDIO_EXTS` 补 `mka`;伴随文件优先级 **视频 > 音频**(同名视频存在 → 该音频为伴随音轨,排除独立处理);独立音频跟随歌词(`lrc/elrc/txt` 同名)与专辑级封面(链接既有文件,不提取);艺术家归类链(专辑艺术家 → 单艺术家 → AI → ` & ` 拼接 → 目录名 → Unknown);专辑名同构走元数据链。封面从内嵌标签提取等操作**不做**——脚本仅整理,不增删文件。
**Considered Options**: 撞名保留替换(静默丢文件,且与官方多版本机制冲突);回退条目引入跨运行进度持久化(Q5 已定缓存即断点,不做);根目录硬编码英文(违背"使用者的语言");Music Videos 识别本次实现(来源目录非标准结构,识别信号未定,待样本驱动)。
**补充(识别与匹配轮)**:多集单文件(`S01E01-E02`)目标命名规则定为 `{标题} - S01E01-E02 - {首集名} - {末集名}.{ext}`(集名段取首尾两集,Jellyfin 据区间识别多集条目)。挂起项见 CONTEXT.md 已知缺口 ④⑤⑥(电影/电视判断链、后缀季剥离机制、AI 使用问题)。