🎵 音频管理 API

通过 HTTP API 管理音频数据

音频的CRUD操作。

📥 获取音频信息

GET
/api/audio

参数:
备注:不传参数即可查询所有音频

响应:200 OK,返回音频数组。例如:

{
    "data": [
      {
        "id": "1767042792152n1yc9qrf3",
        "resourceType": "audio",
        "name": "音频名称",
        "description": "音频描述",
        "artist": "艺术家",
        "tags": ["标签1", "标签2"],
        "actors": ["演员1", "演员2"],
        "coverPath": "C:/Music/cover.png",
        "resourcePath": "C:/Music/song.mp3",
        "visitedSessions": [
          "2025-12-29T22:05:34.528Z",
          "2026-01-21T08:53:13.157Z"
        ],
        "addedDate": "2025-12-29T21:13:12.152Z",
        "rating": 5,
        "comment": "好听",
        "isFavorite": true
      }
    ]
  }

JavaScript代码示例

const res = await fetch('http://127.0.0.1:8765/api/audio')
const audio = await res.json()

Python代码示例

import requests
response = requests.get('http://127.0.0.1:8765/api/audio')
audio = response.json()

📥 获取单个音频

GET
/api/audio/:id

参数:id - 音频ID

响应:200 OK 返回音频对象,不存在则 404。例如:

{
  "id": "1767042792152n1yc9qrf3",
  "resourceType": "audio",
  "name": "音频名称",
  "description": "音频描述",
  "artist": "艺术家",
  "tags": ["标签1", "标签2"],
  "actors": ["演员1", "演员2"],
  "coverPath": "C:/Music/cover.png",
  "resourcePath": "C:/Music/song.mp3",
  "visitedSessions": [
    "2025-12-29T22:05:34.528Z",
    "2026-01-21T08:53:13.157Z"
  ],
  "addedDate": "2025-12-29T21:13:12.152Z",
  "rating": 5,
  "comment": "好听",
  "isFavorite": true
}

JavaScript代码示例

const res = await fetch('http://127.0.0.1:8765/api/audio/1234567890abc')
const audio = await res.json()

Python代码示例

import requests
response = requests.get('http://127.0.0.1:8765/api/audio/1234567890abc')
audio = response.json()

➕ 创建音频

POST
/api/audio

请求体:

{
  "name": "音频名称",
  "description": "音频描述",
  "artist": "艺术家",
  "tags": ["标签1", "标签2"],
  "actors": ["演员1", "演员2"],
  "coverPath": "C:/Music/cover.png",
  "resourcePath": "C:/Music/song.mp3",
  "visitedSessions": [],
  "rating": 0,
  "comment": "",
  "isFavorite": false
}

响应:201 Created,返回创建的音频对象。例如:

注意:ID 和 addedDate 会自动生成

JavaScript代码示例

const res = await fetch('http://127.0.0.1:8765/api/audio', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    name: '新音频',
    artist: '艺术家',
    resourcePath: 'C:/Music/song.mp3'
  })
})
const createdAudio = await res.json()

Python代码示例

import requests
new_audio = {
    'name': '新音频',
    'artist': '艺术家',
    'resourcePath': 'C:/Music/song.mp3'
}
response = requests.post('http://127.0.0.1:8765/api/audio', json=new_audio)
created_audio = response.json()

✏️ 更新音频

PUT
/api/audio/:id

参数:id - 音频ID

请求体:要更新的字段(JSON 对象,只需传要修改的字段)

{
  "name": "更新后的音频名",
  "description": "更新后的描述",
  "rating": 5,
  "tags": ["新标签1", "新标签2"],
  "isFavorite": true
}

响应:200 OK,返回更新后的音频对象。例如:

注意:ID 和 addedDate 字段不允许修改

JavaScript代码示例

const res = await fetch('http://127.0.0.1:8765/api/audio/1234567890abc', {
  method: 'PUT',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ name: '更新后的音频名' })
})
const updatedAudio = await res.json()

Python代码示例

import requests
update_data = {'name': '更新后的音频名'}
response = requests.put('http://127.0.0.1:8765/api/audio/1234567890abc', json=update_data)
updated_audio = response.json()

🗑️ 删除音频

DELETE
/api/audio/:id

参数:id - 音频ID

响应:204 No Content(成功)或 404 Not Found(不存在)

注意:删除操作不会删除本地音频文件,仅移除管理器中的引用

JavaScript

await fetch('http://127.0.0.1:8765/api/audio/1234567890abc', { method: 'DELETE' })
// 成功返回 204,无响应体

Python

import requests
response = requests.delete('http://127.0.0.1:8765/api/audio/1234567890abc')
# 成功返回 204,无响应体

📊 音频数据字段说明

音频对象包含以下字段:

  • id - 音频唯一标识符(自动生成,不可修改)
  • resourceType - 资源类型,固定为 "audio"
  • name - 音频名称(必需)
  • description - 音频描述
  • artist - 艺术家
  • tags - 标签数组
  • actors - 演员数组
  • resourcePath - 音频文件路径
  • coverPath - 封面图片路径
  • visitedSessions - 访问会话时间数组(ISO 字符串数组,记录每次访问时间)
  • addedDate - 添加日期(自动生成,不可修改)
  • rating - 评分(1-5 或 0)
  • comment - 备注
  • isFavorite - 是否收藏

⚠️ 错误处理

API 使用标准的 HTTP 状态码:

  • 200 OK:请求成功
  • 201 Created:资源创建成功
  • 204 No Content:删除成功(无响应体)
  • 400 Bad Request:请求参数错误(如缺少必需字段)
  • 404 Not Found:资源不存在
  • 500 Internal Server Error:服务器内部错误

错误响应格式:

{
  "error": "错误信息"
}