ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

AutoBangumi REST API 参考:/api/v1 端点全解析与源码级实现说明

AutoBangumi REST API 参考:/api/v1 端点全解析与源码级实现说明 后端前端音视频【免费下载链接】Auto_BangumiAutoBangumi - 全自动追番工具项目地址https://gitcode.com/gh_mirrors/au/Auto_Bangumi点击查看免费下载AutoBangumi 在/api/v1路径下提供了一整套基于 FastAPI 的 REST API覆盖认证、番剧规则管理、RSS 订阅源、种子搜索与下载器控制等核心能力。本文以官方 API 参考文档docs/api/index.md为骨架结合仓库源码逐端点讲解请求方式、请求体、响应格式与底层实现帮助你直接编写脚本、对接自动化流程或深入理解 WebUI 每个按钮背后的 HTTP 调用。基础约定Base URL、认证与统一响应所有 API 以http://your-host:7892/api/v1为基础 URL。端口 7892 是 WebUI 的默认端口在源码的默认配置中定义于 backend/src/module/conf/const.py可通过环境变量AB_WEBUI_PORT覆盖。路由注册位于 backend/src/module/api/init.pyv1 APIRouter(prefix/v1)再被 backend/src/main.py 以app.include_router(v1, prefix/api)挂载最终形成/api/v1/...的完整路径。认证要求除登录端点和首次运行的设置向导外所有端点都需要 JWT 认证。令牌可以通过两种方式传递Cookietokenjwt登录成功后自动设置httponlyTrue、samesitestrict、有效期 1 天见 backend/src/module/api/auth.py请求头Authorization: Bearer token。从源码看认证依赖链是get_current_user/get_principalbackend/src/module/security/api.py 定义了OAuth2PasswordBearer(tokenUrl/api/v1/auth/login)即令牌校验完全由 JWT 签名保证。注意AB_DEV_NO_AUTH1环境变量会全局绕过认证源码中有明确警告该变量只能用于开发绝不能在生产环境设置backend/src/module/security/api.py。响应格式所有 API 响应遵循统一的双语消息结构{ msg_en: Success message in English, msg_zh: 成功消息中文, status: true }该结构对应 backend/src/module/models/response.py 中的APIResponse模型status、msg_en、msg_zh三字段。错误响应携带标准 HTTP 状态码400、401、403、404、500以及中英文错误消息例如登录失败返回401与Invalid username or passwordbackend/src/module/api/auth.py。交互式文档开发模式下源码中以DEV_VERSION为版本号时访问http://your-host:7892/docs可打开 Swagger UI直接试调每个端点此时根路径/也会 302 跳转到/docsbackend/src/main.py。认证端点登录、刷新与凭据更新登录POST /api/v1/auth/login请求体为username与passwordOAuth2 表单格式源码使用OAuth2PasswordRequestForm即application/x-www-form-urlencoded。成功后设置包含 JWT 令牌的认证 cookie。登录端点还受登录 IP 白名单保护check_login_ip依赖见 backend/src/module/security/api.py当security.login_whitelist非空时仅允许白名单内的 IP 登录。刷新令牌POST /api/v1/auth/refresh_token延长当前浏览器会话。源码同时保留了一个GET /auth/refresh_token兼容别名标记为deprecated并在响应头返回Deprecation: true与Warning头backend/src/module/api/auth.py新客户端应使用 POST。登出GET /api/v1/auth/logout撤销当前持久化会话并清除认证 cookie调用service.logout(token)后delete_cookie返回{msg_en: Logout successfully., msg_zh: 登出成功。, status: true}。更新凭据POST /api/v1/auth/update更新用户名和/或密码。请求体与登录一致更新成功后轮换所有会话并重新签发 cookie。若用户名冲突返回409凭据错误返回401backend/src/module/api/auth.py。另有GET /auth/me返回当前用户公开信息。Passkey / WebAuthn 无密码认证v3.2使用 WebAuthn/FIDO2 Passkey 实现无密码登录分为注册、认证、管理三组端点端点说明POST /passkey/register/options获取 WebAuthn 注册选项质询、依赖方信息POST /passkey/register/verify验证并保存浏览器返回的注册响应POST /passkey/auth/options获取认证质询选项POST /passkey/auth/verify验证认证响应并签发 JWT 令牌GET /passkey/list列出当前用户所有已注册 PasskeyPOST /passkey/delete通过凭据 ID 删除已注册 PasskeyPasskey 的依赖方 IDwebauthn_rp_id与来源webauthn_origin在security配置节中定义默认配置见 backend/src/module/conf/const.py前端实现位于 webui/src/services/webauthn.ts。该能力的具体安全说明可参考 docs/config/security.md。配置读写GET /config/get 与 PATCH /config/updateGET /api/v1/config/get返回完整配置对象包含program、downloader、rss_parser、bangumi_manage、notification、proxy、experimental_openai、security、update、llm等小节默认值定义于 backend/src/module/conf/const.py。PATCH /api/v1/config/update部分更新配置请求体只需包含要修改的字段。这里有一个值得注意的源码细节GET /config/get会对键名包含password、api_key、token、secret的字符串值做递归掩码处理替换为********backend/src/module/api/config.pyPATCH提交时若某字段仍是掩码值系统会按身份匹配策略从旧配置中恢复原值——如果无法唯一定位掩码项对应的旧值例如通知渠道列表被删除且身份字段同时被改会直接报错要求重新输入密钥而不是猜一个值backend/src/module/api/config.py。这意味着不涉及敏感字段的更新可放心提交涉及敏感字段时不要提交********占位符应提交真实的新值修改通知渠道这类列表时尽量只改目标项的字段避免身份歧义。番剧动画规则管理端点番剧模块对应module/api/bangumi.py中的Bangumi数据库实体动画下载规则含标题、季度、集数偏移等元数据。端点如下方法/路径说明GET /bangumi/get/all获取所有动画下载规则返回Bangumi对象数组GET /bangumi/get/{bangumi_id}按 ID 获取特定规则PATCH /bangumi/update/{bangumi_id}更新规则元数据标题、季度、集数偏移等DELETE /bangumi/delete/{bangumi_id}删除单个规则及其关联种子DELETE /bangumi/delete/many/批量删除请求体{bangumi_ids: [1, 2, 3]}DELETE /bangumi/disable/{bangumi_id}禁用规则保留文件、停止下载DELETE /bangumi/disable/many/批量禁用GET /bangumi/enable/{bangumi_id}重新启用规则GET /bangumi/refresh/poster/all从 TMDB 刷新所有动画海报GET /bangumi/refresh/poster/{bangumi_id}刷新单个动画海报GET /bangumi/refresh/calendar从 Bangumi.tv 刷新放送日历数据GET /bangumi/reset/all删除所有动画规则谨慎使用get/all直接调用db.bangumi.search_all()backend/src/module/api/bangumi.py。除文档列出的端点外源码中还包含更多进阶端点例如POST /bangumi/detect-offset结合 TMDB 数据检测季/集偏移不一致返回season_offset、episode_offset、reason与置信度以及设置放送日weekday的端点backend/src/module/api/bangumi.py。番剧规则的完整字段与编辑方式可参考 docs/feature/bangumi.md。RSS 订阅源端点RSS 模块管理所有订阅源及其解析出的种子路由前缀/rssPydantic 合法解析器取值为mikan、tmdb、parserbackend/src/module/api/rss.py。方法/路径说明GET /rss获取所有已配置订阅源POST /rss/add添加订阅源请求体{url: ..., aggregate: true, parser: mikan}aggregate表示聚合订阅parser指定解析引擎POST /rss/enable/many批量启用请求体为 ID 数组PATCH /rss/disable/{rss_id}禁用单个订阅源POST /rss/disable/many批量禁用DELETE /rss/delete/{rss_id}删除单个订阅源POST /rss/delete/many批量删除PATCH /rss/update/{rss_id}更新订阅源配置GET /rss/refresh/all手动刷新所有订阅源GET /rss/refresh/{rss_id}刷新指定订阅源GET /rss/torrent/{rss_id}获取从该订阅源解析出的种子列表POST /rss/analysis分析 RSS URL 并提取动画元数据但不订阅请求体{url: ...}POST /rss/collect从订阅源下载所有剧集用于已完结动画对应SeasonCollectorPOST /rss/subscribe订阅订阅源以自动下载连载动画实现上add_rss通过RSSEngine.add_rss(url, name, aggregate, parser)入库backend/src/module/api/rss.pycollect走SeasonCollector整季收集逻辑。RSS 解析引擎经典/新引擎选择见rss_parser.engine配置项与订阅流程详见 docs/config/rss.md。搜索端点SSE 实时流搜索番剧Server-Sent EventsGET /api/v1/search/bangumi?keyword{keyword}provider{provider}以 SSE 流返回解析后的搜索结果实现实时更新。源码中该端点的实际参数名为site与keywordskeywords支持空格分隔多关键词返回EventSourceResponsebackend/src/module/api/search.py事件流由SearchTorrent.analyse_keyword()异步生成。搜索提供者取值如mikan、nyaa、dmhy等。列出搜索提供者GET /api/v1/search/provider返回可用搜索提供者名称列表list(SEARCH_CONFIG.keys())。源码还提供GET/PUT /search/provider/config用于查看与更新各提供者的 URL 模板backend/src/module/api/search.py。搜索提供者的配置与自定义方式见 docs/config/search-provider.md。程序控制端点程序控制路由定义于 backend/src/module/api/program.py负责主循环RSS 检查、下载、重命名的启停方法/路径说明GET /status获取程序状态返回{status: running, version: 3.2.0, first_run: false}。源码中status字段实际为布尔值true/false由ctx.is_running决定version来自VERSION常量first_run来自上下文标志GET /start启动主程序RSS 检查、下载、重命名调用ctx.start_tasks()GET /restart重启主程序调用ctx.restart()GET /stop停止主程序WebUI 仍可访问调用ctx.stop()GET /shutdown关闭整个应用进程Docker 环境下由容器重启ctx.stop()后向自身发送SIGINTGET /check/downloader测试与已配置下载器qBittorrent的连接返回布尔值一个对脚本自动化很有用的兼容性细节这些控制端点的主方法实际是POST/start、/stop、/restart、/shutdown均为router.post同时保留了GET别名并标记为 deprecated以便 3.2 及更早版本中依赖 GET 的外部自动化cron、Home Assistant 等在升级后不至于 405 静默失效backend/src/module/api/program.py。新编写的集成脚本请一律使用 POST避免将来 GET 别名移除后失效。下载器管理端点v3.2GET /api/v1/downloader/torrents获取下载器中Bangumi分类category下的所有种子内部通过DownloadClient.get_torrent_info(categoryBangumi)调用backend/src/module/api/downloader.py。暂停、恢复与删除POST /api/v1/downloader/torrents/pause POST /api/v1/downloader/torrents/resume POST /api/v1/downloader/torrents/delete请求体统一为哈希数组{ hashes: [hash1, hash2], delete_files: false }其中delete_files仅删除端点使用控制是否连带删除下载文件。源码中多个哈希以|拼接后一次性交给下载客户端批量处理backend/src/module/api/downloader.py。此外该模块还提供了文档未展开的种子管理能力POST /downloader/torrents/tag用ab:{bangumi_id}标签关联种子与番剧用于重命名器精确查找季/集偏移与POST /downloader/torrents/tag/auto自动按名称/保存路径匹配并为未打标签的种子补打标签以及重命名冲突查询与重试端点backend/src/module/api/downloader.py。下载器类型qBittorrent / aria2 / 模拟器与路径配置详见 docs/config/downloader.md。设置向导端点v3.2无需认证设置向导端点仅在首次运行设置完成前可用且不需要认证设置完成后所有端点返回403 Forbidden。源码通过哨兵文件config/.setup_complete判断设置状态backend/src/module/api/setup.py。方法/路径说明GET /setup/status检查是否需要设置向导返回{need_setup: true}实际还附带version字段POST /setup/test-downloader用提供凭据测试下载器连接。请求体{type: qbittorrent, host: 172.17.0.1:8080, username: admin, password: adminadmin, ssl: false}。源码支持qbittorrent、aria2走 JSON-RPCaria2.getVersion验证 RPC secret与mock开发用模拟下载器三种类型并区分连接超时/无法连接/不是 qBittorrent/IP 被封禁/用户名密码错误等细化错误backend/src/module/api/setup.pyPOST /setup/test-rss验证 RSS URL 可访问可解析。请求体{url: https://mikanime.tv/RSS/MyBangumi?tokenxxx}成功时返回频道标题与条目数POST /setup/test-notification发送测试通知。请求体{type: telegram, token: bot_token, chat_id: chat_id}通过PROVIDER_REGISTRY查找通知提供者并调用其test()POST /setup/complete保存全部配置并标记设置完成创建config/.setup_complete。请求体为完整设置对象用户名4–20 字符、密码至少 8 字符、下载器信息downloader_type、downloader_host、downloader_username、downloader_password、downloader_path默认/downloads/Bangumi、downloader_ssl、可选的 RSSrss_url、rss_name与通知notification_enable、notification_type、notification_token、notification_chat_id。完成后写入配置、重建运行时上下文、添加 RSS 源并启动任务循环backend/src/module/api/setup.py安全细节/setup/test-rss会拒绝指向私网/保留/回环地址的 URL防 SSRF/setup/test-downloader只允许 http/https 协议探测/setup/complete额外校验调用者要么持有有效会话要么admin账号仍是出厂默认密码adminadmin防止升级后未跑向导的实例被未认证调用者覆盖管理员凭据backend/src/module/api/setup.py。日志端点GET /api/v1/log获取完整应用日志文件。GET /api/v1/log/clear清空日志文件。这两个端点配合排障非常实用日志的详细配置debug 开关、输出格式见 docs/config/… 之外的 backend/src/module/conf/log.py。实践建议与调用示例综合以上端点你可以用 curl 完成一次典型的自动化操作。例如登录并携带 cookie 查询全部番剧规则# 登录cookie 写入文件 curl -c cookies.txt -X POST http://your-host:7892/api/v1/auth/login \ -d usernameadminpasswordadminadmin # 携带 cookie 列出全部番剧 curl -b cookies.txt http://your-host:7892/api/v1/bangumi/get/all # 携带 Bearer 令牌列出全部订阅源 curl -H Authorization: Bearer jwt http://your-host:7892/api/v1/rss编写自动化脚本时请记住以下几点一律使用 POST 控制程序/start、/stop、/restart、/shutdown的 GET 别名仅为旧版兼容保留配置更新不要回传掩码GET /config/get返回的********是显示占位符PATCH 时应提交真实值设置向导有生命周期/setup/*在config/.setup_complete创建后即永久返回 403错误处理所有端点统一返回中英文消息msg_en/msg_zh结合 HTTP 状态码即可定位问题生产环境严禁设置AB_DEV_NO_AUTH1否则认证会被全局绕过。如果你需要把某个端点接到自己的通知、看板或 Home Assistant 自动化中以上每个端点都有对应的源码实现可直接对照例如登录见 backend/src/module/api/auth.py、种子列表见 backend/src/module/api/downloader.py、SSE 搜索见 backend/src/module/api/search.py。WebUI 前端对这些端点的封装含 TypeScript 类型与请求函数位于 webui/src/api/可作为集成参考。赞分享后端前端音视频【免费下载链接】Auto_BangumiAutoBangumi - 全自动追番工具项目地址https://gitcode.com/gh_mirrors/au/Auto_Bangumi点击查看免费下载相关推荐WatchYourLAN HTTP API 完全指南REST 接口、参数说明与源码级实现解析WatchYourLAN HTTP API 完全指南REST 接口、参数说明与源码级实现解析 本指南基于 WatchYourLAN用 Go 编写的轻量级网络运维网络ArchiveBox Crawl REST API 深度解析/api/v1/crawls 端点、请求模式与实现细节ArchiveBox Crawl REST API 深度解析/api/v1/crawls 端点、请求模式与实现细节 ArchiveBox 的 archiveb后端数据工程ArchiveBox v1 REST API Machine 模块详解Machine 与 Binary 资源端点全解析ArchiveBox v1 REST API Machine 模块详解Machine 与 Binary 资源端点全解析 本篇技术文章基于 ArchiveBox后端数据工程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表