调整,音乐模块

This commit is contained in:
zhongluofeng
2026-09-12 11:05:26 +08:00
parent 27ad5d89a5
commit d702ed0d31
71 changed files with 13647 additions and 387 deletions
+115
View File
@@ -241,6 +241,21 @@ export const commands = {
downloaderInspect: (input: string) => __TAURI_INVOKE<TorrentInfo>("downloader_inspect", { input }),
/** 磁力任务:元数据解析成功后,用户勾选文件并确认开始下载 */
downloaderSelectBtFiles: (id: string, onlyFiles: number[]) => __TAURI_INVOKE<null>("downloader_select_bt_files", { id, onlyFiles }),
/**
* 查询环境状态(Python / musicdl / FFmpeg / 桥接进程),设置页「环境检查」面板调用。
* 异步命令:子进程探测在阻塞线程池执行,避免冻结主线程/UI。
*/
musicEnvStatus: () => __TAURI_INVOKE<MusicEnvStatus>("music_env_status"),
/** 安装便携 Python + musicdl(幂等),全程推送 music-runtime-install-progress 事件 */
musicInstallRuntime: () => __TAURI_INVOKE<MusicEnvStatus>("music_install_runtime"),
/** 取消便携运行时安装/下载 */
musicCancelRuntimeInstall: () => __TAURI_INVOKE<null>("music_cancel_runtime_install"),
/** 停止桥接进程 */
musicStopBridge: () => __TAURI_INVOKE<null>("music_stop_bridge"),
/** 读取音乐模块设置 */
musicGetSettings: () => __TAURI_INVOKE<MusicSettings>("music_get_settings"),
/** 保存音乐模块设置(立即生效) */
musicSaveSettings: (settings: MusicSettings) => __TAURI_INVOKE<null>("music_save_settings", { settings }),
/** 禁用指定窗口(按 label 查找)的显示/隐藏过渡动画,消除覆盖层出现/消失时的缩放动画 */
screenshotDisableTransitions: (label: string) => __TAURI_INVOKE<null>("screenshot_disable_transitions", { label }),
/** 一次 IPC 完成指定窗口的显示与聚焦(截图覆盖层显示关键路径,减少串行往返) */
@@ -305,6 +320,20 @@ export const commands = {
width: number,
height: number,
} | null, auto: boolean) => __TAURI_INVOKE<null>("screenshot_scroll_start", { hwnd, region, auto }),
/**
* 滚动模式遮罩挖孔:在截图覆盖层窗口上挖出选区带的真孔(region = None 时复位整窗)。
*
* Chromium 系浏览器(Edge/Chrome)的窗口遮挡检测会把被完全覆盖的窗口标记为
* occluded 并暂停渲染——滚动截图时覆盖层铺满全屏,网页"看起来完全不滚动"。
* 挖孔后目标窗口仅部分被覆盖,恢复渲染与滚轮响应(详见 capture::set_scroll_hole)。
* 进入滚动模式时带选区调用,会话结束/新一轮截图开始时必须传 None 复位。
*/
screenshotSetScrollHole: (region: {
x: number,
y: number,
width: number,
height: number,
} | null) => __TAURI_INVOKE<null>("screenshot_set_scroll_hole", { region }),
/** 将 PNG base64 写入系统剪贴板(转 CF_DIB */
screenshotCopyImage: (pngBase64: string) => __TAURI_INVOKE<null>("screenshot_copy_image", { pngBase64 }),
/** 将 PNG base64 写入文件 */
@@ -522,6 +551,24 @@ export type ExtractResult = {
error: string,
};
/** 一条飞牛音乐连接(持久化在 `MusicSettings`)。 */
export type FeiniuConnection = {
id: string,
name: string,
/** "lan" | "frp" | "fnconnect"fnconnect 预留) */
kind: string,
/** 服务器地址(http://192.168.x.x:5666 或 https://域名) */
baseUrl: string,
username: string,
token: string,
deviceId: string,
accessCode: string,
/** https 遇到自签证书时忽略校验 */
insecure: boolean,
/** fnconnect 连接的 fnId(如 fnos.net/<id> 或裸 id */
fnId?: string,
};
export type FileEntry = {
name: string,
path: string,
@@ -564,6 +611,74 @@ export type KernelUpdateInfo = {
hasUpdate: boolean,
};
/** 环境状态(返回前端,设置页「环境检查」面板展示) */
export type MusicEnvStatus = {
/** 系统 Python 版本(如 "3.14.5"),无则 None */
python: string | null,
/** python 来源:"system" | "bundled" | "none" */
pythonSource: string,
/** 便携 Python 可执行文件路径(未安装则 None) */
bundledPython: string | null,
/** musicdl 是否可导入 */
musicdlInstalled: boolean,
/** musicdl 版本 */
musicdlVersion: string | null,
/** FFmpeg 是否可用(部分音源需要,非必需) */
ffmpeg: string | null,
/** 桥接进程是否在运行 */
bridgeRunning: boolean,
/** 运行时目录({app_data_dir}/music */
runtimeDir: string,
};
/** 音乐模块设置(settings.json 持久化;变更即时生效) */
export type MusicSettings = {
/** 下载保存目录 */
savedir: string,
/** 搜索源(musicdl 客户端名,如 NeteaseMusicClient */
sources: string[],
/** 下载时同步保存歌词 */
lyricDownload: boolean,
/** 下载时同步保存封面 */
coverDownload: boolean,
/** 搜索/下载请求是否走代理模块(mihomo mixed 端口) */
useProxy: boolean,
/** 最大并发下载数 */
maxConcurrent: number,
/** 下载引擎:"musicdl" | "rust"P2 生效) */
downloadEngine: string,
/** 下载时是否弹窗选择音质(默认关;开启后点下载弹出所选歌曲档位并集选择) */
selectQualityOnDownload: boolean,
/** 下载时默认音质:"" 表示最高;否则为搜索音质档位 label(如 "无损"、"320K" */
defaultDownloadQuality: string,
/** 飞牛音乐(NAS)连接:服务器地址(如 http://192.168.1.10:5666,空=未配置) */
feiniuBaseUrl?: string,
/** 飞牛音乐登录 token(登录成功后保存) */
feiniuToken?: string,
/** 飞牛音乐登录账号(展示 + 重新登录回填用) */
feiniuUsername?: string,
/** 飞牛音乐设备 ID(32 位 hex,登录签名用,一次生成复用) */
feiniuDeviceId?: string,
/** 飞牛音乐访问安全码(可选;仅需访问码的库才填,LAN 通常为空) */
feiniuAccessCode?: string,
/** 飞牛音乐连接列表(多连接:本地 / frp / 预留 fnconnect */
feiniuConnections?: FeiniuConnection[],
/** 当前激活连接的 id */
feiniuActiveId?: string,
/** 本地曲库扫描目录(默认含音乐下载 savedir) */
feiniuLocalDirs?: string[],
/** 播放缓存开关 */
feiniuCacheEnabled?: boolean,
/** 缓存上限(GB */
feiniuCacheMaxGb?: number,
/** 播放模式:"stream" 直连流式 | "cache" 缓存后播放 */
feiniuPlayMode?: string,
/** 飞牛曲库目标目录(NAS 绝对路径,如 vol1/1000/Music;上传到飞牛用) */
feiniuLibraryNasPath?: string,
/** 下载完成后自动上传到飞牛曲库 */
feiniuAutoUpload?: boolean,
};
/** 进程信息(返回给前端) */
export type ProcessInfo = {
id: string,