公开 API
字幕组目录
GET /api/subtitle-groups —— 公开字幕组列表,第三方应用拼 RSS 前先拉这一份做 name → slug 映射。
/api/subtitle-groups 返回站内所有可见字幕组的 slug、展示名、发布数与番剧数。第三方应用应在启动时调用一次,把响应缓存到本地,再走 RSS。
数据极少变化,几乎全部命中 304。配合 If-None-Match 轮询带宽接近零。
请求
GET https://anibt.net/api/subtitle-groups
Accept: application/json响应(节选)
{
"ok": true,
"data": [
{
"slug": "kirara-fantasia",
"name": "Kirara Fantasia",
"organizationId": "org_HCFDS3FmwXnP",
"status": "ACTIVE",
"totalReleases": 469,
"totalAnimes": 84,
"createdAt": 1775269444251
},
{
"slug": "pre-s",
"name": "Prejudice-Studio",
"organizationId": "org_OcyZBPpv1lTk",
"status": "ACTIVE",
"totalReleases": 47,
"totalAnimes": 12,
"createdAt": 1772900000000
},
{
"slug": "kitauji-sub",
"name": "北宇治字幕组",
"organizationId": "org_aagmgM9i0ZyR",
"status": "ACTIVE",
"totalReleases": 6,
"totalAnimes": 2,
"createdAt": 1776618758015
}
]
}字段说明
属性
类型
304 支持
ETag 形如 W/"sg{count}-{maxCreatedAt}-{releaseSum}-{urlHash}"。再次请求带 If-None-Match 即拿 304。
H=$(curl -sI "https://anibt.net/api/subtitle-groups")
ETAG=$(echo "$H" | grep -i '^etag:' | cut -d' ' -f2- | tr -d '\r')
curl -sI -H "If-None-Match: $ETAG" "https://anibt.net/api/subtitle-groups" | head -1
# → HTTP/2 304实战:用 jq 挑出目标字幕组
curl -s https://anibt.net/api/subtitle-groups \
| jq '.data[] | select(.name | test("Kirara Fantasia|Prejudice-Studio|北宇治字幕组|拨雪寻春")) | {name, slug}'输出:
{"name":"Kirara Fantasia","slug":"kirara-fantasia"}
{"name":"Prejudice-Studio","slug":"pre-s"}
{"name":"北宇治字幕组","slug":"kitauji-sub"}
{"name":"拨雪寻春","slug":"haruhana"}缓存与限流
| 项目 | 值 |
|---|---|
Cache-Control | public, max-age=0, s-maxage=300, stale-while-revalidate=86400, stale-if-error=86400 |
| 速率限制 | 与 RSS 端点共用 60 秒窗口,详见 限流与上限 |
| 条件请求 | 支持 If-None-Match、If-Modified-Since |
下一步:拿到 slug 后,去 RSS 主入口拼订阅 URL。