---
url: 'https://docs.irenmu.com/api/download.md'
---
# Video API

视频解析和下载相关接口文档,支持多平台视频链接解析。

## 解析视频信息

解析视频链接,获取视频标题、分 P、清晰度等信息。

**接口地址:** `POST /video/parse`

**请求参数:**

| 参数名 | 类型   | 必填 | 说明     |
| ------ | ------ | ---- | -------- |
| url    | string | 是   | 视频链接 |

**支持的链接格式:**

* 斗鱼: `https://v.douyu.com/show/xxx`
* 虎牙: `https://www.huya.com/video/play/1043151558.html`
* B 站视频: `https://www.bilibili.com/video/BVxxx`
* B 站直播录像: `https://live.bilibili.com/123456`
* 快手: `https://www.kuaishou.com/playback/xxx`

**请求示例:**

```json
{
  "url": "https://www.bilibili.com/video/BV1xx411c7mD"
}
```

**响应示例:**

```json
{
  "videoId": "BV1xx411c7mD",
  "platform": "bilibili",
  "title": "视频标题",
  "resolutions": [
    {
      "value": "highest",
      "label": "最高"
    },
    {
      "value": "80",
      "label": "1080P 高清"
    }
  ],
  "parts": [
    {
      "name": "P1",
      "partId": "123456",
      "isEditing": false,
      "extra": {
        "bvid": "BV1xx411c7mD"
      }
    }
  ]
}
```

**响应字段:**

| 字段名         | 类型   | 说明                      |
| -------------- | ------ | ------------------------- |
| videoId        | string | 视频 ID                   |
| platform       | string | 平台标识                  |
| title          | string | 视频标题                  |
| resolutions    | array  | 可用清晰度列表            |
| parts          | array  | 视频分 P 列表             |
| parts\[].name   | string | 分 P 名称                 |
| parts\[].partId | string | 分 P ID                   |
| parts\[].extra  | object | 额外信息,不同平台内容不同 |

## 下载视频

下载指定的视频到本地。

**接口地址:** `POST /video/download`

**请求参数:**

| 参数名     | 类型    | 必填 | 说明                                   |
| ---------- | ------- | ---- | -------------------------------------- |
| id         | string  | 是   | 视频分 P ID                            |
| platform   | string  | 是   | 平台标识                               |
| savePath   | string  | 是   | 保存路径                               |
| filename   | string  | 是   | 文件名                                 |
| resolution | string  | 否   | 清晰度,默认 "highest"                  |
| danmu      | boolean | 否   | 是否下载弹幕(部分平台支持)             |
| override   | boolean | 否   | 是否覆盖已存在的文件                   |
| onlyAudio  | boolean | 否   | 是否仅下载音频(仅 B 站视频支持)        |
| extra      | object  | 否   | 额外参数,不同平台需要不同的 extra 字段 |

**不同平台的 extra 字段:**

### 斗鱼 (douyu)

```json
{
  "decodeData": "...",
  "user_name": "主播名",
  "room_id": "房间号",
  "room_title": "直播间标题",
  "live_start_time": "2024-01-01T00:00:00.000Z",
  "video_start_time": "2024-01-01T00:00:00.000Z"
}
```

### 斗鱼录播列表

**接口地址:** `POST /video/douyu/videoList`

**请求参数:**

| 参数名 | 类型   | 必填 | 说明       |
| ------ | ------ | ---- | ---------- |
| subId  | string | 是   | 视频主页ID |

```js
[
  {
    startTime: 1780108026,
    title: "单机王中王",
    timeStr: "2026/5/30 10:27:06",
    videos: [
      {
        videoId: "1LDR7Q1p35V7Jzx8",
        title: "【2026-05-30 10点场】老皮历险记：单机王中王",
      },
    ],
  },
];
```

### B 站视频 (bilibili)

```json
{
  "bvid": "BV1xx411c7mD"
}
```

### B 站直播录像 (bilibiliLive)

```json
{
  "liveKey": "123456",
  "startTime": 1704067200,
  "endTime": 1704070800,
  "uid": 123456789
}
```

### 快手 (kuaishou)

```json
{
  "url": "https://xxx.m3u8"
}
```

**请求示例:**

```json
{
  "id": "123456",
  "platform": "bilibili",
  "savePath": "D:/videos",
  "filename": "test.mp4",
  "resolution": "80",
  "danmu": true,
  "override": false,
  "extra": {
    "bvid": "BV1xx411c7mD"
  }
}
```

**响应:** HTTP 200 表示下载任务已开始

## 视频订阅管理

管理视频订阅任务,自动检测并下载新视频。

### 解析订阅信息

解析直播间以获取可订阅的信息，支持斗鱼和虎牙

**接口地址:** `POST /video/sub/parse`

**请求参数:**

| 参数名 | 类型   | 必填 | 说明       |
| ------ | ------ | ---- | ---------- |
| url    | string | 是   | 直播间链接 |

**请求示例:**

```json
{
  "url": "https://www.douyu.com/93589"
}
```

**返回示例:**

```json
{
  "name": "异灵术老师",
  "subId": "3z97Jx5eydkY", // 用于查询视频列表的id
  "platform": "douyu",
  "enable": true,
  "roomId": "93589",
  "options": {
    "danma": true,
    "sendWebhook": false,
    "quality": "highest"
  }
}
```

### 添加订阅

添加一个新的视频订阅。

**接口地址:** `POST /video/sub/add`

**请求参数:**

| 参数名   | 类型   | 必填 | 说明     |
| -------- | ------ | ---- | -------- |
| name     | string | 是   | 订阅名称 |
| platform | string | 是   | 平台标识 |
| subId    | string | 是   | 订阅 ID  |

**请求示例:**

```json
{
  "name": "我的订阅",
  "platform": "bilibili",
  "subId": "123456"
}
```

### 删除订阅

删除指定的视频订阅。

**接口地址:** `POST /video/sub/remove`

**请求参数:**

| 参数名 | 类型   | 必填 | 说明    |
| ------ | ------ | ---- | ------- |
| id     | string | 是   | 订阅 ID |

**请求示例:**

```json
{
  "id": "sub_123"
}
```

### 更新订阅

更新订阅信息。

**接口地址:** `POST /video/sub/update`

**请求参数:**

| 参数名   | 类型   | 必填 | 说明     |
| -------- | ------ | ---- | -------- |
| id       | string | 是   | 订阅 ID  |
| name     | string | 是   | 订阅名称 |
| platform | string | 是   | 平台标识 |
| subId    | string | 是   | 订阅标识 |

**请求示例:**

```json
{
  "id": "sub_123",
  "name": "更新后的名称",
  "platform": "bilibili",
  "subId": "123456"
}
```

### 获取订阅列表

获取所有视频订阅。

**接口地址:** `GET /video/sub/list`

**请求参数:** 无

**响应示例:**

```json
[
  {
    "id": "sub_123",
    "name": "我的订阅",
    "platform": "bilibili",
    "subId": "123456"
  }
]
```

### 检查订阅更新

检查指定订阅是否有新视频。

**接口地址:** `POST /video/sub/check`

**请求参数:**

| 参数名 | 类型   | 必填 | 说明    |
| ------ | ------ | ---- | ------- |
| id     | string | 是   | 订阅 ID |

**请求示例:**

```json
{
  "id": "sub_123"
}
```
