Skip to content

REST API 文档

biliup 启动 Web 服务后会在 19159 端口暴露一组 REST 风格的 HTTP API,既给 WebUI 前端用,也支持外部程序直接拿 HTTP 调。

接口路径与字段以 biliup 源码 为准。

基础信息

项目说明
默认端口19159
默认基地址http://localhost:19159
响应格式JSON
请求体格式JSON(Content-Type: application/json
认证方式Session/Cookie 认证(--auth 启动参数开启)

认证说明

启动时加 --auth 开启认证:

bash
biliup server --auth

--auth 是布尔开关,不接 user:pass。流程:

  1. 首次启动没用户时,WebUI 出注册页,用 POST /v1/users/register 建管理员;
  2. 之后用 POST /v1/users/login 登录,基于 Session(Cookie),登录后浏览器自动带 Session ID;
  3. 退出调 GET /v1/logout 销毁会话。

没开 --auth 时接口没有任何保护,生产环境别直接把端口暴露出去。

接口总览

主播管理

方法路径说明
GET/v1/streamers获取主播列表
POST/v1/streamers添加主播
PUT/v1/streamers更新主播
DELETE/v1/streamers/{id}删除主播
PUT/v1/streamers/{id}/pause暂停/恢复主播录制

全局配置

方法路径说明
GET/v1/configuration获取全局配置
PUT/v1/configuration更新全局配置

主播信息

方法路径说明
GET/v1/streamer-info获取主播信息(录制状态等)
GET/v1/streamer-info/files/{id}获取主播的文件列表

上传模板管理

方法路径说明
GET/v1/upload/streamers获取上传模板列表
POST/v1/upload/streamers添加上传模板
PUT/v1/upload/streamers更新上传模板
GET/v1/upload/streamers/{id}获取单个上传模板
DELETE/v1/upload/streamers/{id}删除上传模板

用户与认证

方法路径说明
GET/v1/users获取用户列表
POST/v1/users添加用户
DELETE/v1/users/{id}删除用户
POST/v1/users/loginWebUI 用户登录
POST/v1/users/registerWebUI 用户注册
GET/v1/users/biliup检查默认用户是否已存在
GET/v1/logout退出登录

B站扫码登录

方法路径说明
GET/v1/get_qrcode获取 B 站扫码登录二维码
POST/v1/login_by_qrcode二维码扫码登录

视频与状态

方法路径说明
GET/v1/videos获取视频文件列表
GET/v1/status获取系统运行状态
POST/v1/uploads手动触发上传任务
GET/v1/ws/logsWebSocket 实时日志推送

B 站 API 代理

方法路径说明
GET/bili/archive/preB 站投稿预处理(代理)
GET/bili/space/myinfo获取 B 站账号信息(代理)
GET/bili/proxyB 站 API 通用代理

静态资源

方法路径说明
GET/static/{path}WebUI 前端静态文件服务

WebSocket 日志

GET /v1/ws/logs 建长连接后按频道推日志:

频道说明
ds_update.log直播检测 / 开播更新
download.log下载 / 录制
postprocessor上传 / 后处理
javascript
const ws = new WebSocket('ws://localhost:19159/v1/ws/logs');
ws.onmessage = (event) => console.log(event.data);

扫码登录

配合 --auth 用,三步:

  1. GET /v1/get_qrcodeqrcode_key 和二维码 url,生成二维码给 B 站 App 扫;
  2. 扫完轮询 POST /v1/login_by_qrcode(带 qrcode_key)确认状态;
  3. 成功后 biliup 存下这个 B 站账号,之后在「用户与认证」那组接口里管。

使用示例

几个能直接抄的调用:

拉主播列表

bash
curl http://localhost:19159/v1/streamers

加主播(最小请求体)

bash
curl -X POST http://localhost:19159/v1/streamers \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://live.bilibili.com/12345678",
    "remark": "某直播间"
  }'

暂停录制

bash
curl -X PUT http://localhost:19159/v1/streamers/1/pause

删主播

bash
curl -X DELETE http://localhost:19159/v1/streamers/1

手动上传

bash
curl -X POST http://localhost:19159/v1/uploads \
  -H "Content-Type: application/json" \
  -d '{
    "files": ["/opt/录播/video.flv"],
    "params": {
      "title": "手动上传",
      "tid": 171,
      "tags": ["直播录制"],
      "copyright": 1
    }
  }'

监听日志(Python)

python
import websockets
import asyncio

async def listen_logs():
    async with websockets.connect("ws://localhost:19159/v1/ws/logs") as ws:
        async for message in ws:
            print(message)

asyncio.run(listen_logs())

基于 Rust + Python + Next.js 构建