truewhile
04fc50a4b0
Add library favourite buttons and fix remote favourites list ( #14 )
...
* Add favourite buttons to library list and series detail pages
Co-authored-by: truewhile <truewhile@users.noreply.github.com >
* Fix favourites list for remote Emby mounted media
Co-authored-by: truewhile <truewhile@users.noreply.github.com >
* Route favourites to library series detail when appropriate
Co-authored-by: truewhile <truewhile@users.noreply.github.com >
* Fix favourites link to library series for remote anime paths
Co-authored-by: truewhile <truewhile@users.noreply.github.com >
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: truewhile <truewhile@users.noreply.github.com >
2026-09-02 14:14:32 +08:00
truewhile
97b3a7bd7f
feat(emby): support multiple connection lines for remote mount ( #9 )
...
Add account-level multi-line configuration for emby_remote mounts.
Lines are stored in strm_accounts.config as a urls JSON array with
backward compatibility for the legacy single url field. The backend
automatically fails over to the next line on connection errors and
persists the working active_line index.
Frontend: multi-line editor on Emby mount page and STRM account dialog
with add/remove/reorder, line names, and URL validation.
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: truewhile <truewhile@users.noreply.github.com >
2026-09-02 11:19:56 +08:00
Cursor Agent
077458df31
Update Docker images to ghcr.io/truewhile/mmtl
...
Replace legacy shukebta/shukbet image references across all compose
templates, system update defaults, and security docs.
Co-authored-by: truewhile <truewhile@users.noreply.github.com >
2026-09-02 01:59:48 +00:00
Cursor Agent
ba621cfc4a
Optimize home/library loading and SQLite query performance
...
- Replace home preview N+1 queries with a single window-function batch query
- Cache library previews and series card lists (15s TTL, shared with media cache)
- Tune SQLite: larger page cache, mmap, wal_autocheckpoint, ANALYZE on migrate
- Defer history fetch on library page until last_played sort is selected
- Yield to browser between paginated library loads to keep UI responsive
Co-authored-by: truewhile <truewhile@users.noreply.github.com >
2026-09-02 01:39:28 +00:00
truewhile
b503fdee7a
优化续播
2026-09-01 23:16:11 +08:00
truewhile
d3233a62c0
优化
2026-09-01 22:43:30 +08:00
truewhile
78526afc9c
优化
2026-09-01 21:24:55 +08:00
truewhile
db64a6c093
优化
2026-09-01 18:55:05 +08:00
truewhile
af67f4cd6e
优化
2026-09-01 16:26:25 +08:00
truewhile
7ac75ec69a
fix: 修复 beta CI 失败的两个平台/网络敏感测试
...
- TestSanitizePathWithSpecialChars:Windows 盘符断言按 runtime.GOOS 分支
(Linux 下反斜杠统一为分隔符,期望 D/test/...)
- TestEnrichOneAdultScrapesArtwork:AdultProvider 改用 RoundTripper 全量
mock,拦截所有外网请求(CI 环境可达 javdb/dmm 时会把真实封面写入
断言导致失败);断言放宽为封面路径后缀
2026-09-01 14:22:52 +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
5a5555d28a
fix: 远程 Emby 无图条目不再下发无效图片 URL(封面破图修复)
...
- 远程条目仅当 ImageTags 含 Primary/Backdrop 时才生成图片 URL;
无图条目 poster_url 为空,前端走 No Poster 优雅占位而非裂图
- 剧集海报回退使用 Emby 的 SeriesPrimaryImageTag(Fields=SeriesPrimaryImage),
仅当系列真实有图时才回退,避免连环无效请求
- 列表/剧集接口带 SeriesPrimaryImage 字段
2026-09-01 13:26:57 +08:00
truewhile
4dc9cbe2e7
feat: 网页端完整浏览/播放远程 Emby 挂载库
...
- 后端新增远程库→本地结构映射(emby_remote_web.go):Library/Media/SeriesCard
与本地完全同构,前端无感知
- /api/libraries(含 with_preview)、/api/libraries/:id、/api/libraries/:id/media、
/api/libraries/:id/series、/api/libraries/:id/series/episodes、/api/media/:id、
/api/media/:id/episodes 全部支持远程伪装 ID 透传映射
- /api/stream/:id 对远程条目 302 直连远程 Emby 原地址(播放不经过本机)
- 库内容按 CollectionType 过滤(电影库取 Movie、剧集库取 Series),
RecursiveItemCount 作为系列集数;修复伪装 ID 双重编码导致的图片/详情 500
- SPA fallback 放行 /library/embyremote~ 前缀(不再被当作 Emby API 路由 404)
- 前端:远程库/条目标记 is_remote_emby,隐藏扫描/刮削/编辑/NFO/回收站/
HLS 转码等不适用操作;后台管理面板过滤远程库
2026-09-01 11:32:54 +08:00
truewhile
6af0e5fdcf
fix: Emby 远程挂载播放地址强制下发 + 凭据状态显示修正
...
- PlaybackInfo 始终构造 DirectStreamUrl(远程 PlaybackInfo 默认不带该字段,
此前客户端拿不到播放地址):默认指向远程 Emby 原地址(不代理),
开启代理时指向 MMTL /Videos/{encoded} 反代端点
- HasStrmAccountCredential 对 emby_remote 放宽为 url+用户名/密码 即视为
已配置(此前只认 api_key,导致列表误显示「凭据:未配置」)
2026-09-01 11:06:36 +08:00
truewhile
f0055b76fe
fix: Emby 远程挂载账号编辑保留凭据 + 代理开关回显
...
- UpdateStrmAccount 对 emby_remote 做合并式更新:只覆盖传入键,未提及的
地址/用户名/密码/token 密文保留,避免编辑代理开关时清空凭据
- 账号列表/编辑表单回显 proxy_play(服务端解密后下发)
- 前端 StrmAccount 类型与编辑对话框支持 proxy_play 回显
2026-09-01 10:45:52 +08:00
truewhile
0eb3f104f4
feat: Emby 远程挂载(联邦聚合)功能 beta
...
- 新增 emby_remote 提供方:通过 STRM 账号体系配置远程 Emby 地址/用户名/密码
- EmbyService 聚合远程媒体库 Views/Items/详情/最近添加/全局搜索,远程数据不落库
- 条目 ID 统一伪装为 embyremote~{account}~{id},请求按账号路由回远程
- 播放支持账号级 proxy_play 配置:默认客户端直连远程;开启后由 MMTL 反向代理流/字幕
- 图片/元数据全部实时透传远程,播放状态(已看/收藏)透传回远程 Emby
- cloud 包新增 emby Provider(Ping/List/Resolve),账号测试/目录浏览自动生效
- 前端 STRM 页面支持 Emby 远程挂载账号(地址+凭据+代理开关)
2026-09-01 10:44:01 +08:00
truewhile
fa9307e2e1
优化
2026-08-30 21:40:58 +08:00
truewhile
ea5cb3a130
优化
2026-08-29 22:16:21 +08:00
truewhile
7425c3d57b
优化
2026-08-28 22:38:09 +08:00
truewhile
c30dab56a3
优化
2026-08-28 22:20:01 +08:00
truewhile
47d10e1f58
优化
2026-08-28 18:28:09 +08:00
truewhile
994f64f753
优化
2026-08-28 16:27:11 +08:00
truewhile
6e8eac9887
优化
2026-08-27 23:40:12 +08:00
truewhile
496a897782
优化
2026-08-27 21:24:01 +08:00
truewhile
14037d5dea
5
2026-08-27 15:42:00 +08:00
truewhile
0413d123da
4
2026-08-27 14:20:05 +08:00
truewhile
3c25bb5d61
3
2026-08-27 13:40:46 +08:00
truewhile
fc6e2e6f10
优化 strm 同步记录:支持删除记录并展示上传数量统计
2026-08-27 10:08:54 +08:00
truewhile
07e340251b
优化
2026-08-26 23:32:02 +08:00
truewhile
c3187f6e3f
优化上传逻辑
...
优化上传逻辑
2026-08-26 21:41:06 +08:00
truewhile
2888ae8bf7
8
2026-08-26 17:05:41 +08:00
truewhile
1d53bf2ae1
7
2026-08-26 16:16:39 +08:00
truewhile
87c66a9b8c
6
2026-08-26 15:50:59 +08:00
truewhile
0384017e98
6
2026-08-26 14:50:06 +08:00
truewhile
6aefe18caa
5
2026-08-26 12:52:10 +08:00
truewhile
4764c09572
4
2026-08-26 12:11:56 +08:00
truewhile
13c9035b76
3
2026-08-26 11:37:58 +08:00
truewhile
431f7f088b
2
2026-08-26 11:18:53 +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
9ffb74adce
优化
...
优化
2026-08-25 23:19:07 +08:00
truewhile
8fa5db88ff
优化
...
优化
2026-08-25 22:54:46 +08:00
truewhile
585434010c
优化
...
优化
2026-08-25 22:12:05 +08:00
truewhile
efa64051ea
优化
...
优化
2026-08-25 16:39:47 +08:00
truewhile
da1fb02c9d
优化
...
优化
2026-08-25 14:12:59 +08:00
truewhile
5584862352
处理bug
...
处理bug
2026-08-25 11:30:51 +08:00
truewhile
96a554b4b5
优化弹幕识别逻辑
...
优化弹幕识别逻辑
2026-08-25 00:26:32 +08:00
truewhile
60b11bc2bc
优化
...
优化
2026-08-24 22:38:23 +08:00
truewhile
93c7487c96
优化播放体验
...
优化播放体验
2026-08-24 22:16:31 +08:00