Files
MediaOrganizer/docs/adr/0005-destination-structure-compliance.md
Shuery c1ed1795c2
CI / lint + test + build (push) Canceled after 0s
docs: 重写 README、新增项目报告与开发工具配置
- README 现代化重写:徽章区、特性一览、统一 GitHub 提示块格式、修正版本号与 AI 默认值
- 新增 docs/PROJECT_REPORT.md 学术项目报告(含许可证合规分析与死链修复记录)
- 收录 23 份 ADR 架构决策记录与 CONTEXT.md 领域术语表
- 新增开发配置:.editorconfig / .shellcheckrc / .markdownlint-cli2.jsonc
- .gitignore 补充 mo_map/、检查报告、编辑器临时文件
- 新增 config.example.json 配置模板(不含真实密钥)
2026-08-14 22:41:40 +08:00

2.3 KiB
Raw Permalink Blame History

目的目录规范: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 使用问题)。