🎬 视频管理 API

通过 HTTP API 管理视频数据

视频管理 API 提供了完整的 CRUD 操作,允许您通过 HTTP 请求获取、创建、更新和删除视频数据。

📥 获取所有视频

GET
/api/videos

响应:200 OK,返回视频数组

[
  {
    "id": "1767042792152n1yc9qrf3",
    "resourceType": "movie",
    "name": "视频名称",
    "description": "视频描述",
    "series": "系列名",
    "tags": ["标签1", "标签2"],
    "actors": ["演员1", "演员2"],
    "resourcePath": "C:/Videos/video.mp4",
    "thumbnail": "C:/Videos/Thumbnails/thumb.jpg",
    "duration": 120,
    "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/videos')
const videos = await res.json()

Python

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

📥 获取单个视频

GET
/api/videos/:id

参数:id - 视频ID

响应:200 OK 返回视频对象,不存在则 404

{
  "id": "1767042792152n1yc9qrf3",
  "resourceType": "movie",
  "name": "视频名称",
  "description": "视频描述",
  "series": "系列名",
  "tags": ["标签1", "标签2"],
  "actors": ["演员1", "演员2"],
  "resourcePath": "C:/Videos/video.mp4",
  "thumbnail": "C:/Videos/Thumbnails/thumb.jpg",
  "duration": 120,
  "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/videos/1234567890abc')
const video = await res.json()

Python

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

➕ 创建视频

POST
/api/videos

请求体:

{
  "name": "视频名称",
  "description": "视频描述",
  "series": "系列名",
  "tags": ["标签1", "标签2"],
  "actors": ["演员1", "演员2"],
  "resourcePath": "C:/Videos/video.mp4",
  "thumbnail": "C:/Videos/Thumbnails/thumb.jpg",
  "duration": 120,
  "visitedSessions": [],
  "rating": 0,
  "comment": "",
  "isFavorite": false
}

响应:201 Created,返回创建的视频对象

注意:ID 和 addedDate 会自动生成

JavaScript

const res = await fetch('http://127.0.0.1:8765/api/videos', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    name: '新视频',
    series: '系列名',
    resourcePath: 'C:/Videos/newvideo.mp4'
  })
})
const createdVideo = await res.json()

Python

import requests
new_video = {
    'name': '新视频',
    'series': '系列名',
    'resourcePath': 'C:/Videos/newvideo.mp4'
}
response = requests.post('http://127.0.0.1:8765/api/videos', json=new_video)
created_video = response.json()

✏️ 更新视频

PUT
/api/videos/: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/videos/1234567890abc', {
  method: 'PUT',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ name: '更新后的视频名' })
})
const updatedVideo = await res.json()

Python

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

🗑️ 删除视频

DELETE
/api/videos/:id

参数:id - 视频ID

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

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

JavaScript

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

Python

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

📊 视频数据字段说明

视频对象包含以下字段:

  • id - 视频唯一标识符(自动生成,不可修改)
  • resourceType - 资源类型,固定为 "movie"
  • name - 视频名称(必需)
  • description - 视频描述
  • series - 系列名
  • tags - 标签数组
  • actors - 演员数组
  • resourcePath - 视频文件路径
  • thumbnail - 缩略图路径
  • duration - 视频时长(分钟)
  • 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": "错误信息"
}