Skip to content

扫描管理

接口列表

方法路径说明
POST/scan扫描并导入本地音乐
POST/scan/cancel取消扫描
GET/scan/dir-names获取所有目录名称
GET/scan/directories获取子目录列表
POST/scan/fingerprints触发批量指纹计算
GET/scan/fingerprints/progress获取指纹计算进度
GET/scan/fingerprints/status获取指纹计算状态
GET/scan/progress获取扫描进度
PUT/settings/auto-scan更新自动扫描配置
GET/settings/auto-scan获取自动扫描配置
PUT/settings/music-path更新音乐路径与扫描排除配置
GET/settings/music-path获取音乐路径与扫描排除配置
PUT/settings/scan-auto-create-playlists更新「扫描后自动创建歌单」开关
GET/settings/scan-auto-create-playlists获取「扫描后自动创建歌单」开关
PUT/settings/scan-playlist-mode更新歌单创建方式
GET/settings/scan-playlist-mode获取歌单创建方式
PUT/settings/scan-title-source更新扫描标题来源配置
GET/settings/scan-title-source获取扫描标题来源配置

POST /scan

扫描并导入本地音乐

异步扫描音乐目录并导入新发现的音乐文件到数据库,立即返回,可通过进度接口查询状态。 reimport=true 时对已入库文件也重新提取元数据;默认 false 走增量(跳过已存在且时长有效的文件)。 paths 为目录级定向扫描(Issue #262):省略/为空时扫描整个音乐根目录;非空时只扫描给定目录(含子目录), 且过期记录清理仅收敛到这些目录之内(不影响其余曲库)。每个目录必须位于音乐根目录之下,否则返回 400。

需要认证

此接口需要 Bearer Token 认证

请求体

扫描请求参数

类型: ScanRequest

字段类型必填说明
pathsstring[]Paths 为目录级定向扫描(Issue #262):为空时扫描整个音乐根目录(默认行为);
非空时只扫描给定目录(含子目录),过期记录清理也仅收敛到这些目录之内。
每个目录必须位于音乐根目录之下,否则返回 400。
reimportboolean

响应

200 - 扫描任务已启动

类型: map[string]any

400 - 指定目录不在音乐目录下

类型: map[string]string

409 - 扫描正在进行中

类型: map[string]string

500 - 启动扫描失败

类型: map[string]string

内容类型

  • 请求: application/json
  • 响应: application/json

POST /scan/cancel

取消扫描

取消正在进行的扫描任务

需要认证

此接口需要 Bearer Token 认证

响应

200 - 取消成功

类型: map[string]any

400 - 没有正在进行的扫描任务

类型: map[string]string

内容类型

  • 请求: application/json
  • 响应: application/json

GET /scan/dir-names

获取所有目录名称

递归收集音乐目录下所有唯一的目录名称,按字母排序返回,用于排除目录名称的自动补全

需要认证

此接口需要 Bearer Token 认证

响应

200 - 目录名称列表

类型: map[string]any

500 - 收集目录名称失败

类型: map[string]string

内容类型

  • 请求: application/json
  • 响应: application/json

GET /scan/directories

获取子目录列表

返回指定路径下的一级子目录列表,用于目录树懒加载。path 为空时返回音乐根目录下的子目录

需要认证

此接口需要 Bearer Token 认证

查询参数

参数类型必填说明
pathstring目录路径(为空时使用音乐根目录)

响应

200 - 子目录列表

类型: map[string]any

400 - 无效的路径

类型: map[string]string

500 - 读取目录失败

类型: map[string]string

内容类型

  • 请求: application/json
  • 响应: application/json

POST /scan/fingerprints

触发批量指纹计算

异步为本地歌曲计算音频指纹,需要 ffmpeg 支持 chromaprint。若已有任务在运行则打断重启。传入 recompute_all=true 时清空已有指纹后重新计算全部。

需要认证

此接口需要 Bearer Token 认证

请求体

计算选项

类型: startFingerprintRequest

字段类型必填说明
recompute_allboolean

响应

200 - 任务已启动

类型: map[string]any

400 - chromaprint 不可用

类型: map[string]string

内容类型

  • 请求: application/json
  • 响应: application/json

GET /scan/fingerprints/progress

获取指纹计算进度

查询当前指纹计算任务的进度

需要认证

此接口需要 Bearer Token 认证

响应

200 - 计算进度

类型: FingerprintProgress

字段类型必填说明
computedinteger
failedinteger
statusstringidle, running, done
totalinteger

内容类型

  • 响应: application/json

GET /scan/fingerprints/status

获取指纹计算状态

返回 ffmpeg chromaprint 可用性以及本地歌曲指纹计算统计

需要认证

此接口需要 Bearer Token 认证

响应

200 - 指纹状态

类型: map[string]any

内容类型

  • 响应: application/json

GET /scan/progress

获取扫描进度

获取当前扫描任务的进度信息

需要认证

此接口需要 Bearer Token 认证

响应

200 - 扫描进度信息

类型: ScanProgress

字段类型必填说明
cleaned_filesinteger清理的过期文件数
cue_split_sourcesintegersplitting_cue 阶段已处理的 CUE 来源数
current_filestring当前处理的文件
discovered_filesintegerscanning 阶段已发现的音频文件数
end_timestring结束时间
errorstring错误信息
failed_filesinteger失败的文件数
imported_filesinteger已导入文件数
local_song_countinteger扫描完成后数据库中本地歌曲总数
scanned_filesinteger已扫描文件数
skipped_filesinteger跳过的文件数(已存在)
start_timestring开始时间
statusany当前状态
total_filesinteger总文件数

内容类型

  • 请求: application/json
  • 响应: application/json

PUT /settings/auto-scan

更新自动扫描配置

设置自动扫描的启用状态和扫描间隔。interval_seconds 有效范围 [60, 86400]。更新后立即生效(无需重启)。

需要认证

此接口需要 Bearer Token 认证

请求体

自动扫描配置

类型: AutoScanSetting

字段类型必填说明
enabledboolean
interval_secondsinteger

响应

200 - OK

类型: AutoScanSetting

字段类型必填说明
enabledboolean
interval_secondsinteger

400 - 请求格式错误或参数无效

类型: map[string]string

500 - 保存配置失败

类型: map[string]string

内容类型

  • 请求: application/json
  • 响应: application/json

GET /settings/auto-scan

获取自动扫描配置

返回自动扫描的启用状态和扫描间隔(秒)。默认关闭,间隔 3600 秒(1 小时)。

需要认证

此接口需要 Bearer Token 认证

响应

200 - OK

类型: AutoScanSetting

字段类型必填说明
enabledboolean
interval_secondsinteger

内容类型

  • 响应: application/json

PUT /settings/music-path

更新音乐路径与扫描排除配置

写入 music_path 配置并触发 Scanner 重建 + 清理排除目录中的歌曲(与 admin /configs PUT 的副作用一致)。

需要认证

此接口需要 Bearer Token 认证

请求体

配置内容

类型: MusicPathSetting

字段类型必填说明
auto_create_exclude_dirsstring[]
exclude_dirsstring[]
exclude_pathsstring[]
pathstring

响应

200 - OK

类型: MusicPathSetting

字段类型必填说明
auto_create_exclude_dirsstring[]
exclude_dirsstring[]
exclude_pathsstring[]
pathstring

400 - 请求格式错误

类型: map[string]string

500 - 保存配置失败

类型: map[string]string

内容类型

  • 请求: application/json
  • 响应: application/json

GET /settings/music-path

获取音乐路径与扫描排除配置

需要认证

此接口需要 Bearer Token 认证

响应

200 - OK

类型: MusicPathSetting

字段类型必填说明
auto_create_exclude_dirsstring[]
exclude_dirsstring[]
exclude_pathsstring[]
pathstring

内容类型

  • 响应: application/json

PUT /settings/scan-auto-create-playlists

更新「扫描后自动创建歌单」开关

控制扫描完成后是否根据音乐目录结构自动创建歌单。

需要认证

此接口需要 Bearer Token 认证

请求体

开关请求

类型: scanAutoCreatePlaylistsRequest

字段类型必填说明
enabledboolean

响应

200 - 返回 enabled 字段

类型: map[string]boolean

400 - 请求格式错误

类型: map[string]string

500 - 保存配置失败

类型: map[string]string

内容类型

  • 请求: application/json
  • 响应: application/json

GET /settings/scan-auto-create-playlists

获取「扫描后自动创建歌单」开关

控制扫描完成后是否根据音乐目录结构自动创建歌单。默认启用(true)。关闭后扫描仅入库歌曲,不再自动建歌单。

需要认证

此接口需要 Bearer Token 认证

响应

200 - 返回 enabled 字段

类型: map[string]boolean

内容类型

  • 响应: application/json

PUT /settings/scan-playlist-mode

更新歌单创建方式

设置扫描后自动创建歌单的目录归并模式。directory:每个文件夹生成独立歌单;top_level:按一级子目录合并歌单;bubble_up:歌曲同时出现在所有上级文件夹歌单。

需要认证

此接口需要 Bearer Token 认证

请求体

模式请求

类型: scanPlaylistModeRequest

字段类型必填说明
modestring可选值: directory, top_level, bubble_up 示例: "directory"

响应

200 - 返回 mode 字段

类型: scanPlaylistModeResponse

字段类型必填说明
modestring示例: "directory"

400 - 请求格式错误或 mode 值非法

类型: map[string]string

500 - 保存配置失败

类型: map[string]string

内容类型

  • 请求: application/json
  • 响应: application/json

GET /settings/scan-playlist-mode

获取歌单创建方式

返回扫描后自动创建歌单的目录归并模式。directory:每个文件夹生成独立歌单;top_level:按一级子目录合并歌单;bubble_up:歌曲同时出现在所有上级文件夹歌单。默认 directory。

需要认证

此接口需要 Bearer Token 认证

响应

200 - 返回 mode 字段

类型: scanPlaylistModeResponse

字段类型必填说明
modestring示例: "directory"

内容类型

  • 响应: application/json

PUT /settings/scan-title-source

更新扫描标题来源配置

tag:优先使用音频标签中的标题;filename:始终使用文件名(不含扩展名)作为标题。切换后需以「重新导入」模式扫描才能生效。

需要认证

此接口需要 Bearer Token 认证

请求体

标题来源配置

类型: scanTitleSourceRequest

字段类型必填说明
title_sourcestring可选值: tag, filename 示例: "tag"

响应

200 - 返回 title_source 字段

类型: scanTitleSourceRequest

字段类型必填说明
title_sourcestring可选值: tag, filename 示例: "tag"

400 - 请求格式错误或参数无效

类型: map[string]string

500 - 保存配置失败

类型: map[string]string

内容类型

  • 请求: application/json
  • 响应: application/json

GET /settings/scan-title-source

获取扫描标题来源配置

tag:优先使用音频标签中的标题(默认);filename:始终使用文件名(不含扩展名)作为标题。切换后需以「重新导入」模式扫描才能生效。

需要认证

此接口需要 Bearer Token 认证

响应

200 - 返回 title_source 字段

类型: scanTitleSourceRequest

字段类型必填说明
title_sourcestring可选值: tag, filename 示例: "tag"

内容类型

  • 响应: application/json