Files
MoonTVPlus/src/lib/admin.types.ts
2026-01-03 14:54:00 +08:00

176 lines
6.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
export interface AdminConfig {
ConfigSubscribtion: {
URL: string;
AutoUpdate: boolean;
LastCheck: string;
};
ConfigFile: string;
SiteConfig: {
SiteName: string;
Announcement: string;
SearchDownstreamMaxPage: number;
SiteInterfaceCacheTime: number;
DoubanProxyType: string;
DoubanProxy: string;
DoubanImageProxyType: string;
DoubanImageProxy: string;
DisableYellowFilter: boolean;
FluidSearch: boolean;
// 弹幕配置
DanmakuApiBase: string;
DanmakuApiToken: string;
// TMDB配置
TMDBApiKey?: string;
TMDBProxy?: string;
BannerDataSource?: string; // 轮播图数据源TMDB 或 TX
RecommendationDataSource?: string; // 更多推荐数据源Douban、TMDB、Mixed、MixedSmart
// Pansou配置
PansouApiUrl?: string;
PansouUsername?: string;
PansouPassword?: string;
// 评论功能开关
EnableComments: boolean;
// 自定义去广告代码
CustomAdFilterCode?: string;
CustomAdFilterVersion?: number; // 代码版本号(时间戳)
// 注册相关配置
EnableRegistration?: boolean; // 开启注册
RegistrationRequireTurnstile?: boolean; // 注册启用Cloudflare Turnstile
LoginRequireTurnstile?: boolean; // 登录启用Cloudflare Turnstile
TurnstileSiteKey?: string; // Cloudflare Turnstile Site Key
TurnstileSecretKey?: string; // Cloudflare Turnstile Secret Key
DefaultUserTags?: string[]; // 新注册用户的默认用户组
// OIDC配置
EnableOIDCLogin?: boolean; // 启用OIDC登录
EnableOIDCRegistration?: boolean; // 启用OIDC注册
OIDCIssuer?: string; // OIDC Issuer URL (用于自动发现)
OIDCAuthorizationEndpoint?: string; // 授权端点
OIDCTokenEndpoint?: string; // Token端点
OIDCUserInfoEndpoint?: string; // 用户信息端点
OIDCClientId?: string; // OIDC Client ID
OIDCClientSecret?: string; // OIDC Client Secret
OIDCButtonText?: string; // OIDC登录按钮文字
OIDCMinTrustLevel?: number; // 最低信任等级仅LinuxDo网站有效为0时不判断
};
UserConfig: {
Users: {
username: string;
role: 'user' | 'admin' | 'owner';
banned?: boolean;
enabledApis?: string[]; // 优先级高于tags限制
tags?: string[]; // 多 tags 取并集限制
}[];
Tags?: {
name: string;
enabledApis: string[];
}[];
};
SourceConfig: {
key: string;
name: string;
api: string;
detail?: string;
from: 'config' | 'custom';
disabled?: boolean;
proxyMode?: boolean; // 代理模式开关启用后由服务器代理m3u8和ts分片
}[];
CustomCategories: {
name?: string;
type: 'movie' | 'tv';
query: string;
from: 'config' | 'custom';
disabled?: boolean;
}[];
LiveConfig?: {
key: string;
name: string;
url: string; // m3u 地址
ua?: string;
epg?: string; // 节目单
from: 'config' | 'custom';
channelNumber?: number;
disabled?: boolean;
}[];
ThemeConfig?: {
enableBuiltInTheme: boolean; // 是否启用内置主题
builtInTheme: string; // 内置主题名称
customCSS: string; // 自定义CSS
enableCache: boolean; // 是否启用浏览器缓存
cacheMinutes: number; // 缓存时间(分钟)
cacheVersion: number; // CSS版本号用于缓存控制
loginBackgroundImage?: string; // 登录界面背景图
registerBackgroundImage?: string; // 注册界面背景图
};
OpenListConfig?: {
Enabled: boolean; // 是否启用私人影库功能
URL: string; // OpenList 服务器地址
Username: string; // 账号用于登录获取Token
Password: string; // 密码用于登录获取Token
RootPath: string; // 根目录路径,默认 "/"
OfflineDownloadPath: string; // 离线下载目录,默认 "/"
LastRefreshTime?: number; // 上次刷新时间戳
ResourceCount?: number; // 资源数量
ScanInterval?: number; // 定时扫描间隔分钟0表示关闭最低60分钟
ScanMode?: 'torrent' | 'name' | 'hybrid'; // 扫描模式torrent=种子库匹配name=名字匹配hybrid=混合模式(默认)
};
AIConfig?: {
Enabled: boolean; // 是否启用AI问片功能
Provider: 'openai' | 'claude' | 'custom'; // AI服务提供商
// OpenAI配置
OpenAIApiKey?: string;
OpenAIBaseURL?: string; // 自定义API地址如Azure、国内代理等
OpenAIModel?: string; // 模型名称如gpt-4, gpt-3.5-turbo
// Claude配置
ClaudeApiKey?: string;
ClaudeModel?: string; // 模型名称如claude-3-opus-20240229
// 自定义配置兼容OpenAI格式的API
CustomApiKey?: string;
CustomBaseURL?: string;
CustomModel?: string;
// 决策模型配置
EnableDecisionModel: boolean; // 是否启用决策模型用AI判断是否需要联网/数据源)
DecisionProvider?: 'openai' | 'claude' | 'custom'; // 决策模型提供商
DecisionOpenAIApiKey?: string;
DecisionOpenAIBaseURL?: string;
DecisionOpenAIModel?: string;
DecisionClaudeApiKey?: string;
DecisionClaudeModel?: string;
DecisionCustomApiKey?: string;
DecisionCustomBaseURL?: string;
DecisionCustomModel?: string;
// 联网搜索配置
EnableWebSearch: boolean; // 是否启用联网搜索
WebSearchProvider?: 'tavily' | 'serper' | 'serpapi'; // 搜索服务提供商
TavilyApiKey?: string; // Tavily API密钥
SerperApiKey?: string; // Serper.dev API密钥
SerpApiKey?: string; // SerpAPI密钥
// 功能开关
EnableHomepageEntry: boolean; // 首页入口开关
EnableVideoCardEntry: boolean; // VideoCard入口开关
EnablePlayPageEntry: boolean; // 播放页入口开关
// 权限控制
AllowRegularUsers: boolean; // 是否允许普通用户使用AI问片关闭后仅站长和管理员可用
// 高级设置
Temperature?: number; // AI温度参数0-2默认0.7
MaxTokens?: number; // 最大回复token数默认1000
SystemPrompt?: string; // 自定义系统提示词
};
EmbyConfig?: {
Enabled: boolean; // 是否启用Emby媒体库功能
ServerURL: string; // Emby服务器地址
ApiKey?: string; // API Key推荐方式
Username?: string; // 用户名或使用API Key
Password?: string; // 密码
UserId?: string; // 用户ID登录后获取
AuthToken?: string; // 认证令牌(用户名密码登录后获取)
Libraries?: string[]; // 要显示的媒体库ID可选默认全部
LastSyncTime?: number; // 最后同步时间戳
ItemCount?: number; // 媒体项数量
};
}
export interface AdminConfigResult {
Role: 'owner' | 'admin';
Config: AdminConfig;
}