# Trakt API 替代方案

> Trakt 侧重用户数据：观看历史、观看清单、评分、日历和 OAuth。amodb 不存储用户活动，它是面向电影、电视剧、人物、图片和评分的付费元数据 API。许多应用同时使用两者：用户状态放在 Trakt 或自己的数据库，影视条目数据从 amodb 读取。

## 分工不同，工具不同

Trakt 侧重用户数据：观看历史、观看清单、评分、日历和 OAuth 登录。它也提供公开的元数据接口，其文档说明了适用的限制。amodb 只做一件事：提供电影、电视剧和人物的元数据，以 TMDB v3 格式的 JSON 返回。用户做过什么，选 Trakt；一部作品是什么，选 amodb。需要两者的应用大多各取所长，分别调用两个服务。

## 用户数据与作品数据

| 任务       | Trakt         | amodb                                 |
| -------- | ------------- | ------------------------------------- |
| 观看历史     | 核心功能          | 不提供，请自行存储                             |
| 观看清单和列表  | 核心功能          | 不提供，写入请求返回 405                        |
| 用户评分     | 核心功能          | 不提供，写入请求返回 405                        |
| 日历       | 按用户提供，请查阅其文档  | 每部剧的 `next_episode_to_air` 和排期列表      |
| 登录       | OAuth         | 仅需密钥，无用户登录                            |
| 作品元数据    | 公开接口，限制请查阅其文档 | 支持 14 种语言的详情接口                        |
| 演员和幕后人员  | 请查阅其文档        | 作品用 `/credits`，人物用 `combined_credits` |
| 图片       | 请查阅其文档        | `img.amodb.dev`，无需密钥                  |
| 预告片      | 请查阅其文档        | `/videos`，带 `type` 和 `official`       |
| 某日期以来的变更 | 请查阅其文档        | 不提供，没有变更动态                            |

要获取排期，`GET /3/tv/airing_today` 和 `GET /3/tv/on_the_air` 会按播出日期列出剧集，每条剧集记录还带有自己的 `next_episode_to_air`。对已完结的剧集，该字段为 `null`。这两个列表在[热门趋势与列表](https://amodb.dev/zh/trending-lists/)中有说明。单个用户的日历需要你根据自己的观看记录来组装。

## 功能对比

| 功能   | Trakt                   | amodb                                                      |
| ---- | ----------------------- | ---------------------------------------------------------- |
| 定价模式 | 请查阅其文档                  | 预付 1 至 24 个月                                               |
| 免费额度 | 请查阅其文档                  | 无，也没有试用                                                    |
| 认证方式 | 用户数据使用 OAuth，公开调用请查阅其文档 | `api_key` 或 Bearer 请求头                                     |
| 响应格式 | JSON，请查阅其文档             | TMDB v3 格式的 JSON                                           |
| 语言   | 请查阅其文档                  | 14 种界面语言                                                   |
| 电影   | 支持                      | 支持                                                         |
| 电视剧  | 支持                      | 支持，含季和集                                                    |
| 人物   | 请查阅其文档                  | 支持                                                         |
| 图片   | 请查阅其文档                  | `img.amodb.dev`，尺寸标识与 TMDB 相同                              |
| 评分   | 用户评分，请查阅其文档             | 已知时提供 IMDb、Kinopoisk、Metacritic、Rotten Tomatoes 和 TMDB 的评分 |
| 速率限制 | 限制请查阅其文档                | 每个密钥每分钟 20、40 或 120 次                                      |
| 商业使用 | 请查阅其文档                  | 付费套餐，见[定价](https://amodb.dev/zh/pricing/)                  |
| 兼容性  | 自有 API                  | 兼容 TMDB v3 读取接口和 OMDb                                      |

## amodb 的不同之处

- **用户无需登录页面。** 服务端密钥就够了。没有人需要关联账户，因此没有令牌要刷新，也没有授权页面要解释。
- **字段覆盖面广。** 时长、类型、制作公司、分级、译文和关键词都来自详情接口，并使用你请求的语言。
- **公开的限制。** 套餐限制是每分钟的次数，每次响应都会显示剩余次数。你可以据此估算后台同步的规模。
- **情绪指数和原声配乐。** [情绪指数](https://amodb.dev/zh/moods/)和[原声配乐](https://amodb.dev/zh/soundtracks/)上的扩展提供了 TMDB v3 没有的数据。

## Trakt 更适合的场景

- **一切与个人相关的功能。** 记录观看进度（scrobbling）、历史同步、社交列表和按用户的日历都是 Trakt 的功能。amodb 没有账户，也没有写入方法。
- **跨设备状态。** 如果用户希望手机和电视上的“已看”标记保持一致，状态就必须保存在用户服务中，而 amodb 不是这类服务。
- **已有的 OAuth 应用。** 如果你的应用已经持有 Trakt 令牌，可以继续使用。只需为目前从别处获取的作品数据接入 amodb。

## 迁移到 amodb：关联你的记录

你不需要迁移用户数据，因为 amodb 不保存任何用户数据。你要替换的是元数据调用。Trakt 条目带有其他数据库的 ID（具体字段请查阅其文档），因此请在每条观看记录旁保存 TMDB ID 或 IMDb ID，并在这里使用。

```php
<?php
declare(strict_types=1);

function amodb(string $path): array
{
    $ch = curl_init('https://api.amodb.dev/3' . $path);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('AMODB_KEY')],
    ]);
    $body = curl_exec($ch);
    $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    if ($status !== 200) {
        throw new RuntimeException("amodb returned $status");
    }
    return json_decode($body, true);
}

$show = amodb('/tv/1396?language=en-US');
$next = $show['next_episode_to_air'] ?? null;
echo $show['name'], ' ', $show['status'], PHP_EOL;
echo $next ? 'Next: ' . $next['air_date'] : 'No episode scheduled', PHP_EOL;
```

如果你只有 IMDb ID，请调用一次 `/3/find/tt0903747?external_source=imdb_id`，并保存其中 `tv_results` 的 ID。429 响应包含 `Retry-After`，详见[速率限制](https://amodb.dev/zh/rate-limits/)。

## 估算刷新任务的规模

一个包含 200 部剧的用户片库，完整刷新一次需要 200 次详情请求。每分钟 20 次请求时需要 10 分钟，40 次时需要 5 分钟，120 次时不到 2 分钟。密钥检查先于边缘缓存执行，因此重复调用也会计数。amodb 没有变更动态，所以无法告诉你自某个日期以来哪些 ID 发生了变化。请改为从详情响应中读取 `status` 和 `next_episode_to_air`：仍在播出的剧集刷新得勤一些，已完结的剧集则很少刷新。详情会缓存 6 小时，刷新间隔短于这个时间只会得到相同的数据。

## 定价

amodb 采用预付方式，不会自动续费。可选择 1、3、6、12 或 24 个月，分别享受 0、10、20、30 或 40% 的折扣，并在每分钟 20、40 或 120 个请求的三个套餐中选择一个。所有套餐返回的数据相同，没有免费额度。具体金额见[定价](https://amodb.dev/zh/pricing/)。

## 常见问题

### amodb 能替代 Trakt 的观看历史和观看清单吗？

不能。amodb 不存储任何用户活动，TMDB 风格的账户、会话、评分和列表写入方法会返回 405，并带有 status_code 37。观看历史请保存在 Trakt 或你自己的数据库中。

### 调用 amodb 需要 OAuth 吗？

不需要。每个请求通过 api_key 查询参数或 Authorization Bearer 请求头携带密钥。由于 API 只提供元数据而不涉及个人数据，所以没有用户登录流程。

### 如何把 Trakt 记录与 amodb 的影视条目关联起来？

Trakt 条目会列出 IMDb、TMDB 等其他数据库的 ID（具体字段请查阅其文档）。TMDB ID 可直接用于 amodb，IMDb ID 则通过 /3/find 和 external_source=imdb_id 解析。

### 有即将播出剧集的日历吗？

剧集详情会为你追踪的每部剧提供 next_episode_to_air，/tv/airing_today 和 /tv/on_the_air 则按播出安排列出剧集。amodb 不会为某个具体用户生成日历。

### 与 Trakt 相比，速率限制是怎样的？

Trakt 公开元数据接口的限制请查阅其文档。amodb 按套餐为每个密钥提供每分钟 20、40 或 120 个请求，并在响应头中显示剩余次数。

## 相关页面

- [用于剧集、季和集的电视剧 API](https://amodb.dev/zh/tv-show-api/): 电视剧 API：剧集状态、电视网、季、集和 next_episode_to_air。TMDB v3 兼容的 JSON，支持 14 种语言，每分钟 20 次起。
- [电视剧 API](https://amodb.dev/zh/tv-series/): 路径和 JSON 与 TMDB v3 相同的电视剧 API。按 ID 获取剧集的季、电视网和下一集，以及内容分级和观看平台。
- [按外部 ID 查找](https://amodb.dev/zh/find-by-external-id/): 用 TMDB find 接口按 IMDb、TVDB、Wikidata 或 Kinopoisk ID 查找电影、剧集或人物，并读取外部 ID。
- [热门与榜单接口](https://amodb.dev/zh/trending-lists/): 兼容 TMDB v3 路径的热门电影 API：日榜与周榜，以及电影和电视剧的正在上映、热门、高分、即将上映榜单，缓存 30 分钟。
- [认证](https://amodb.dev/zh/authentication/): 如何发送 amodb 密钥：查询中的 api_key、Bearer 请求头，或 OMDb 的 apikey。含密钥格式、保管和 401 错误。
- [定价](https://amodb.dev/zh/pricing/): amodb 套餐的区别只在每分钟请求数：20、40 或 120。所有套餐都包含全部兼容 TMDB v3 和 OMDb 的数据。预付，不续费，无试用。

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