ShukeBta
|
e700962f2a
|
feat: refresh libraries after STRM updates
|
2026-07-02 23:20:08 +08:00 |
|
ShukeBta
|
2df7c34cf7
|
feat: add STRM repair workflow
|
2026-07-02 23:01:36 +08:00 |
|
ShukeBta
|
e7d988ebf8
|
feat: transfer STRM tree subtitle links
|
2026-07-02 22:41:37 +08:00 |
|
ShukeBta
|
87928cfa4d
|
feat: batch STRM tree generation
|
2026-07-02 21:35:50 +08:00 |
|
ShukeBta
|
d11f784438
|
feat: add STRM tree dry-run preview
|
2026-07-02 21:15:11 +08:00 |
|
ShukeBta
|
c07290619c
|
fix: improve media grouping and bot startup
|
2026-07-02 20:36:45 +08:00 |
|
ShukeBta
|
a1687eb746
|
fix docker compose paths and subscription robustness
|
2026-07-02 03:35:52 +08:00 |
|
ShukeBta
|
0493823b99
|
fix legacy library scan and empty pages
|
2026-07-01 22:54:13 +08:00 |
|
ShukeBta
|
941bb273b9
|
fix media organize and subscription workflows
|
2026-06-30 20:18:02 +08:00 |
|
ShukeBta
|
a97dc35790
|
fix: stabilize library paths and subscription matching
|
2026-06-28 12:15:10 +08:00 |
|
ShukeBta
|
e4abb03ca5
|
fix subscription management loading
|
2026-06-27 19:17:27 +08:00 |
|
ShukeBta
|
a2be6a2127
|
fix library display and docker compose update
|
2026-06-27 16:54:33 +08:00 |
|
ShukeBta
|
5dfe42b253
|
split admin settings handlers
|
2026-06-27 13:35:22 +08:00 |
|
ShukeBta
|
1d259f5135
|
split cloud mount handler
|
2026-06-27 13:29:16 +08:00 |
|
ShukeBta
|
6d5a141096
|
split cloud qr handlers
|
2026-06-27 12:20:05 +08:00 |
|
ShukeBta
|
a0b8ab3807
|
split metadata enrichment helpers
|
2026-06-27 02:58:26 +08:00 |
|
ShukeBta
|
8d0aa2b589
|
fix issue 51 library reclassify regressions
|
2026-06-27 00:40:39 +08:00 |
|
ShukeBta
|
4c839b3f4e
|
split media handler scan routes
|
2026-06-27 00:18:02 +08:00 |
|
ShukeBta
|
5c59664ed2
|
split license handler helpers
|
2026-06-26 23:32:49 +08:00 |
|
ShukeBta
|
5ef831f830
|
support multiple roots per library
|
2026-06-26 22:18:26 +08:00 |
|
ShukeBta
|
93be60ed99
|
add docker hot update management
|
2026-06-26 13:02:40 +08:00 |
|
ShukeBta
|
65adca04df
|
fix media workflows and download organization
|
2026-06-26 08:42:16 +08:00 |
|
ShukeBta
|
0da96f7e4e
|
feat: verify license responses with public key
|
2026-06-25 14:46:28 +08:00 |
|
ShukeBta
|
a4a93b7fed
|
fix: report licensed instances on startup
|
2026-06-25 14:11:13 +08:00 |
|
ShukeBta
|
74aa654c92
|
fix: enforce license-backed user capacity
|
2026-06-25 13:27:15 +08:00 |
|
ShukeBta
|
bce0143dbc
|
merge: integrate media workflow fixes
|
2026-06-25 12:45:45 +08:00 |
|
ShukeBta
|
9021007027
|
fix: harden playback and security edge cases
|
2026-06-25 02:33:30 +08:00 |
|
ShukeBta
|
baa4a38b0a
|
fix: refresh emby sessions in realtime
|
2026-06-25 02:32:32 +08:00 |
|
ShukeBta
|
29f5df673c
|
fix: refresh emby realtime user sessions
|
2026-06-25 00:36:41 +08:00 |
|
ShukeBta
|
82df266c4e
|
refactor: split license client
|
2026-06-24 23:51:01 +08:00 |
|
ShukeBta
|
a7c8d46589
|
fix: show latest discover posters
|
2026-06-24 20:17:38 +08:00 |
|
ShukeBta
|
aa506d6566
|
fix: harden discover artwork caching
|
2026-06-24 19:26:32 +08:00 |
|
ShukeBta
|
d93a28f18f
|
fix: retry failed discover artwork
|
2026-06-24 17:24:15 +08:00 |
|
ShukeBta
|
520b99d50f
|
refactor: split emby handler compatibility tests
|
2026-06-24 16:37:11 +08:00 |
|
ShukeBta
|
6be3409e3e
|
fix: improve discover and series special handling
|
2026-06-24 14:49:26 +08:00 |
|
ShukeBta
|
a7fea2a0f5
|
refactor: split emby playback route tests
|
2026-06-24 12:54:18 +08:00 |
|
ShukeBta
|
192f35d9fa
|
refactor: split modules and harden scraping workflows
|
2026-06-24 11:59:18 +08:00 |
|
ShukeBta
|
c90c134d3a
|
fix media playback and library workflows
|
2026-06-21 12:58:21 +08:00 |
|
ShukeBta
|
efca3cbe69
|
fix media playback and library workflows
|
2026-06-21 12:53:52 +08:00 |
|
ShukeBta
|
6e61c8b545
|
feat(telegram): 订阅/下载补齐 year/rating/genres/原名/语言 富通知字段
- 模型: Subscription/DownloadTask 新增 OriginalName/OriginalLanguage/Year/
Rating/Genres 列(GORM AutoMigrate 自动建列, 无需手写迁移)
- enrich 链路: displayMetadata 与 DownloadTaskMeta 携带新字段, 从
SearchExternalMedia(TMDb/豆瓣/Bangumi)结果回填并持久化; 放宽提前返回
门槛, 已有海报但缺新字段时仍补齐
- 通知: 订阅/下载完成事件 data 注入 year/rating/genres/original_title/
original_language, 喂给作者富模板 formatTelegramMediaNotification
- 测试: 新增端到端断言, 验证补齐字段透传进 Telegram caption
|
2026-06-20 01:45:40 +08:00 |
|
ShukeBta
|
dff19801b6
|
fix(series): 彻底修复剧集被按单集显示且无法修复
根因(用真实数据确诊, 两个互相独立):
- Web 端拆集: episode NFO 的 <uniqueid type=tmdb> 是【单集 episode id】、
<title> 是【单集名】, mergeEpisodeMetadata 却无条件覆盖了整剧 tm_db_id /
original_name → 同剧每集 id/原名各不相同, 被 getSeriesKey 按 tmdb_id 拆成
N 张单集卡(实测「遮天」90 集 = 89 个不同 tmdb_id)。
- Emby 散装单集: 电影库混入按 Season/SxxE 整理的剧集结构内容, 被判成 Episode
却因 movie 库不聚 Series 而漏成散装单集。
- 无法修复: EnrichLibrary 只处理 pending/no_match, 跳过 matched 脏行。
修复:
- local_metadata.mergeEpisodeMetadata: 单集 NFO 的外部 id 不再写入整剧字段,
单集名不再污染 original_name; 整剧 id/原名只认 tvshow.nfo。
- groupSeries.ts: 剧集分组改「库+路径剧名」优先(整剧目录对全剧一致), 外部 id
仅作回退, 对存量脏数据也能合并。
- emby_compat: 电影库常规浏览新增 movieLibraryItems, 把剧集结构内容聚成 Series
卡片与真电影并列(方案 B), 不再漏散装单集。
- cloud_path_repair: 「修复+重刮」先把脏的 matched 剧集行重置为 pending 再重刮,
使其能被重新刮削; 结果新增 reset 计数。
- 新增 NormalizePollutedEpisodeMetadata 启动迁移(幂等): 按整剧目录聚合, 清洗
tmdb/原名散乱的剧组并重置 pending。
测试: local_metadata/emby_compat/cloud_path_repair/episode_metadata_cleanup
新增或更新断言; 修正 scanner_cloud_test 中依赖旧错误行为的用例。
|
2026-06-20 01:04:19 +08:00 |
|
ShukeBta
|
9b4884359b
|
fix(scrape): 单集名不再覆盖整剧 original_name 修复合集被拆集 + 媒体库页新增单库修复重刮
- 根因: 单集刮削把 TMDB episode.Name 写入 original_name(应为整剧原名),
导致同剧每集 original_name 不同, 合集分组键回退到标题时被拆成多集无法合并。
移除该覆盖, 保留单集 overview/剧照/评分/时长回填(不影响合集键)。
- 新增 RepairAndRescrapeLibrary 服务方法 + POST /admin/libraries/:id/repair-rescrape
路由 + 媒体库页「修复+重刮本库」按钮, 可按库单独触发修复(回填占位符外部 ID)并重刮,
既修空 ID 又借重刮覆盖此前被单集名污染的 original_name。
|
2026-06-19 21:29:02 +08:00 |
|
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
|
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
|
0a3748e564
|
Fix subscription restore and media library entry links
|
2026-06-18 10:54:10 +08:00 |
|
ShukeBta
|
b492d9f867
|
Fix license sync and cloud scan scheduling
|
2026-06-18 01:39:39 +08:00 |
|
ShukeBta
|
e4b1488e11
|
Fix manual scrape apply for cloud media
|
2026-06-18 00:27:26 +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 |
|