# 带 discover 筛选的动漫 API

> amodb 没有单独的动漫接口。用 discover 加类型 16 和 with_original_language=ja 列出动漫，再用 anime 关键词 ID 缩小范围。日语不是界面语言，但 original_name 保留日文片名。

## 用类型 16 和原始语言 ja 查找动漫

amodb 没有单独的动漫接口。动漫是对 `GET /3/discover/tv` 和 `GET /3/discover/movie` 的筛选：`with_genres=16`（动画）加上 `with_original_language=ja`。再加上 `anime` 关键词的 ID（用 `GET /3/search/keyword` 查询），就只保留被标记为动漫的作品。

需要坦率说明一个限制：日语不属于 amodb 提供的 14 种界面语言。片名和简介会以你请求的语言返回，或使用英语。日文片名保留在剧集的 `original_name` 和电影的 `original_title` 中。

你会得到：

- 来自同一组 discover 筛选的动漫剧集和动漫电影。
- 原始日文片名与本地化片名并列。
- 你选中的每部剧集的季和集列表。
- 来自 `https://img.amodb.dev/t/p/{size}/{file}` 的海报和背景图。

## 可获取的数据

| 你需要          | 调用或字段                                                                 | 说明                                                                |
| ------------ | --------------------------------------------------------------------- | ----------------------------------------------------------------- |
| 动漫剧集         | `GET /3/discover/tv`，带 `with_genres=16` 和 `with_original_language=ja` | `results` 中包含 `name`、`original_name`、`first_air_date`、`genre_ids` |
| 动漫电影         | `GET /3/discover/movie`，使用相同的两个筛选                                     | `title`、`original_title`、`release_date`                           |
| anime 关键词 ID | `GET /3/search/keyword?query=anime`                                   | `results` 数组，包含 `id` 和 `name`                                     |
| 剧集列表         | `GET /3/tv/{series_id}/season/{season_number}`                        | 每季一次调用                                                            |
| 日文片名         | `original_name` 或 `original_title`                                    | 原始文字，按存储内容返回                                                      |
| 海报           | `poster_path`                                                         | 拼接到图片主机，无需密钥                                                      |

## 三步开始

1. 在[定价](https://amodb.dev/zh/pricing/)页选择套餐。每个套餐的数据相同，只有速率不同：每分钟 20、40 或 120 个请求。
2. 在账户后台创建密钥。
3. 先查一次关键词 ID，再用它和这两个筛选调用 discover。

## 请求示例

这段 Python 脚本先找到 anime 关键词 ID，再列出带有该关键词的最热门日本动画剧集。下面的 curl 调用不使用关键词，而是按日期窗口列出单个播出季。

```bash
curl -s "https://api.amodb.dev/3/discover/tv?with_genres=16&with_original_language=ja&first_air_date.gte=2026-10-01&first_air_date.lte=2026-12-31&sort_by=popularity.desc" \
  -H "Authorization: Bearer $AMODB_KEY"
```

```python
import os
import requests

BASE = "https://api.amodb.dev/3"
session = requests.Session()
session.headers["Authorization"] = f"Bearer {os.environ['AMODB_KEY']}"


def get(path, **params):
    r = session.get(BASE + path, params=params, timeout=10)
    r.raise_for_status()
    return r.json()


keywords = get("/search/keyword", query="anime")["results"]
anime_id = next((k["id"] for k in keywords if k["name"].lower() == "anime"), None)
if anime_id is None:
    raise SystemExit("anime keyword not found")

page = get(
    "/discover/tv",
    with_genres=16,
    with_original_language="ja",
    with_keywords=anime_id,
    sort_by="popularity.desc",
    language="en-US",
    page=1,
)
for show in page["results"]:
    print(show.get("first_air_date"), show["name"], "/", show["original_name"])
```

上面 Python 调用的精简响应：第 1 页 19 条结果中的 2 条，数组缩减为 2 项。

```json
{
  "page": 1,
  "results": [
    {
      "adult": false,
      "backdrop_path": "/dmptwhmqxcMrCKgyvBlTt18PgDu.jpg",
      "first_air_date": "2005-04-22",
      "genre_ids": [
        10759,
        16
      ],
      "id": 65733,
      "name": "Doraemon",
      "origin_country": [
        "JP"
      ],
      "original_language": "ja",
      "original_name": "ドラえもん",
      "overview": "Robotic cat Doraemon is sent back in time from the 22nd century to protect 10-year-old...",
      "popularity": 301.2214,
      "poster_path": "/9ZN1P32SHviL3SV51qLivxycvcx.jpg",
      "vote_average": 8.089,
      "vote_count": 252
    },
    {
      "adult": false,
      "backdrop_path": "/mFKys64gbDQrFqwUheGwXQwo2JK.jpg",
      "first_air_date": "2004-10-05",
      "genre_ids": [
        10759,
        16
      ],
      "id": 30984,
      "name": "Bleach",
      "origin_country": [
        "JP"
      ],
      "original_language": "ja",
      "original_name": "BLEACH",
      "overview": "For as long as he can remember, Ichigo Kurosaki has been able to see ghosts. But when h...",
      "popularity": 190.3257,
      "poster_path": "/2EewmxXe72ogD0EaWM8gqa0ccIw.jpg",
      "vote_average": 8.4,
      "vote_count": 2295
    }
  ],
  "total_pages": 216,
  "total_results": 4302
}
```

## 影响动漫列表的筛选

| 筛选                                        | 取值                                                          | 效果                                                              |
| ----------------------------------------- | ----------------------------------------------------------- | --------------------------------------------------------------- |
| `with_genres`                             | `16`                                                        | 动画。逗号表示 AND，因此 `16,35` 是动画加喜剧。                                  |
| `without_genres`                          | 类型 ID                                                       | 排除带有该类型的作品。                                                     |
| `with_original_language`                  | `ja`                                                        | 仅限日语原版。                                                         |
| `with_keywords`                           | 关键词 ID                                                      | 仅限带有该关键词标记的作品。没有标记的作品会被漏掉。                                      |
| `first_air_date.gte`、`first_air_date.lte` | `YYYY-MM-DD`                                                | 剧集的播出时间窗口。电影使用 `primary_release_date.gte` 和 `.lte`。             |
| `sort_by`                                 | `popularity.desc`、`vote_average.desc`、`first_air_date.desc` | 排序。把 `vote_average.desc` 与 `vote_count.gte` 搭配使用，避免样本极少的作品排在最前。 |
| `page`                                    | 1 到 500                                                     | 每页最多 20 条结果。                                                    |

关键词标记并不完整。如果列表看起来偏短，请去掉 `with_keywords`，只保留类型和语言筛选来扩大范围。完整的筛选列表见[发现](https://amodb.dev/zh/discover/)，关键词 ID 的说明见[关键词](https://amodb.dev/zh/keywords/)。

## 动漫电影和长篇剧集

电影接口使用同样的两个筛选。这个调用列出评分较高的日本动画电影，`vote_count.gte` 用来排除只有寥寥几票的作品。

```bash
curl -s "https://api.amodb.dev/3/discover/movie?with_genres=16&with_original_language=ja&sort_by=vote_average.desc&vote_count.gte=200" \
  -H "Authorization: Bearer $AMODB_KEY"
```

每条结果都有 `title`、`original_title`、`release_date` 和 `poster_path`。长期连载的剧集在目录中常被拆成多个季。`GET /3/tv/{series_id}/episode_groups` 会在已知时列出其他排序方式及名称和集数，但 amodb 不提供分组本身，剧集上的 `number_of_episodes` 给出总集数。季的调用见[电视剧 API](https://amodb.dev/zh/tv-show-api/)。

## 片名与语言

动漫是原始片名最重要的场景，所以请同时保留两个字段。

| 字段                  | 内容                | 用途                         |
| ------------------- | ----------------- | -------------------------- |
| `name`              | 你请求的语言的片名         | 界面中的主标签                    |
| `original_name`     | 原始语言的片名，日语原版为日文文字 | 次要标签，对了解日文片名的粉丝有用          |
| `original_language` | `ja`              | 混用多个数据源时在你这边筛选             |
| `overview`          | 本地化文本，没有译文时为空     | 为空时用 `language=en-US` 重新请求 |

`GET /3/tv/{series_id}/alternative_titles` 会在已知时按国家列出其他片名。14 种提供的语言见[语言](https://amodb.dev/zh/languages/)页。

## 对比

| 能力     | 抓取粉丝网站     | 仅动漫的数据库 API  | amodb                                       |
| ------ | ---------- | ------------ | ------------------------------------------- |
| 范围     | 网站覆盖什么就是什么 | 仅限动漫，深度请查阅文档 | 一个目录包含电影和电视剧，用筛选选出动漫                        |
| 动漫筛选   | 网站分类       | 请查阅文档        | 类型 16、`with_original_language=ja`、anime 关键词 |
| 原始语言片名 | 各不相同       | 请查阅文档        | `original_name` 和 `original_title`          |
| 剧集列表   | 从页面解析      | 请查阅文档        | 带 `episodes` 数组的季调用                         |
| 日语界面语言 | 取决于网站      | 请查阅文档        | 不提供，只有原始片名                                  |
| 访问条款   | 各网站自己的条款   | 免费和付费层各不相同   | 付费，预付，无免费额度                                 |

## 定价

动漫列表只需几次 discover 调用，而 discover 结果在边缘缓存 30 分钟，所以对许多应用来说每分钟 20 个请求就够了。套餐为每分钟 20、40 或 120 个请求，数据相同。可预付 1、3、6、12 或 24 个月，分别享受 0、10、20、30 和 40% 的折扣，不会自动续费。没有免费额度。请在[定价](https://amodb.dev/zh/pricing/)页选择套餐。

## 常见问题

### amodb 有专门的动漫接口吗？

没有。动漫是对常规 discover 接口的筛选：with_genres=16 表示动画，with_original_language=ja 表示日语原版。再加上 anime 关键词 ID，可以得到更精确的列表。

### 能获取日文片名和简介吗？

日语原版会把日文片名保留在 original_name（剧集）和 original_title（电影）中。日语不属于提供的 14 种界面语言，所以 name 和 overview 会跟随你的语言标签或使用英语。

### 如何找到 anime 关键词 ID？

调用 /3/search/keyword?query=anime，读取名为 anime 的结果的 id。把它作为 with_keywords 传给 discover。第一次查到后请保存该 ID，因为关键词搜索只缓存 10 分钟。

### 类型 16 只返回动漫吗？

不是。类型 16 是动画，也包括其他国家的卡通片。加上 with_original_language=ja 能去掉其中大部分，再用 anime 关键词进一步缩小范围。

### 动漫列表最多能翻多少页？

页码范围为 1 到 500，每页最多 20 条结果，所以一次查询大约能取到 10,000 条结果。更大的列表请按 first_air_date.gte 和 first_air_date.lte 切成时间窗口。discover 结果缓存 30 分钟。

## 相关页面

- [发现 API](https://amodb.dev/zh/discover/): 与 TMDB v3 筛选条件相同的 discover API。按类型、演员、公司、关键词、年份、评分、时长和平台列出电影和剧集，并可排序。
- [关键词 API](https://amodb.dev/zh/keywords/): 采用 TMDB v3 路径的关键词 API：列出电影或剧集的情节标签、查询关键词及其电影，并把 ID 用于 discover 的 with_keywords。
- [类型与查找列表](https://amodb.dev/zh/genres/): 采用 TMDB v3 路径的类型列表 API：带译名的电影和电视剧类型 ID，以及国家、语言、职务、年龄分级和流媒体平台列表。
- [语言](https://amodb.dev/zh/languages/): amodb 以 14 种语言提供片名、简介和姓名。在 language 中传入 ru-RU 或 pt-BR 这样的 TMDB 风格标签，其他标签回退到英语。
- [用于剧集、季和集的电视剧 API](https://amodb.dev/zh/tv-show-api/): 电视剧 API：剧集状态、电视网、季、集和 next_episode_to_air。TMDB v3 兼容的 JSON，支持 14 种语言，每分钟 20 次起。
- [快速开始](https://amodb.dev/zh/quickstart/): 发出第一次 amodb 调用：获取密钥，用 curl、JavaScript、Python、PHP 或 Go 请求电影详情，再加载海报。

更新于: 2026-10-18. Source: https://amodb.dev/zh/anime-api/
