ShukeBta
e7d988ebf8
feat: transfer STRM tree subtitle links
2026-07-02 22:41:37 +08:00
ShukeBta
ccd9756b6f
feat: report ignored STRM tree sidecars
2026-07-02 22:14:16 +08:00
ShukeBta
1afc69baa0
feat: report STRM tree batch progress
2026-07-02 21:48:53 +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
5ecb5e2144
fix system update current version display
2026-07-02 00:04:04 +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
a2be6a2127
fix library display and docker compose update
2026-06-27 16:54:33 +08:00
ShukeBta
8d0aa2b589
fix issue 51 library reclassify regressions
2026-06-27 00:40:39 +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
74aa654c92
fix: enforce license-backed user capacity
2026-06-25 13:27:15 +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
192f35d9fa
refactor: split modules and harden scraping workflows
2026-06-24 11:59:18 +08:00
ShukeBta
efca3cbe69
fix media playback and library workflows
2026-06-21 12:53:52 +08:00
ShukeBta
7b881d031c
fix organizer diagnostics and site integrations
2026-06-21 09:44:29 +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
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
e4b1488e11
Fix manual scrape apply for cloud media
2026-06-18 00:27:26 +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
479a06f008
Unify organize ingest pipeline
2026-06-14 23:17:52 +08:00
ShukeBta
c76c72966a
Fix organize targets and cloud transfer controls
2026-06-14 00:27:39 +08:00
ShukeBta
5f42836bbf
fix organize trigger task flow
2026-06-13 17:08:56 +08:00
ShukeBta
4e0929bbca
fix organize path mapping and task flow
2026-06-13 16:32:38 +08:00
ShukeBta
a177dc61dd
fix emby clients and cloud playback controls
2026-06-13 12:08:57 +08:00
ShukeBta
2ad9606ad5
fix full library display and cloud search visibility
2026-06-11 18:50:05 +08:00
ShukeBta
542e85a067
fix: reduce emby load and stabilize strm scan
2026-06-11 00:18:51 +08:00
ShukeBta
859d6e9d24
implement automatic strm generation
2026-06-10 21:36:55 +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
0f82cb3084
feat: improve OpenList cloud storage support
2026-06-10 00:08:35 +08:00
ShukeBta
eab8c3c709
feat: add clouddrive2 storage bridge
2026-06-09 20:22:00 +08:00
ShukeBta
7d7f3cc758
feat: add cloud transfer and cache optimizations
2026-06-09 19:03:28 +08:00
ShukeBta
76fe0dbde9
feat: scrape metadata after organize
2026-06-09 17:00:24 +08:00
ShukeBta
fe0e7a09ce
fix: improve media file organization workflow
2026-06-09 13:57:34 +08:00
ShukeBta
8c8d472524
fix: add smart download classification
2026-06-07 21:34:21 +08:00
ShukeBta
df02fd1166
fix: harden bot accounts and download handling
2026-06-07 18:30:27 +08:00
ShukeBta
d94330b30f
fix(subscription): prevent duplicate qb downloads
2026-06-07 10:05:58 +08:00
ShukeBta
de3f1f3bb4
fix: honor licensed user limits
2026-05-30 21:48:09 +08:00
soldosluka857
74271081f4
feat(cloud): 115/夸克网盘 providers with cookie + QR login and 302 playback
...
Add a pluggable cloud-disk subsystem (internal/service/cloud) exposing remote
files as playable media via HTTP 302 redirects, so the host never transcodes
nor (by default) streams the bytes:
- quark (夸克网盘): cookie auth, directory listing + download_url resolution.
- cloud115 (115 网盘): cookie auth + QR-code login flow (token/poll/exchange);
pickcode → CDN URL resolved for 302 offload.
- StorageConfigService gains cloud types, Ping() probes, List/Resolve/Import.
- New endpoints: admin /cloud/:type/{list,import,qr/start,qr/poll} and authed
/cloud/play/:type (302 redirect, or reverse-proxy when the link needs auth
headers). Imported files become Media rows with STRMURL → the play endpoint.
- Frontend: 115网盘/夸克网盘 tabs with cookie input, 115 QR-code login, a cloud
file browser and one-click 302 import.
Providers are exercised against httptest mock servers (list/resolve/QR state
machine). Live login + playback require a real cloud account.
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-05-30 21:04:23 +08:00
soldosluka857
e50282178d
feat(playback): client direct-play decode mode (release host transcoding)
...
Add an admin toggle playback.direct_only that offloads all decoding to the
client. When enabled:
- Emby PlaybackInfo no longer advertises SupportsTranscoding nor a
TranscodingUrl, forcing Emby/Infuse/Yamby clients to direct play.
- HLS endpoints refuse (ErrTranscodeDisabled) so the host never spawns ffmpeg.
- Web player forces direct play, hides the HLS toggle, and surfaces a hint.
Exposed via /system/info (direct_play_only) and the Settings page.
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-05-30 21:04:23 +08:00
Shuke
48aa08fc94
Revert "feat(playback): client direct-play decode mode (release host transcoding)"
...
This reverts commit 8fd2ab4b51 .
2026-05-30 21:04:03 +08:00