root and Claude Opus 5.5
680419bb64
feat(scrape): TMDB 标志写 clearlogo.png
...
- 富详情请求加 images(include_image_language=zh,en,null),作品原语言不是中英文时另取 /images;
选一张 PNG 标志(原语言 → 中文 → 英文 → 无文字,同语言按评分)存作品字段 logoPath,变化时触发重刮
- 刮削布局新角色 clearlogo:电影写影片目录 clearlogo.png、剧集写剧集根目录,库根 / 平铺电影 <视频名>-clearlogo.png;
覆盖方式与 hash 规则同其它图片
- 布局金样差分登记偏离 tmdb_clearlogo;mock TMDB 支持 logos 与 /images
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
2026-10-06 19:37:34 +08:00
root and Claude Opus 5.5
0f656f0f58
chore(release): v0.3.32
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
2026-10-06 18:58:53 +08:00
root and Claude Opus 5.5
550ac285f4
feat(copy): 处理状态的「入库」改为「整理」,术语表与 check:copy 同步
...
真正入库取决于媒体服务器有没有扫到,本工具只负责整理(元数据、NFO 与图片、按规则归到目录)。
界面与面向用户的服务端文案里「已入库 / 未入库 / 部分入库 / 入库失败 / 入库中 / 入库后 / 原地入库…」
改为「已整理 / 未整理 / 部分整理 / 整理失败 / 整理中 / 整理后 / 原地整理…」;文件管理快速筛选「已整理」、
目录副行「n 个已整理 / 未整理」、季卡片「已整理 x/y」。代码标识符不改,「Emby 已有」这类媒体服务器状态保留。
glossary 加「整理」口径条目;check:copy 拦处理状态语境的「入库」搭配,其它线待替换的文件暂列 TERM_PENDING。
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
2026-10-06 17:54:28 +08:00
root and Claude Opus 5.5
81405f1e94
chore(release): v0.3.31
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
2026-10-06 17:22:49 +08:00
root and Claude Opus 5.5
731336ccb1
chore(release): v0.3.30
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
2026-10-06 16:14:15 +08:00
root and Claude Opus 5.5
02b9773047
merge: fix/p-episode-groups
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
2026-10-06 16:02:17 +08:00
root and Claude Opus 5.5
3f6d8e410f
feat(集数映射): 作品季集结构字段(迁移 0075)、剧集组接口契约与按 TMDB 默认季集换算
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
2026-10-06 15:45:12 +08:00
root and Claude Opus 5.5
f6d976a963
feat(search): 筛选选项只列结果里有的值,季集合并成一个维度放最前
...
对照 MP useTorrentFilter:分面选项按实际结果生成,计数为 0 的不再列出(已选的值仍列出,可删除);
新增季集维度 seasonEpisode(MP season_episode 写法 `S01` / `S01-S02` / `S02 E14` / `S01 E25-E48`),
整季在前、单集在后、季号新的在前,在筛选条最前。旧的季 / 集维度保留(旧链接仍生效,以标签列出)。
搜索结果页与站点资源 Tab 共用这套口径。
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
2026-10-06 15:39:32 +08:00
root and Claude Opus 5.5
18ee466664
fix(parser): 原盘判定参考副标题线索与 PCM 音轨
...
标题写成 `Bluray H.264` 这类压制字样、但副标题写「自购自抓自扫」「BDMV」「原盘」「DIY」
「Blu-ray Disc」的,或带 LPCM / PCM 音轨又没有 x264 / x265 / BDRip / 压制说法的,判为原盘。
只在来源是 BluRay(或没写来源但有分辨率)时补判;「原盘压制」「自压」、WEB-DL、Remux、单个视频文件不受影响。
用「药屋少女的呢喃」真实搜索结果补正例与反例。
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
2026-10-06 15:36:15 +08:00
root and Claude Opus 5.5
4fa001750b
chore(release): v0.3.29
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
2026-10-06 12:39:07 +08:00
root and Claude Opus 5.5
fb6c76875c
chore(release): v0.3.28
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
2026-10-04 00:10:13 +08:00
root and Claude Opus 5.5
c532060c83
feat(organize): 文件级标题粗核,混合包里明显不是本作品的视频降为待确认
...
- 同一批视频里文件名标题与作品标题 / 原名 / 别名明显不符(没有足够共同词)的排除为 title_mismatch,不按本作品命名入库;
- 只在同批至少一个文件对得上作品时才判断,剧集只看带 SxxEyy 的文件,用户逐文件指定过的不核;
- title_mismatch 算「本该入库却被排除」:记录部分完成、开待处理、Move 不移除下载任务。
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
2026-10-03 23:33:41 +08:00
root and Claude Opus 5.5
89aa70bb9c
fix(scrape): 平铺目录只刮本作品视频、图片按视频名命名;图片扩展名按实际类型;取消时记录不停在进行中
...
- 作品重刮对电影传入该作品已入库的视频,不给同目录别的电影写本作品 NFO;
- 电影目录里有别的作品的视频时海报 / 背景图写 <视频名>-poster / -fanart,不写目录共用的 poster.jpg;
- 图片扩展名按下载到的 MIME,URL 认不出或与内容不符时以内容为准;
- 任务被取消时记录收尾为失败 scrape_canceled,保留已写文件结果。
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
2026-10-03 23:21:52 +08:00
root and Claude Opus 5.5
8c4c7d028a
feat(scrape): 多集文件写多个 episodedetails 块,综艺日期期数按播出日期对集
...
- 多集文件(文件名 E01-E02 或覆盖多个集单元)按 Kodi 约定在一个 NFO 里每集写一块,MP 只写首集,偏离登记在 nfo-deviations.json;
- 综艺按日期命名的期数按本地季表或 TMDB 季详情的播出日期对上集,写季号、集号与 aired,不再 scrape_no_episode 跳过;
- 认不出集号、集数待确认的跳过让记录记部分完成(已存在 / 没变 / 被人改过仍算完成)。
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
2026-10-03 23:13:47 +08:00
root and Claude Opus 5.5
0085e45ca7
chore(release): v0.3.27
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
2026-10-03 21:49:03 +08:00
root and Claude Opus 5.5
dbbf39eda4
feat(scrape): 覆盖方式加「更新」并设为缺省,季集缺元数据不写占位,作品类型判定统一
...
- 每次写入在 scrape_record.files[].hash 记 sha256;update 模式只覆盖本工具写过且没被改过的文件,
被改过的跳过(scrape_user_modified),内容没变不重写(scrape_unchanged),旧记录无 hash 按修改时间兜底;
迁移 0070 给 scrape_record.mode 加 update,设置缺省改为 update(旧值照旧有效)
- 季 / 集单元缺元数据时按 TMDB id 现取季详情补齐;仍缺跳过(scrape_metadata_missing)并记 partial,不写占位 NFO
- scrapeKindOf 统一作品类型判定,合集 / 其他类作品 NFO 根元素为 <movie>;TMDB 映射按作品类型过滤 entity_type
- 兜底异常记 scrape_internal_error 并保留已写文件结果
- 新增 scheduleEntityRescrape(刮削过的作品延后排 update 重刮,排队记录合批防抖)
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
2026-10-03 21:04:57 +08:00
root and Claude Opus 5.5
6b19cede62
chore(release): v0.3.26
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
2026-10-03 20:08:42 +08:00
root and Claude Opus 5.5
fe597187dd
feat(organize): 整理、季包选文件、刮削、文件管理识别统一套用集数映射;单集沿用资源判定,待确认文件不按原号入库
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
2026-10-03 18:46:04 +08:00
root and Claude Opus 5.5
7b9939e0a0
feat(domain): 集数解析纯函数——规则、原号校验(滞后放行)、绝对集号与播出日期换算、建议规则
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-03 17:18:43 +08:00
root and Claude Opus 5.5
c30a758a74
feat(subtitles): 字幕库验证码由智能体视觉接管;字幕站原站视图下载当前字幕
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-03 11:43:08 +08:00
root and Claude Opus 5.5
227f7ea4f9
chore(release): v0.3.24
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-03 02:42:05 +08:00
root and Claude Opus 5.5
92d456d123
chore(release): v0.3.23
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-03 02:06:23 +08:00
root and Claude Opus 5.5
1a76d2d700
chore(release): v0.3.22
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-03 01:30:32 +08:00
root and Claude Opus 5.5
ef29bd62ce
feat(subtitles): 补字幕第 1 步——上传字幕 / zip,识别语言与季集,配对写入视频同目录,历史与撤销
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-03 01:08:05 +08:00
root and Claude Opus 5.5
feee481915
chore(release): v0.3.21
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-03 00:54:04 +08:00
root and Claude Opus 5.5
06ba0711e2
chore(release): v0.3.20
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-03 00:26:32 +08:00
root and Claude Opus 5.5
8da8679a04
chore(release): v0.3.19
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-02 23:49:15 +08:00
root and Claude Opus 5.5
df22200bfd
chore(release): v0.3.18
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-02 23:19:24 +08:00
root and Claude Opus 5.5
b42543e6f3
chore(release): v0.3.17
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-02 22:34:58 +08:00
root and Claude Opus 5.5
ed083fd138
feat(subscriptions): 按 MP 收敛订阅默认值与表单
...
- 定时主动搜索默认关(DEFAULT_SEARCH_INTERVAL_HOURS = 0),新建 / 手动照常各搜一次,之后靠 RSS 与站点快照
- 多版本自动补全系统缺省改为关
- 表单:基础页 = 作品与范围、下载、洗版;收录版本、优先级、自动补全折叠到进阶页「多版本」
- 对照文档 §7.3 记录落实范围
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-02 22:34:48 +08:00
root and Claude Opus 5.5
ff79554a09
chore(release): v0.3.16
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-02 20:43:06 +08:00
root and Claude Opus 5.5
cac1833f53
chore(release): v0.3.15
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-02 18:35:41 +08:00
root and Claude Opus 5.5
b61335eaf6
test: 测试按行为命名、server 测试统一到 test/、PG 测试分组并行
...
- server 的 src/modules/*/__tests__ 挪到 test/<模块>/;e2e 去掉 eN- 前缀,
w5a2 / v2 / search2 / *-dh1 / *-md1 / *-md2、web 的 agui3 / search2、domain 的 id2 / id3 改为按行为命名
- vitest 分三组:unit、pg(真实 PG + 假引擎,文件并行,最多 6 个)、serial(真实引擎 / worker / e2e,串行);
pg 组用例超时放宽到 60s(迁移类用例并行时排队等 schema 锁)。server 测试 615s → 约 350s
- CLAUDE.md 补测试约定;待办补 harness 去重与 continuous-series 偶发超时(疑似 Slot 评估竞争)
- ADR-004 补充:维持 Deno,记录实际只用到 --allow-run 白名单
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-02 16:54:04 +08:00
root and Claude Opus 5.5
ceb66f8c77
feat: v0.3.8–v0.3.14 工作区汇总(依赖升级、整理来源、手动入库、原地入库等)
...
生产 v0.3.8~v0.3.13 均由 8013196 加工作区修改构建部署,此前未提交;本提交补齐源码,
并含未部署的 v0.3.14 原地入库。中间各版本源码状态未保存,无法逐版拆分,详见
docs/plan/17-full-upgrade.md 与 docs/plan/18-organize-release.md。
- v0.3.8 全面升级:Deno workspace 依赖、Router 8 / Vite 8、camofox 1.18.0 / Node 24、
PostgreSQL 18.6、备份客户端 18.6、演示 qB 5.2.4
- v0.3.9 媒体整理:分类规则、整理来源与目录快照(0059)、文件管理整理入口
- v0.3.10 手动下载与入库:独立手动下载、详情页资源下载、TMDB / Local 元数据兜底
(metadata.resolve_organize)、正常多版本 / 一次性洗版(0060)
- v0.3.11 搜索详情与桌面黑边修复
- v0.3.12 列表分页、搜索历史、首页概况
- v0.3.13 统一整理弹窗与队列
- v0.3.14 原地入库(0061,未部署)
同批审计修复:
- 刮削入队:确认原记录存在后才删重放产生的新记录;写回 run 关联失败时保持 queued,
由处理器补关联(对齐 MP 先登记、只在入队失败时记失败)
- 识别升级链只在结果更确定时采用,不再用 no_match 顶替原有歧义候选
- bluray_dir 资产以原盘目录本身为刮削根(MP 同做法)
- metadata.resolve_organize 登记到入库排障 Skill 与能力地图
- db/src/types.ts 按迁移重新生成;contracts 整理动作枚举顺序与数据库对齐
- 测试:原地入库用例改为直接查记录表;domain 测试模板补 version
- 前端:通知铃铛弹层与用户菜单统一样式;站点卡片共用卡头、底栏贴底、分页间距
依赖升级证据只提交摘要文件,registry-snapshot.json 移至 .local/(SHA-256 记于文档)。
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-02 15:47:17 +08:00
root and Claude Fable 5.1
8013196e3f
chore(release): v0.3.7
...
Co-Authored-By: Claude Fable 5.1 <[email protected] >
2026-10-01 00:28:04 +08:00
root
a9511a75f6
Merge branch 'id3'
...
Co-Authored-By: Claude Fable 5.1 <[email protected] >
# Conflicts:
# CHANGELOG.md
2026-10-01 00:15:49 +08:00
root and Claude Opus 5.5
a6d655d2ce
feat(identity): trust site-provided IMDb/TMDB IDs in scoring (ID-3)
...
MatchOptions.trustedIds: a candidate fetched by a site-given ID is at least
multi_evidence even when titles differ; year/type conflicts stay candidates.
Differential group site-ids-* against MP search/result.py _match_source.
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-01 00:15:20 +08:00
root and Claude Opus 5.5
87bf33b42b
feat(scrape): 任意目录就地刮削,按路径识别作品,每次刮削一条记录(SCR-2)
...
- POST /files/scrape 改为对目录 / 视频文件刮削:已登记用作品,否则按路径识别(本地 + TMDB),
认不准返回候选,选定后再提交;未登记直接用 TMDB 字段,addToLibrary 顺手建作品
- 作品详情重新刮削、入库后自动刮削改为对作品目录刮削,同一实现
- 迁移 0058_scrape_record 替代 media_scrape;GET /files/scrape-records
- 与 MP ScrapingChain 的文件布局差分(7 个场景,3 处登记偏离)
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-01 00:08:17 +08:00
root and Claude Fable 5.1
006549a49f
chore(release): v0.3.6
...
Co-Authored-By: Claude Fable 5.1 <[email protected] >
2026-09-30 22:53:47 +08:00
root
511ad93077
Merge branch 'search4'
...
Co-Authored-By: Claude Fable 5.1 <[email protected] >
# Conflicts:
# docs/plan/00-first-version-plan.md
2026-09-30 22:41:26 +08:00
root and Claude Opus 5.5
d9cf8f1c3a
feat(search): align quick-filter facets with MP (SEARCH-4)
...
Add audioCodec, subtitle, dub, feature, year, category, size and seeders
facets with disjunctive counts; parser records dub languages (audioLangs).
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-09-30 22:40:55 +08:00
root
2e83107f68
Merge branch 'scr1'
...
Co-Authored-By: Claude Fable 5.1 <[email protected] >
# Conflicts:
# CHANGELOG.md
# docs/plan/00-first-version-plan.md
2026-09-30 22:36:46 +08:00
root and Claude Opus 5.5
861f799615
feat(domain): 刮削 NFO 生成与目标文件布局(SCR-1)
...
电影 / 剧集 / 季 / 集 NFO(元素与顺序对照 MP TmdbScraper,缺值不写),
poster / fanart / 季海报 / 剧照命名(Emby / Jellyfin / Kodi 兼容)。
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-09-30 22:36:14 +08:00
root and Claude Fable 5.1
b137f365c5
chore(release): v0.3.5
...
Co-Authored-By: Claude Fable 5.1 <[email protected] >
2026-09-30 21:39:55 +08:00
root and Claude Fable 5.1
5ddc88d928
chore(release): v0.3.4
...
Co-Authored-By: Claude Fable 5.1 <[email protected] >
2026-09-30 19:56:29 +08:00
root and Claude Fable 5.1
395417f298
chore(release): v0.3.3
...
Co-Authored-By: Claude Fable 5.1 <[email protected] >
2026-09-30 19:10:41 +08:00
root and Claude Fable 5.1
04460fa98e
chore(release): v0.3.2
...
Co-Authored-By: Claude Fable 5.1 <[email protected] >
2026-09-30 03:29:04 +08:00
root and Claude Fable 5.1
9296161683
chore(release): v0.3.1
...
Co-Authored-By: Claude Fable 5.1 <[email protected] >
2026-09-30 01:26:48 +08:00
root and Claude Fable 5.1
8c50e4672f
chore(release): v0.3.0
...
Co-Authored-By: Claude Fable 5.1 <[email protected] >
2026-09-29 22:55:20 +08:00
root and Claude Opus 5.5
71b129d85a
feat(web): merge search filters into one row and tidy episode versions (POLISH-1)
...
- H&R becomes a quick-filter facet (yes/no/unknown, with counts) on search
results and the site resources tab; drop the old free/H&R selects, keep
size range and sort on the same row (mobile: drawer), single clear button
- legacy free/hr URL params migrate into quick filters; stored selections
keep the same localStorage key
- search timing and query terms move into TechInfo
- library episode versions: click the whole row to expand, versions listed
as sibling rows, details only under the selected version, raw values in
TechInfo
- slot comparison gaps get reason codes (matchGapText in contracts
reasons.ts): "可换成 2160p", "缺 HDR 版本"
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-09-29 22:06:32 +08:00