mirror of
https://github.com/algerkong/AlgerMusicPlayer.git
synced 2026-04-03 14:20:50 +08:00
62 lines
3.3 KiB
Markdown
62 lines
3.3 KiB
Markdown
## 🎵 自定义音源API配置
|
||
|
||
现在支持通过导入一个简单的 JSON 配置文件来对接第三方的音乐解析 API。这将提供极大的灵活性,可以接入任意第三方音源。
|
||
|
||
### 如何使用
|
||
|
||
1. 前往 **设置 -> 播放设置 -> 音源设置**。
|
||
2. 在 **自定义 API 设置** 区域,点击 **“导入 JSON 配置”** 按钮。
|
||
3. 选择你已经编写好的 `xxx.json` 配置文件。
|
||
4. 导入成功后,程序将优先使用你的自定义 API 进行解析。
|
||
|
||
### JSON 配置文件格式说明
|
||
|
||
导入的配置文件必须是一个合法的 JSON 文件,并包含以下字段:
|
||
|
||
| 字段名 | 类型 | 是否必须 | 描述 |
|
||
| ---------------- | --------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| `name` | `string` | 是 | API 名称,将显示在应用的 UI 界面上。 |
|
||
| `apiUrl` | `string` | 是 | API 的基础请求地址。 |
|
||
| `method` | `string` | 否 | HTTP 请求方法。可以是 `"GET"` 或 `"POST"`。**如果省略,默认为 "GET"**。 |
|
||
| `params` | `object` | 是 | 请求时需要发送的参数。对于 `GET` 请求,它们会作为查询字符串;对于 `POST` 请求,它们会作为请求体。 |
|
||
| `qualityMapping` | `object` | 否 | **音质映射表**。用于将应用内部的音质值(如 `"lossless"`)翻译成你的 API 需要的特定值。如果省略,则直接使用应用内部值。 |
|
||
| `responseUrlPath`| `string` | 是 | **URL提取路径**。用于从 API 返回的 JSON 响应中找到最终可播放的音乐链接。支持点 `.` 和方括号 `[]` 语法来访问嵌套对象和数组。 |
|
||
|
||
#### 占位符
|
||
|
||
在 `params` 对象的值中,你可以使用以下占位符,程序在请求时会自动替换它们:
|
||
|
||
* `{songId}`: 将被替换为当前歌曲的 ID。
|
||
* `{quality}`: 将被替换为当前用户设置的音质字符串 (例如, `"higher"`, `"lossless"`)。
|
||
|
||
#### 音质值列表
|
||
|
||
应用内部使用的音质值如下,你可以在 `qualityMapping` 中使用它们作为**键**:
|
||
`standard`, `higher`, `exhigh`, `lossless`, `hires`, `jyeffect`, `sky`, `dolby`, `jymaster`
|
||
|
||
### 示例
|
||
|
||
假设有一个 API 如下:
|
||
`https://api.example.com/music?song_id=12345&bitrate=320000`
|
||
它返回的 JSON 是:
|
||
`{ "code": 200, "data": { "play_url": "http://..." } }`
|
||
|
||
那么对应的 JSON 配置文件应该是:
|
||
|
||
```json
|
||
{
|
||
"name": "Example API",
|
||
"apiUrl": "https://api.example.com/music",
|
||
"method": "GET",
|
||
"params": {
|
||
"song_id": "{songId}",
|
||
"bitrate": "{quality}"
|
||
},
|
||
"qualityMapping": {
|
||
"higher": "128000",
|
||
"exhigh": "320000",
|
||
"lossless": "999000"
|
||
},
|
||
"responseUrlPath": "data.play_url"
|
||
}
|
||
``` |