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。流程:
- 首次启动没用户时,WebUI 出注册页,用
POST /v1/users/register建管理员; - 之后用
POST /v1/users/login登录,基于 Session(Cookie),登录后浏览器自动带 Session ID; - 退出调
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/login | WebUI 用户登录 |
| POST | /v1/users/register | WebUI 用户注册 |
| 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/logs | WebSocket 实时日志推送 |
B 站 API 代理
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /bili/archive/pre | B 站投稿预处理(代理) |
| GET | /bili/space/myinfo | 获取 B 站账号信息(代理) |
| GET | /bili/proxy | B 站 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 用,三步:
GET /v1/get_qrcode拿qrcode_key和二维码url,生成二维码给 B 站 App 扫;- 扫完轮询
POST /v1/login_by_qrcode(带qrcode_key)确认状态; - 成功后 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())