# Kinopoisk API 替代方案

> Kinopoisk 是俄语电影网站，没有公开的通用 API，开发者常转向第三方服务，请查阅其文档。amodb 是付费 API：用 language=ru-RU 返回俄语片名，按 Kinopoisk ID 查找作品，并在已知时附带 Kinopoisk 评分。

## 替代方案能提供什么，不能提供什么

Kinopoisk 是俄语电影网站，没有公开的通用 API。开发者常转而使用第三方服务，各有各的条款，请查阅其文档。amodb 是独立的 API，并非 Kinopoisk 的服务。它覆盖俄语项目常见的三类需求：俄语的片名和简介、按 Kinopoisk ID 查找，以及在已知时把 Kinopoisk 评分与其他评分放在一起。

## 基本组成

| 你需要                 | 方法                                             | 返回内容                                      |
| ------------------- | ---------------------------------------------- | ----------------------------------------- |
| 俄语片名和简介             | 在任意详情调用上加 `language=ru-RU`                     | 俄语的 `title`，`original_title` 不变           |
| 根据 Kinopoisk ID 找作品 | `GET /3/find/361?external_source=kinopoisk_id` | 带有 ID 550 的 `movie_results`               |
| 作品的 Kinopoisk ID    | `GET /3/movie/550/external_ids`                | 字符串形式的 `kinopoisk_id`，此处为 `"361"`         |
| Kinopoisk 评分        | `GET /3/movie/550/ratings`                     | 带 `value` 和 `votes` 的 `kinopoisk`，或为 null |
| 乌克兰语或白俄罗斯语文本        | `language=uk-UA` 或 `language=be-BY`            | 本地化字段，没有时为英语                              |

下面的代码块展示了带有 `append_to_response=ratings` 的俄语详情响应。这是《搏击俱乐部》（ID 550）的真实响应，只保留了这里用到的字段，并缩短了简介。

```json
{
  "id": 550,
  "original_title": "Fight Club",
  "overview": "Сотрудник страховой компании страдает хронической бессонницей и отчаянно пытается вырваться из му...",
  "release_date": "1999-10-15",
  "tagline": "«Интриги. Хаос. Мыло»",
  "title": "Бойцовский клуб",
  "ratings": {
    "imdb": {
      "value": 8.8,
      "votes": 2669989
    },
    "kinopoisk": {
      "value": 8.7,
      "votes": null
    },
    "metacritic": {
      "value": 67,
      "votes": null
    },
    "rotten_tomatoes": {
      "value": 81,
      "votes": null
    },
    "tmdb": {
      "value": 8.437,
      "votes": 33039
    }
  }
}
```

ratings 对象始终列出相同的五个键。这里 Kinopoisk 评分为 8.7，而它的 `votes` 是 `null`，所以不能默认一定有 Kinopoisk 投票数。详情见[评分](https://amodb.dev/zh/ratings/)页。

## 功能对比

| 功能   | Kinopoisk               | amodb                                     |
| ---- | ----------------------- | ----------------------------------------- |
| 定价模式 | 没有通用的开放 API，第三方服务请查阅其文档 | 预付，每次购买 1 至 24 个月                         |
| 免费额度 | 请查阅其文档                  | 无，也没有试用                                   |
| 认证方式 | 请查阅其文档                  | `api_key` 或 Bearer 请求头                    |
| 响应格式 | 请查阅其文档                  | TMDB v3 格式的 JSON                          |
| 语言   | 俄语网站                    | 14 种界面语言，包括俄语                             |
| 电影   | 在网站上                    | 详情、演职员、图片、视频                              |
| 电视剧  | 在网站上                    | 剧集、季和集                                    |
| 人物   | 在网站上                    | 资料和作品列表                                   |
| 图片   | 在网站上                    | `img.amodb.dev`，无需密钥                      |
| 评分   | 网站上自有的观众评分              | Kinopoisk 评分，另有四个来源（已知时）                  |
| 速率限制 | 请查阅其文档                  | 每个密钥每分钟 20、40 或 120 次                     |
| 商业使用 | 请查阅其文档                  | 付费套餐，见[定价](https://amodb.dev/zh/pricing/) |
| 兼容性  | 没有通用的开放 API，请查阅其文档      | TMDB v3 读取接口和 OMDb                        |

## amodb 的不同之处

- **有文档的契约。** 路径、参数、错误响应体和限制都有明确记录，一个密钥可用于所有接口。
- **俄语与其他语言并存。** 同样的调用换一个 `language` 值，就能得到另一种语言的相同字段。当你的用户读俄语、乌克兰语和英语时，这很有帮助。
- **一个对象中有多个评分。** 你可以把 Kinopoisk 评分与 IMDb、Metacritic 和 Rotten Tomatoes 并排展示，未知的评分均为 `null`。
- **保留原始片名。** `original_title` 和 `original_name` 以源语言保存片名，包括日语和韩语，尽管它们不是界面语言。

## Kinopoisk 更适合的场景

- **社区本身。** 评论、列表、用户主页和本地讨论都在网站上。amodb 不提供这些，只在已知时给出评分。
- **元数据之外的一切。** 对于不属于元数据字段的内容，请使用网站本身。元数据 API 不承载这些内容。
- **自有的观众评分。** 这个数值最先在那里产生。在 amodb 中，新作品或冷门作品的评分可能为 `null`，即使评分已设置，投票数也可能为 `null`。

## 迁移到 amodb

收集你保存的 Kinopoisk ID，用 `/3/find` 一次性完成映射，并把数字形式的 amodb ID 保存在旁边。之后用俄语请求详情，并从同一个响应中读取评分。

```python
import os
import requests

KEY = os.environ["AMODB_KEY"]
BASE = "https://api.amodb.dev/3"
HEADERS = {"Authorization": f"Bearer {KEY}"}


def get(path, **params):
    r = requests.get(BASE + path, params=params, headers=HEADERS, timeout=10)
    r.raise_for_status()
    return r.json()


found = get("/find/361", external_source="kinopoisk_id")
movie_id = found["movie_results"][0]["id"]
movie = get(f"/movie/{movie_id}", language="ru-RU", append_to_response="ratings")
kp = movie["ratings"]["kinopoisk"]
print(movie["title"], "/", movie["original_title"])
print("Kinopoisk:", kp["value"] if kp else "not known")
```

`movie_results` 数组为空表示该 ID 没有匹配项。剧集的 Kinopoisk ID 会填充 `tv_results`，因此在不确定类型时请同时读取两个数组。遇到 429 时，等待 `Retry-After` 指定的秒数。语言列表见[语言](https://amodb.dev/zh/languages/)页，查找规则见[按外部 ID 查找](https://amodb.dev/zh/find-by-external-id/)页。

## 处理俄语文本的缺口

如果某部作品没有俄语译文，文本字段可能为空。请检查空字符串，并对该作品用 `language=en-US` 再请求一次。要获取带俄语字样的海报，请调用 `/3/movie/550/images?include_image_language=ru,null`，并从 `posters` 中挑选。`null` 值会把无文字的图稿保留在列表中。尺寸见[图片](https://amodb.dev/zh/images-api/)页。

## 定价

amodb 没有免费额度。你在三个套餐之一上预付 1、3、6、12 或 24 个月，周期越长越便宜 10、20、30 或 40%。这些套餐允许每分钟 20、40 或 120 个请求，返回相同的数据，也不会自动续费。具体金额见[定价](https://amodb.dev/zh/pricing/)。

## 常见问题

### Kinopoisk 有官方公开 API 吗？

Kinopoisk 是俄语电影网站，没有公开的通用 API。开发者通常使用第三方服务，各自有不同的条款。在依赖其中某一个之前，请查阅其文档。

### 如何在 amodb 上通过 Kinopoisk ID 找到作品？

用 Kinopoisk ID 和 external_source=kinopoisk_id 调用 /3/find。例如 361 解析为《搏击俱乐部》，即 ID 550；404900 解析为《绝命毒师》，即 ID 1396。结果以 TMDB 结构出现在 movie_results 或 tv_results 中。

### 一定会返回 Kinopoisk 评分吗？

不一定。ratings 对象中的 kinopoisk 键在评分已知时包含 value 和 votes，否则为 null。value 满分 10，保留一位小数。即使设置了 value，votes 也可能为 null，因此仅在存在时才显示。

### 除俄语外还能请求哪些语言？

共 14 种，包括乌克兰语和白俄罗斯语。在 language 参数中传入 uk-UA 或 be-BY 这样的 TMDB 标签即可。不支持的标签会回退到英语，原始片名保留在 original_title 中。

### 能拿到 Kinopoisk 评论的文本吗？

不能。amodb 在已知时返回 Kinopoisk 评分。评论文本、列表和网站的社区功能不属于该 API，TMDB 风格的评论接口对大多数作品返回空列表。

## 相关页面

- [多语言电影元数据 API](https://amodb.dev/zh/multilingual-movie-metadata-api/): 支持 14 种语言的多语言电影元数据 API。使用 TMDB 语言标签，读取全部译文，回退到英语，并处理希伯来语的从右到左排版。
- [电影与电视剧评分](https://amodb.dev/zh/ratings/): 一次调用返回作品的 IMDb、Kinopoisk、Metacritic、Rotten Tomatoes 和 TMDB 评分，来源未知时为 null。
- [按外部 ID 查找](https://amodb.dev/zh/find-by-external-id/): 用 TMDB find 接口按 IMDb、TVDB、Wikidata 或 Kinopoisk ID 查找电影、剧集或人物，并读取外部 ID。
- [语言](https://amodb.dev/zh/languages/): amodb 以 14 种语言提供片名、简介和姓名。在 language 中传入 ru-RU 或 pt-BR 这样的 TMDB 风格标签，其他标签回退到英语。
- [IMDb API 替代方案](https://amodb.dev/zh/imdb-api-alternative/): IMDb 没有免费的通用 REST API。付费 JSON API 可按 IMDb ID 查找作品，读取已知的 IMDb 评分，并获取演职员、图片和预告片。
- [定价](https://amodb.dev/zh/pricing/): amodb 套餐的区别只在每分钟请求数：20、40 或 120。所有套餐都包含全部兼容 TMDB v3 和 OMDb 的数据。预付，不续费，无试用。

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