Commit Graph

190 Commits

Author SHA1 Message Date
ShukeBta 87bb94d4df feat(repair): 新增全库修复+重刮入口,剧集类路径正确归类
- 服务层 RepairAndRescrapeAllLibraries:先从路径占位符回填缺失/错误外部ID,再逐库重刮(含 no_match 重试)
- 新增 handler 与路由 POST /api/admin/media/repair-rescrape,异步执行经 WS 推送进度
- 前端媒体库页新增「全库修复+重刮」按钮调用该接口
- groupSeries:路径落在剧集类目录(电视剧/动漫/特别篇等)时按剧集卡处理,跳转分类视图
2026-06-19 12:23:56 +08:00
ShukeBta ce38fd257f chore: 移除源码注释与测试名中的第三方项目引用
将 cloud/external_search/filemanager/subscription_planner 注释及若干测试
函数名中的外部项目名替换为中性表述,不改变任何逻辑与行为。
2026-06-19 12:23:56 +08:00
ShukeBta b44c7f860b fix(media): 修复emby电影库混入剧集/特别篇识别/剧集合集 + 新增手动编辑元数据
emby 兼容层(hills/yamby 等客户端):
- 电影库不再混入剧集:filterLikelyEpisodicPathsFromMovieQuery 按路径
  特征(Season/S0x/Specials/电视剧/日番/国漫等)剔除误入电影库的剧集
- itemPayload 改用 mediaShouldBeEpisode:有季集号且(属剧集库或路径像剧集)
  才标记为 Episode,修正电影库里剧集被当成 Movie

特别篇识别:
- episode_parser 新增 patSpecialSeason,识别 S0/Season 0/Specials/SP/OVA/
  OAD/番外/特别篇/特典 文件夹 → 第0季;seasonFromParents 返回 found 标志,
  区分"明确第0季"与"未识别默认第1季"
- emby seasonDir 正则同步支持 Specials/SP/OVA/特别篇 等

剧集合集:
- groupSeries 抽出 isSeriesCard,卡片链接按是否剧集判定,修复剧集卡片
  跳转;每集分离的根因(季集号/分组key)随入库识别修复一并改善

手动编辑元数据(自采集视频无TMDB信息时可自定义封面/标题/简介/分类):
- 新增 MediaService.UpdateMetadata + PATCH /media/:id/metadata(需admin)
- 前端 MetadataEditDialog 接入 LibraryPage 与 MediaDetailPage

其他:scanner/scraper/nfo/local+cloud_metadata/adult 元数据识别配套改进;
.gitignore 忽略本地 .dev-cache/.dev-data 运行产物。
2026-06-19 12:23:56 +08:00
ShukeBta cce88ce3b0 fix(classify): anime 无元数据时纯中文译名不再误判国漫
日本动画的中文译名几乎都是纯汉字(如「葬送的芙莉莲」),原先靠 containsHan
判中文会把日本动画误判成国漫。新增 isChineseAnime:仅在有 origin_country/
语言元数据,或无元数据但有显式中文标记(国漫/国产/国创/华语)时才判国漫,
否则默认日番。有元数据时只认元数据,不受错误源目录名(如「国产剧」)误导。
未刮削的国漫刮出 origin_country=CN 后仍正确归类。补 4 个分类器测试用例。
2026-06-18 19:57:59 +00:00
ShukeBta b16f7d6663 fix(organize): 入库二级分类对齐MoviePilot结构 + 手动整理不再作为一级目录
- anime 顶层目录独立为「动漫」(动漫/{国漫,日番,儿童}),不再混入电视剧
- categoryPhysicalRootDir 把二级分类名映射到正确顶层:
  动画电影/华语电影/外语电影→电影; 国漫/日番/儿童→动漫;
  国产剧/日韩剧/欧美剧/纪录片/综艺/未分类→电视剧; 成人→成人
- 新增 staging 重定向:目标根落在「手动整理」等暂存目录时,上提到
  父级媒体根,媒体真正归入分类目录(如 媒体/电影/华语电影/片名),
  而非停留在手动整理下或与分类目录并列
- organizeLibraryRootForLayout 跳过 staging 名的库,避免回流暂存目录
- 同步更新陈旧测试期望(电视剧→动漫)+新增 staging 重定向测试
2026-06-18 19:32:59 +00:00
ShukeBta 0cec6606c1 fix(telegram): 区分'不在群'与'查不了',修复在群却被拒注册/绑定
getChatMember 失败(Bot不在群/频道非管理员/群ID失效/代理超时)此前被
吞成 false,导致已在群用户收到'不在绑定群组'误导提示。

- telegramChatMembership 返回三态(是/否/查不了)
- telegramUserBindDecision 据此返回 allowed/denied/unverifiable
- 四个拦截点(start绑定/register/redeem注册/hideadult)在'查不了'
  时改提示管理员检查Bot权限与群ID,不再误导用户
- syncgroupm 仅在'查实非成员'时判定可清理,查不了保守跳过防误删
- getChatMember 超时 8s->15s,缓解代理回退预算耗尽
2026-06-18 17:50:54 +00:00
ShukeBta 0a3748e564 Fix subscription restore and media library entry links 2026-06-18 10:54:10 +08:00
ShukeBta 6c50697a1a Fix cloud media metadata repair and merging 2026-06-18 02:58:30 +08:00
ShukeBta b492d9f867 Fix license sync and cloud scan scheduling 2026-06-18 01:39:39 +08:00
yebuwudong 692b7fb9df Improve Telegram notifications 2026-06-18 00:35:53 +08:00
ShukeBta e4b1488e11 Fix manual scrape apply for cloud media 2026-06-18 00:27:26 +08:00
ShukeBta 0291ab8194 Fix media scraping rename and compose pulls 2026-06-17 23:59:13 +08:00
ShukeBta 29ac7765d2 Fix logo assets and license heartbeat 2026-06-17 23:30:31 +08:00
ShukeBta fb362e1fec Backfill license usage and restore bot proxy fallbacks 2026-06-17 22:22:46 +08:00
ShukeBta a0aeb07f03 Fix notification event toggles and license heartbeat 2026-06-17 20:35:11 +08:00
ShukeBta 850d3db811 Fix scraping workflows subscriptions bot and recycle bin 2026-06-17 19:48:17 +08:00
ShukeBta ab4637beed Update MediaStationGo branding and deployment docs 2026-06-17 16:01:16 +08:00
ShukeBta 3368ac2947 Fix bot binding and terminal device limits 2026-06-17 01:06:20 +08:00
ShukeBta 8e5bf73edc Fix Emby handler tests on clean CI 2026-06-17 00:23:59 +08:00
ShukeBta 801af37462 Harden cleanup and client compatibility 2026-06-17 00:06:51 +08:00
ShukeBta 7766588f67 Rename Telegram compatibility commands to Mgo 2026-06-16 23:08:14 +08:00
ShukeBta 6e7854e8f6 Harden Telegram bot cleanup commands 2026-06-16 18:52:04 +08:00
ShukeBta 829b88036a Parallelize cloud library listing 2026-06-16 15:21:19 +08:00
ShukeBta 18ae6df115 Deduplicate missing cloud config warnings 2026-06-16 13:44:11 +08:00
ShukeBta 866b75f644 fix: refresh license status from server edits 2026-06-16 13:19:42 +08:00
ShukeBta 3f40b18909 Limit and split production logs 2026-06-16 12:58:27 +08:00
ShukeBta 877912fe4b Import local media before track probing 2026-06-16 12:31:07 +08:00
ShukeBta 5fc907e51b Fix subscription dedupe and scan throughput 2026-06-16 11:32:48 +08:00
ShukeBta 833966afb2 Clarify cleanup rule bot commands 2026-06-16 02:47:00 +08:00
ShukeBta a9b85c0f3f Allow virtual media reference ids 2026-06-16 02:20:27 +08:00
ShukeBta db45b46f7b Fix SQLite migration fallback source 2026-06-15 23:29:35 +08:00
ShukeBta 61949c1e1c Fix SQLite to PostgreSQL media migration 2026-06-15 22:11:58 +08:00
ShukeBta fea1b1dda1 Fix PostgreSQL migration resume and home crash guard 2026-06-15 20:13:30 +08:00
ShukeBta 90bfeb11f2 Hide Telegram compatibility aliases from command menus 2026-06-15 18:28:04 +08:00
ShukeBta eec2ee7fe3 Merge remote-tracking branch 'origin/main' into fix/organize-pipeline-cleanup 2026-06-15 18:19:24 +08:00
ShukeBta a5bf4bfdd4 Improve large library storage backends and scans 2026-06-15 18:16:34 +08:00
ShukeBta c9e6adf041 Support Chinese retention rule edits 2026-06-15 02:21:25 +08:00
ShukeBta ea44f21fcf Unify Telegram bot retention rules 2026-06-15 02:11:46 +08:00
ShukeBta 03be4df6e2 Hide duplicate Telegram bot command aliases 2026-06-15 01:43:24 +08:00
ShukeBta 9b9f8eae02 Adapt Sakura-style bot management commands 2026-06-15 01:21:45 +08:00
ShukeBta 406b311a8e Fix login stalls and bot redemption routing 2026-06-15 01:03:07 +08:00
ShukeBta 904701f29f Fix login stalls and bot redemption routing 2026-06-15 01:00:05 +08:00
ShukeBta 479a06f008 Unify organize ingest pipeline 2026-06-14 23:17:52 +08:00
ShukeBta a623702276 Deduplicate organize by multi-source metadata 2026-06-14 01:25:44 +08:00
ShukeBta 4a3ed77395 Fix organize metadata matching and Telegram group privacy 2026-06-14 01:12:55 +08:00
ShukeBta c76c72966a Fix organize targets and cloud transfer controls 2026-06-14 00:27:39 +08:00
ShukeBta 52b772ea45 Fix cloud playback and organize ingest pipeline 2026-06-13 23:21:56 +08:00
ShukeBta 4b2839d753 prefer openlist api credentials 2026-06-13 20:28:23 +08:00
ShukeBta b2b43e58da enforce pure cloud 302 playback 2026-06-13 17:45:10 +08:00
ShukeBta b6047af9fb add cloud playback diagnostics 2026-06-13 17:26:49 +08:00