-
Notifications
You must be signed in to change notification settings - Fork 0
WebUI API Reference
所有 API 端点由 WebUIServer(src/webui/server.py)提供服务,路由处理器在 src/webui/routes.py(~2335 行)中。
两层安全:
-
IP 白名单 —
_is_lan_ip()(routes.py:53)阻止非局域网 IP(10.x、172.16-31.x、192.168.x、169.254.x、localhost) -
会话 Token — PBKDF2-HMAC-SHA256 认证。通过
X-Session-Token头发送。7 天滑动过期,存储在服务器内存中。
免 Token 路径:/api/config、/api/webui/config/ui、/api/tmdb/avatar、/api/tmdb/poster、/api/openlist/status、/api/openlist/ping、/api/admin/status、/api/login、静态资源
返回主程序运行状态。
响应:
{
"running": true,
"uptime": 3600,
"a_count": 150,
"b_count": 145,
"c_count": 3,
"app_uptime": 3600,
"db_size": 1048576,
"tmdb_configured": true,
"openlist_configured": true,
"user_configured": true
}启动/停止主程序。需要会话 Token。
列出区域文件。{area} 为 a、b 或 c。
参数:page、per_page、sort、order、kind(anime/movie)、status、search
响应:
{
"items": [
{
"local_path": "C:\\strm\\b\\movie\\example.strm",
"webdav_path": "/cloud/movies/example.mp4",
"fingerprint": "abc123...",
"status": "valid",
"updated_at": 1700000000
}
],
"total": 145,
"page": 1,
"per_page": 50,
"categories": { "anime": 80, "movie": 65 }
}获取文件详情。参数:media(文件路径)。
删除文件。需要会话 Token。Body:{ "path": "..." }。
获取应用配置(非敏感字段)。
获取 UI 配置(主题偏好等)。免 Token。
保存 UI 配置。Body:{ "key": "value", ... }。
检查是否已配置管理员密码。免 Token。
响应:{ "has_password": true, "authenticated": false }
密码认证登录。
请求:{ "password": "..." }。成功返回 { "token": "session_token_hex" },失败返回 401。
检查 OpenList API 连通性。免 Token。
Ping OpenList API。免 Token。
测试提供的凭据的 WebDAV 连接。
获取可用的 STRM 引擎列表。
获取监控路径配置。
获取待看列表。{type} 为 movies 或 tv。支持 page、per_page、match_status 参数。
触发全量待看列表同步。
刷新待看列表与 B 区收录的匹配状态。
手动覆盖匹配状态。Body:{ "id": 550, "type": "movie", "status": "matched" }。
更新 TMDB 配置。Body:{ "access_token": "...", "api_key": "...", "language": "zh-CN" }。
获取电视剧季数。{type} 为 tv,{id} 为 TMDB ID。
获取 TMDB 操作日志。
TMDB 头像/海报图片代理。免 Token。
获取同步记录。{type} 为 a、b、c 或 identity。
获取系统日志。参数:level、limit、search。
重启 WebUI 服务器。需要会话 Token。
所有端点返回 JSON。错误响应格式:
{
"error": "错误码",
"message": "可读的错误描述"
}常见状态码:200(成功)、400(参数错误)、401(未认证)、403(IP 不在白名单)、404(不存在)、500(服务器内部错误)。
服务器在 _WebUIHandler.do_GET 和 do_POST 中使用单一分发器(server.py)。每个请求经过:
-
_guard_request()— IP 白名单检查 -
_check_auth()— Token 验证(白名单路径跳过) - 路由处理器分发
路由处理器按域组织在 routes.py 中:
-
_tmdb_routes()— 所有 TMDB 端点 -
_handle_openlist_*()— OpenList 端点 -
handle_dashboard()、handle_area()— 仪表盘和区域端点 -
handle_config_api()— 配置端点 -
handle_logs_api()— 日志端点
🏡 返回 Wiki 首页 • 💻 项目源码仓库 • 🐛 提交 Bug / 建议 • 📦 下载最新版本
🚨 安全与自保黄金法则(每页必读)
- 严禁随意重置 OpenList 令牌:播放签名(
?sign=)强依赖服务端密钥。一旦重置,B区所有.strm将瞬间失效报无权播放,只能清库重来!- 调试阶段切勿使用 DELETE:
DELETE会物理删除云端文件,极其危险!建议终身配置为action = "MOVE"(云端一比一树状回收站模式)。- 放心刮削,资产安全:空文件夹清理算法采用严格的零物理文件判定,含有海报图片、
.nfo、外部字幕的目录绝对不会被误删。
本项目遵循 MIT 开源协议。数据无价,请在充分测试后接入生产环境。