truewhile
b503fdee7a
优化续播
2026-09-01 23:16:11 +08:00
truewhile
db64a6c093
优化
2026-09-01 18:55:05 +08:00
truewhile
af67f4cd6e
优化
2026-09-01 16:26:25 +08:00
truewhile
73b95a8e38
feat: Emby 挂载独立管理(媒体库级选择挂载 + 每库代理开关)
...
- 新增 EmbyMount 表与 /admin/emby/mounts CRUD:把远程 Emby 的媒体库按需
挂载到本项目(同一服务器可选择性挂载/全量挂载),代理开关下沉到每个
挂载(一个 Emby 服务器可部分库代理、部分库直连)
- 伪装 ID 改为 embyremote~{mountID}~{remoteID}:播放/详情/状态/图片链路
全部经 ResolveMount 解析挂载与账号
- 新增「Emby 挂载」独立菜单页(/emby-mount):账号管理(添加/测试/编辑/
删除)+ 挂载列表(代理切换/停用/取消)+ 选择挂载对话框(多选+全量)
- STRM 管理页过滤 emby_remote 账号;账号表单移除 emby 类型
- Boot 幂等 AutoSeedMounts:旧 emby 账号自动全量挂载(沿用旧代理配置),
升级后媒体库不消失
- 修复:远程流请求注入浏览器 UA(防 Cloudflare 风控)+ 代理强制 Static=true
(阻止远程 ffmpeg 转码调度,反代纯字节中继)
- 全局搜索改为按挂载逐个搜索(结果归属与伪装 ID 正确)
2026-09-01 13:53:15 +08:00
truewhile
c30dab56a3
优化
2026-08-28 22:20:01 +08:00
truewhile
6e8eac9887
优化
2026-08-27 23:40:12 +08:00
truewhile
496a897782
优化
2026-08-27 21:24:01 +08:00
truewhile
fc6e2e6f10
优化 strm 同步记录:支持删除记录并展示上传数量统计
2026-08-27 10:08:54 +08:00
truewhile
6aefe18caa
5
2026-08-26 12:52:10 +08:00
truewhile
9d359c40dd
1
2026-08-26 09:51:27 +08:00
truewhile
5f323eb2ce
优化
...
yo 优化
2026-08-26 08:43:36 +08:00
truewhile
b676733af7
优化strm同步
...
优化strm同步
2026-08-26 00:26:28 +08:00
truewhile
43fdfe8202
处理无法播放的问题
...
处理无法播放的问题
2026-08-24 21:06:44 +08:00
truewhile
44ca451cd4
优化
...
优化
2026-08-24 17:40:43 +08:00
truewhile
c55d29ae84
添加strm生成
...
添加strm
2026-08-24 14:36:17 +08:00
truewhile
71bf60c69c
初始化
...
初始化项目
2026-08-23 22:12:32 +08:00
ShukeBta
42ef19b7e5
fix(downloads): support Transmission and aria2 end to end
...
Fixes #65
2026-08-10 21:04:04 +08:00
ShukeBta
c0d743d89d
fix(subscriptions): reject concurrent duplicate rules
...
Fixes #66
2026-08-10 19:30:17 +08:00
ShukeBta
b610dda098
fix: align scraped media naming and release sorting
2026-07-03 02:55:33 +08:00
ShukeBta
941bb273b9
fix media organize and subscription workflows
2026-06-30 20:18:02 +08:00
ShukeBta
c8fe2f6516
fix active subscription visibility after updates
2026-06-27 15:14:43 +08:00
ShukeBta
49e8a0c34e
split media repository upsert strategy
2026-06-27 12:13:52 +08:00
ShukeBta
e41105910e
complete multi-root library path support
2026-06-26 23:02:07 +08:00
ShukeBta
5ef831f830
support multiple roots per library
2026-06-26 22:18:26 +08:00
ShukeBta
65adca04df
fix media workflows and download organization
2026-06-26 08:42:16 +08:00
ShukeBta
4e00c4c14d
fix: refresh stale scan-derived media metadata
2026-06-25 03:40:50 +08:00
ShukeBta
02fe4fd374
refactor: tighten media upsert metadata handling
2026-06-25 02:33:12 +08:00
ShukeBta
192f35d9fa
refactor: split modules and harden scraping workflows
2026-06-24 11:59:18 +08:00
ShukeBta
b40e2c7280
fix: 订阅恢复补缺集/单媒体手动整理入口/媒体库排序/网盘媒体分类迁移
...
- 订阅(问题1): selectPreparedSubscriptionCandidates 在本地已有部分集时不再
无条件丢弃整季/全集包,单集候选不足时用全集包兜底;Restore 重置 total_episodes
让下次 run 从权威元数据重算,避免被 feed 低估值锁死误判'无缺集'
- 单媒体整理(问题2): 后端已具备,新增 OrganizeMediaDialog 组件并在媒体详情页
接入'整理入库'按钮(可选类型/二级分类/目标路径/转移方式/预览)
- 媒体库排序(问题3): ListByLibrariesFiltered 改多级排序 year/updated_at/
created_at/id,id 作稳定 tie-breaker 消除云盘批量扫描同批时间戳的随机观感
- 网盘媒体消失(问题4): 云盘媒体 upsert 时允许 library_id 迁移到重新挂载的
更精确分类库(本地媒体物理位置固定不迁移),修复一键挂载子目录后媒体消失
2026-06-19 21:29:02 +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
6c50697a1a
Fix cloud media metadata repair and merging
2026-06-18 02:58:30 +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
a5bf4bfdd4
Improve large library storage backends and scans
2026-06-15 18:16:34 +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
1568ae127a
perf: 重构 FTS 索引为 rowid 寻址+触发器维护,根治重启 CPU 占满与扫描卡死
...
- FTS5 普通列(含 UNINDEXED)不支持索引查找,旧版按 media_id 做
NOT EXISTS/DELETE 全是整表扫描:启动回填 O(N^2) 烧 CPU 数小时,
扫描时每个 upsert 一次全表扫描,均隔着全局写锁拖死登录(125s 超时)
- v2 布局:FTS rowid 与 media.rowid 对齐,由 INSERT/UPDATE/DELETE
触发器实时维护;回填只剩 rowid 点查兜底,且去掉 ORDER BY
- 顺带修复刮削直写 Updates() 后新标题搜不到的问题(触发器覆盖)
- 写门改为 context 感知:长写语句不再让登录请求无限期排队
- warmMediaSearchIndex 延迟 30s 错峰启动
- library_scan 周期任务跳过云盘库(由 cloud_sync 夜间窗口负责),
首轮延迟从 15s 改为等满一个周期,重启不再立即全量扫描风暴
- prune 改为只取 id/path 并按 500 条批量删除,缩短写锁占用
2026-06-12 06:41:14 +00:00
ShukeBta
7d0afd0fcb
fix: reduce sqlite write pressure during scans
2026-06-11 21:45:53 +08:00
ShukeBta
52d75171b2
fix: allow login during sqlite write pressure
2026-06-11 20:06:55 +08:00
ShukeBta
7274ea19b7
fix: cap CPU and avoid heavy startup work
2026-06-11 19:48:00 +08:00
ShukeBta
2ad9606ad5
fix full library display and cloud search visibility
2026-06-11 18:50:05 +08:00
ShukeBta
23d1fbfddb
fix cloud library scale and playback compatibility
...
Root cause: display-only cloud library filtering was reused by scan jobs, merged cloud mounts could be skipped, and OpenList listing relied on WebDAV/first-page behavior that could cap huge directories around 100 items. Cloud scans also let new items consume probe budget before existing rows with missing track/artwork metadata.\n\nChanges:\n- split display filtering from scannable cloud filtering so merged cloud mounts still scan\n- add OpenList API pagination with WebDAV fallback\n- prioritize existing cloud media missing metadata before new imports\n- restrict automatic cloud sync to one successful 19:00-21:00 daily window and keep manual scan immediate\n- disable startup cloud full-scan by default, with an explicit opt-in setting\n- improve Emby/cloud playback compatibility and cache/search/test coverage from the continued work
2026-06-11 18:31:01 +08:00
ShukeBta
95794f7bbc
fix: add storage deletion with library cleanup and scan validation
...
- Delete storage config now properly removes related libraries and media
- Scanner validates storage config exists before starting cloud scan
- Prevents orphaned scans when storage is removed
- Added repository methods: DeleteByType, FindByID for storage config
- Remove unused storageHandler route to fix compilation
2026-06-11 12:48:32 +08:00
ShukeBta
fd0428ee7d
fix cloud library mounts and artwork caching
2026-06-10 20:43:42 +08:00
ShukeBta
0bf983cec8
fix: improve cloud mount scanning feedback
2026-06-10 18:46:30 +08:00
ShukeBta
df02fd1166
fix: harden bot accounts and download handling
2026-06-07 18:30:27 +08:00
ShukeBta
eb5ceba366
fix(bot): keep private replies out of group chats
2026-06-07 15:43:47 +08:00
ShukeBta
b38d47a27d
feat(bot): manage device policy via telegram commands
2026-06-07 12:24:21 +08:00
ShukeBta
d94330b30f
fix(subscription): prevent duplicate qb downloads
2026-06-07 10:05:58 +08:00