truewhile
5faa6975d0
优化标签
2026-09-16 13:50:06 +08:00
truewhile
cbfae0252e
t添加标签功能
2026-09-16 12:30:34 +08:00
truewhile
a563ee11d6
优化,添加滚动记忆
2026-09-15 00:00:35 +08:00
truewhile
fa4c90d47a
bug处理
2026-09-14 21:40:13 +08:00
truewhile
1ec8303fec
bug处理
2026-09-14 21:16:34 +08:00
truewhile
5c85478883
1
2026-09-14 12:33:59 +08:00
truewhile
b7f1cd85f8
支持按用户保存播放器与弹幕偏好
...
在 user 记录上新增播放器音量、弹幕开关、透明度、字号、显示区域、合并偏好、自定义弹幕源以及 dandanplay 应用凭据字段,并提供 PUT /danmaku/settings 局部更新接口,带取值校验。
返回脱敏后的完整渲染配置,绝不回传应用密钥,仅在响应中标记密钥是否已配置。
结果缓存键加入用户 ID 与凭据指纹,避免不同用户或凭据串用缓存;旧版实例级设置仅作为未登录与迁移期的回退。
2026-09-13 23:01:43 +08:00
truewhile
b8e48a1f45
优化
2026-09-13 21:23:06 +08:00
truewhile
d6355d5582
Keep TV episodes as mixed-series representatives
2026-09-11 19:52:49 +08:00
truewhile
0f06bdf929
支持 ASS 字幕原样渲染与字幕显示设置
2026-09-11 19:35:08 +08:00
truewhile
2bb3610da7
添加繁体转简体,简体转繁体功能
2026-09-11 15:14:24 +08:00
truewhile
9ca1b28cb4
优化
2026-09-10 22:30:17 +08:00
truewhile
8f2551a1b6
优化排序
2026-09-09 22:24:45 +08:00
truewhile
18e6cb40fd
完善动漫特别内容分类与版本判定
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-09 22:03:52 +08:00
truewhile
62206aa05a
优化
2026-09-09 19:26:22 +08:00
truewhile
d489c1608e
优化strm多版本显示
2026-09-09 17:07:21 +08:00
truewhile
38b85bb487
feat(strm): 同名多版本择优 / keep_ext,并支持合并展示与播放切换 ( #30 )
...
* feat(strm): 同名多版本择优/keep_ext,并支持合并展示与播放切换
默认对同名不同扩展(如 .mkv/.mp4)按体积→mtime→扩展名优先级择优生成一条 strm,冲突打日志;开启 keep_ext 则分别生成 name.ext.strm。媒体详情与播放器可切换版本,列表继续合并同片多版本,Emby MediaSources 名称区分容器/分辨率。
Co-authored-by: truewhile <truewhile@users.noreply.github.com >
* fix(meta): 边车匹配忽略 .mkv.strm 中间扩展,同片共享 NFO/海报/字幕
NFO、海报、字幕与刮削写出统一使用 mediaSidecarBase 词干,使竞女01.mkv.strm
与竞女01.mp4.strm 配对同一套 竞女01.nfo / 竞女01-poster / 竞女01.srt;
仍兼容历史上的 name.mkv.nfo 命名。
Co-authored-by: truewhile <truewhile@users.noreply.github.com >
* fix(emby): People NFO 按共享词干匹配 keep_ext strm
resolveMediaPeople 改为查找竞女01.nfo(并兼容旧的竞女01.mkv.nfo),
同时修正把 decodeNFOFile 的 partial 误当 ok 导致完整 NFO 被跳过的问题。
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-07 13:56:30 +08:00
truewhile
d96782622d
bug处理
2026-09-05 23:02:26 +08:00
truewhile
4790f7753e
bug处理
2026-09-05 01:15:11 +08:00
truewhile
cd720ae879
优化
2026-09-04 09:06:15 +08:00
truewhile
1e291df647
feat: persist pinned libraries per user with cross-device sync ( #20 )
...
Store pinned library IDs on the user record and expose GET/PUT
/me/pinned-libraries endpoints. The web client now loads and saves pins
through the API, migrates legacy localStorage data once, and applies
pinned ordering on both the libraries and home pages.
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: truewhile <truewhile@users.noreply.github.com >
2026-09-03 08:47:06 +08:00
truewhile
b0fe40142a
Rebrand MMTL to MeBox (name, logo, Docker image) ( #17 )
...
* Rebrand MMTL to MeBox across codebase and assets
Rename the project display name, Go module path, environment variable
prefix (MEBOX_*), Docker image references, and UI branding from MMTL/mmtl
to MeBox/mebox. Replace logo assets with the new MeBox icon and keep
legacy SQLite migration support for existing mmtl.db deployments.
Co-authored-by: truewhile <truewhile@users.noreply.github.com >
* Fix logo icons: use cube-only crop without truncated text
Previous icon generation cropped too much of the source image, including
partial MeBox wordmark text that was cut off in square icon containers.
Regenerate logo-64/192/512, favicon, and SVG from cube-only region.
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 16:26:28 +08:00
truewhile
bf49323789
feat(strm): auto-append remote directory tail to local output path ( #16 )
...
When adding or editing a cloud sync path, append the last segment of the
remote directory to the local output directory (e.g. /home/ubuntu/strm + 电影).
Remote changes replace the previous auto-appended tail; local browse and blur
commit the base path with the current remote tail.
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: truewhile <truewhile@users.noreply.github.com >
2026-09-02 15:51:31 +08:00
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
791722aec6
feat(libraries): add pin-to-top for media library list ( #10 )
...
Allow users to pin frequently used libraries to the top of the
Libraries page. Pinned order is stored in localStorage and applied
to both entry cards and preview shelves.
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: truewhile <truewhile@users.noreply.github.com >
2026-09-02 11:35:20 +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
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
a4a2bde1a4
优化
2026-08-30 20:05:27 +08:00
truewhile
cd1297a30f
添加弹幕功能
...
添加弹幕功能
2026-08-24 00:37:25 +08:00
ShukeBta
f436267572
fix(media): stabilize series grouping across library layouts
2026-08-10 19:16:19 +08:00
ShukeBta
19381eb270
Fix media classification scraping and Chinese naming
2026-07-15 20:45:24 +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
41f39d9701
fix review regressions in titles and strm paths
2026-06-27 16:07:30 +08:00
ShukeBta
e22b537de4
fix library deletion and strm path handling
2026-06-27 15:58:15 +08:00
ShukeBta
b2c04bb7b6
fix: clean media classification and series grouping
2026-06-25 05:37:31 +08:00
ShukeBta
7efa5d20b0
fix: tighten frontend quality checks
2026-06-25 04:33:41 +08:00
ShukeBta
3d3679c21c
fix: prevent episode metadata from splitting series
2026-06-25 02:32:55 +08:00
ShukeBta
e56eed0758
fix: improve discover and manual scrape controls
2026-06-24 15:56:35 +08:00
ShukeBta
6be3409e3e
fix: improve discover and series special handling
2026-06-24 14:49:26 +08:00
ShukeBta
34c9cb4244
fix: improve discover and manual scrape flows
2026-06-24 13:58:04 +08:00
ShukeBta
192f35d9fa
refactor: split modules and harden scraping workflows
2026-06-24 11:59:18 +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
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
6c50697a1a
Fix cloud media metadata repair and merging
2026-06-18 02:58:30 +08:00
ShukeBta
fea1b1dda1
Fix PostgreSQL migration resume and home crash guard
2026-06-15 20:13:30 +08:00
ShukeBta
fd0428ee7d
fix cloud library mounts and artwork caching
2026-06-10 20:43:42 +08:00