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 正确)
37 lines
1.3 KiB
TypeScript
37 lines
1.3 KiB
TypeScript
import type { LucideIcon } from 'lucide-react'
|
|
import {
|
|
Download,
|
|
FileOutput,
|
|
FolderOpen,
|
|
Library,
|
|
Settings,
|
|
Sparkles,
|
|
Tv,
|
|
Upload,
|
|
User,
|
|
Users,
|
|
} from 'lucide-react'
|
|
|
|
export type LayoutNavItem = {
|
|
to: string
|
|
label: string
|
|
icon: LucideIcon
|
|
end?: boolean
|
|
permission?: string
|
|
adminOnly?: boolean
|
|
}
|
|
|
|
export const LAYOUT_NAV_ITEMS: LayoutNavItem[] = [
|
|
{ to: '/profile', label: '个人资料', icon: User },
|
|
{ to: '/libraries?from=admin', label: '媒体库', icon: Library },
|
|
{ to: '/scraper/queue', label: '刮削队列', icon: Sparkles, adminOnly: true },
|
|
{ to: '/admin', label: '用户管理', icon: Users, adminOnly: true },
|
|
{ to: '/files', label: '文件管理', icon: FolderOpen, adminOnly: true },
|
|
{ to: '/settings', label: '系统设置', icon: Settings, adminOnly: true },
|
|
// Emby 挂载(设置区):远程 Emby 媒体库挂载
|
|
{ to: '/emby-mount', label: 'Emby 挂载', icon: Tv, adminOnly: true },
|
|
// STRM 管理(设置区):网盘目录生成 strm 与元数据下载/上传队列
|
|
{ to: '/strm', label: 'STRM 管理', icon: FileOutput, adminOnly: true },
|
|
{ to: '/strm/downloads', label: '下载队列', icon: Download, adminOnly: true },
|
|
{ to: '/strm/uploads', label: '上传队列', icon: Upload, adminOnly: true },
|
|
] |