mirror of
https://github.com/truewhile/MeBox.git
synced 2026-09-29 03:26:37 +08:00
73b95a8e38
- 新增 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 正确)
19 lines
1022 B
TypeScript
19 lines
1022 B
TypeScript
import { api } from './client'
|
|
import type { EmbyMount, EmbyMountInput, RemoteEmbyView } from '../types/emby'
|
|
|
|
export const embyAPI = {
|
|
listMounts: () => api.get<EmbyMount[]>('/admin/emby/mounts').then((r) => r.data),
|
|
createMounts: (payload: EmbyMountInput) =>
|
|
api.post<{ ok: boolean; created: number }>('/admin/emby/mounts', payload).then((r) => r.data),
|
|
updateMount: (id: string, payload: { name?: string; proxy_play?: boolean; enabled?: boolean }) =>
|
|
api.put<EmbyMount>(`/admin/emby/mounts/${id}`, payload).then((r) => r.data),
|
|
deleteMount: (id: string) => api.delete(`/admin/emby/mounts/${id}`).then((r) => r.data),
|
|
listAccountViews: (accountId: string) =>
|
|
api.get<RemoteEmbyView[]>(`/admin/emby/accounts/${accountId}/views`).then((r) => r.data),
|
|
fullMountAccount: (accountId: string, proxy: boolean) =>
|
|
api
|
|
.post<{ ok: boolean; created: number }>(`/admin/emby/accounts/${accountId}/full-mount`, null, {
|
|
params: { proxy: proxy ? 1 : 0 },
|
|
})
|
|
.then((r) => r.data),
|
|
} |