docs: 整理时指定剧集组(runbook / MP 对照 / CHANGELOG)
Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
This commit is contained in:
1 parent
6d4af00339
commit
f200ec695f
4 files changed
+30
-2
No files matched your search
@@ -4,6 +4,9 @@
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### 新增
|
||||
- 整理时指定剧集组(参考 MoviePilot 重新整理选剧集组):整理弹窗可临时按 TMDB 默认季或作品的其它剧集组换算季集与命名,作品设置不变,资产仍登记到作品当前结构的对应集;可勾选同时设为作品的季集结构。
|
||||
|
||||
## [0.3.30] - 2026-10-06
|
||||
|
||||
迁移 `0075`、`0077`。
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
| `api/endpoints/media.py groups/{tmdbid}`、`group/seasons/{groupId}` | `GET /media-entities/{id}/episode-groups`、`GET /media-entities/{id}/episode-structure?groupId=` | 季卡片额外带本地已入库(按 TMDB 原季集对照)与当前结构下的季单元 id |
|
||||
| `schemas/subscribe.py episode_group`、`SubscribeSeasonDialog.vue`(剧集组横向轨道 + 季卡片:海报、集数、首播、已入库) | 订阅表单 `SubscriptionSeasonPicker` | 订阅不单独存组:选了非当前结构的季要确认改作品设置 |
|
||||
| `scraper.py`:NFO / 剧照按 `get_tv_group_detail` 取季 | 刮削 NFO 用单元元数据(本来就按组);缺元数据时 `scrapeTmdbSeason(…, episodeGroupId)` 按组取 | 季海报 MP 仍取默认季;我们取组内首集所在默认季的海报 |
|
||||
| `schemas/transfer.py episode_group`、`ReorganizeDialog.vue` | 不做 | 整理按作品当前季集结构映射 |
|
||||
| `schemas/transfer.py episode_group`、`ReorganizeDialog.vue` | 整理弹窗「季集结构」:`POST /files/organize` 的 `episodeStructures`(`createStructureEpisodeMapper`) | 缺省跟随作品;临时选的结构只这次换算季集与命名,资产覆盖按 TMDB 原季集换回作品结构的单元;可勾「同时设为作品的季集结构」先切换作品。见 `runbook/organize.md`「整理时指定剧集组」 |
|
||||
| `metabase.py` 识别词 `g=` 指定剧集组 | 不做 | 单条资源不指定组;规则的目标季集写组内的即可 |
|
||||
|
||||
我们多出来的:切换结构时已有单元按 TMDB 原季集原地迁移(引用不动,对不上的标临时并列出);集数解析多一步「按 TMDB 默认季集换算」(`tmdb_season`),发布者按默认季编号时自动换到组内季集;刷新时 TMDB 调整了组内顺序也按原季集挪单元。
|
||||
@@ -195,7 +195,9 @@ TMDB 默认季有时和发布者、媒体服务器的分季不一样(最常见:
|
||||
|
||||
**刷新**:剧集组作品的元数据刷新拉 `/tv/episode_group/{id}` 而不是默认季;TMDB 编辑调整过组内顺序时,集单元按记下的原季集挪到新位置(规则同切换)。组取不到(404 / 网络)时本次不动季集结构,只刷作品字段。刮削缺季集元数据时也按组取。
|
||||
|
||||
**没做**:识别词 / 单条资源指定剧集组(MP 的 `g=`)、整理时按剧集组(MP `TransferInfo.episode_group`)——季集结构是作品级的一个选择。
|
||||
**整理时指定**:整理弹窗可以只这次按另一套结构整理(不改作品设置),或勾选同时设为作品结构,见 `organize.md`「整理时指定剧集组」。
|
||||
|
||||
**没做**:识别词 / 单条资源指定剧集组(MP 的 `g=`)——季集结构是作品级的一个选择,整理时可临时指定。
|
||||
|
||||
## 池的治理
|
||||
|
||||
|
||||
@@ -22,6 +22,29 @@
|
||||
|
||||
确认预览后只提供「加入整理队列」。后台受理成功后弹窗自动关闭,可以继续操作,进度到队列查看,整理后的刮削任务也显示在队列,整理详情单独展示刮削结果;部分受理时已受理文件从本次范围移除,剩余文件可修改后再预览提交。队列复用现有后台调度,不要求浏览器停留到文件处理结束。记录、队列及弹窗明细均复用统一分页。
|
||||
|
||||
## 整理时指定剧集组
|
||||
|
||||
对照 MP 的整理 / 重新整理选剧集组(`TransferInfo.episode_group`、`ReorganizeDialog.vue`)。作品的季集结构(TMDB 默认季 / 某个剧集组,见 `identity.md`「剧集组」)是作品级设置;整理弹窗里本次涉及的本地剧集作品如果有剧集组可选,多一项「季集结构」:
|
||||
|
||||
- **缺省「跟随作品(当前:X)」**:请求不带 `episodeStructures`,冻结计划和以前一样(不记季集结构)。
|
||||
- **临时选 TMDB 默认季或作品的其它剧集组**(列表同 `GET /media-entities/{id}/episode-groups`):只这次按所选结构换算季集、定季目录与命名,作品设置不变。选的就是作品当前结构时等同跟随作品。
|
||||
- **勾「同时设为作品的季集结构」**(缺省不勾):预览不改作品;执行时先走作品级切换(`setEpisodeGroup`:单元按 TMDB 原季集原地迁移、全量重算、刷新元数据,写审计),再按新结构(此时就是作品结构)整理。同一作品多组只切一次。
|
||||
|
||||
请求:`POST /files/organize` 的 `episodeStructures: [{ mediaEntityId, groupId | null, applyToEntity? }]`(预览与执行同一请求体,进请求指纹)。组响应带 `episodeStructure { groupId, name, temporary, appliedToEntity? }`,预览头部显示「季集结构:制作季(仅本次)」。
|
||||
|
||||
**临时结构下的集数映射**(`episode-resolution.ts createStructureEpisodeMapper`):
|
||||
|
||||
1. 季表换成所选结构的季与集数;选剧集组时带每集播出日期与原季集对照(发布者按 TMDB 默认季编号的 `S01E14` 换到组内 `S02E02`)。
|
||||
2. 作品的映射规则是按作品当前结构写的:先按作品季表 + 规则跑一遍,命中规则(含特别篇 / 花絮 / 忽略)就用规则结果,季集再经 TMDB 原季集换到所选结构(换不过去的按待确认排除);没命中规则时按所选结构的季表判定。
|
||||
3. 资源的集数解析是按作品结构做的,临时结构下不沿用,只取发布时间;按所选结构判不出的文件照常排除为集数待确认,但不并进作品的「集数待确认」待处理。
|
||||
4. 向导里人工填的季集按所选结构理解(决定命名)。
|
||||
|
||||
**资产覆盖落到哪个单元**:作品的集单元是按作品当前结构编号的,所以文件的季集(所选结构)逐集换回作品结构再登记覆盖:所选结构季集 → TMDB 原季集(剧集组按组内位置,默认季即自身)→ 作品结构(作品是默认季时原季集即单元季集;作品是剧集组时按单元上记的 `tmdbSeason / tmdbEpisode` 对照)。区间里每一集都要换得到、落在同一季且连续;换不回(比如作品的剧集组不含这一集,或单元还没记原季集)时文件照常按所选结构命名入库,只是不登记集覆盖。例:作品是默认季(S1 = 25 集),临时按「制作季」整理 `S01E14` → 命名 `S02E02`,覆盖挂作品的 S01E14 单元;勾「同时设为作品结构」→ 先切换(S01E14 单元原地变成 S02E02),命名 `S02E02`,覆盖挂迁移后的同一单元。
|
||||
|
||||
**排查**:冻结计划 `plan.episodeStructure { groupId, name, entityGroupId, temporary, appliedToEntity? }` 记这次用了哪套结构与当时作品的结构;临时结构下每个文件的 `facts.structureEpisodes` 是命名用的季集,`facts.season / episodes` 是换回作品结构后的单元季集(换不回时没有),`episodeResolution.evidence` 带 `structure:<groupId|default>`。
|
||||
|
||||
不做:切换结构后自动改名已整理的文件(仍用「重新整理」)、剧集组季的独立海报。测试:`apps/server/test/file-manager/organize-episode-structure.test.ts`、`apps/web/app/components/organize-wizard/model.test.ts`「季集结构」。
|
||||
|
||||
## 来源、分类与存量整理
|
||||
|
||||
设置 → 媒体库与目录中维护分类 YAML 和整理来源。新功能已于 2026-10-01 部署为 v0.3.9,迁移 `0059_organize_source_snapshot` 已执行,见 发布记录(已删除,见 git `ceb66f8`)。
|
||||
|
||||
Reference in new issue
Block a user