Qué puede y qué no puede darte una alternativa

Kinopoisk es un sitio de cine en ruso y no publica una API abierta general. Los desarrolladores suelen recurrir a servicios de terceros, cada uno con sus propios términos, así que consulta su documentación. amodb es una API independiente y no un servicio de Kinopoisk. Cubre tres necesidades habituales de los proyectos en ruso: títulos y sinopsis en ruso, búsqueda por id de Kinopoisk y la puntuación de Kinopoisk junto a otras puntuaciones cuando se conoce.

Piezas básicas

NecesitasCómoQué devuelve
Título y sinopsis en rusolanguage=ru-RU en cualquier llamada de detalletitle en ruso, original_title sin cambios
Un título a partir de un id de KinopoiskGET /3/find/361?external_source=kinopoisk_idmovie_results con el id 550
El id de Kinopoisk de un títuloGET /3/movie/550/external_idskinopoisk_id como cadena, aquí "361"
La puntuación de KinopoiskGET /3/movie/550/ratingskinopoisk con value y votes, o null
Texto en ucraniano o bielorrusolanguage=uk-UA o language=be-BYCampos localizados, en inglés donde no existe traducción

El siguiente bloque muestra una respuesta de detalle en ruso con append_to_response=ratings. Es una respuesta real para Fight Club (id 550), recortada a los campos usados aquí y con la sinopsis abreviada.

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
    }
  }
}

El objeto ratings siempre lista las mismas cinco claves. Aquí la puntuación de Kinopoisk es 8.7 y su votes es null, así que no se puede dar por hecho un número de votos de Kinopoisk. Los detalles están en la página de puntuaciones.

Comparación de funciones

FunciónKinopoiskamodb
Modelo de preciosSin API abierta general, consulta la documentación de los servicios de tercerosPrepago, de 1 a 24 meses por compra
Nivel gratuitoConsulta su documentaciónNinguno, y sin periodo de prueba
AutenticaciónConsulta su documentaciónapi_key o cabecera Bearer
Formato de respuestaConsulta su documentaciónJSON con la forma de TMDB v3
IdiomasSitio en ruso14 idiomas de interfaz, entre ellos el ruso
PelículasEn el sitio webDetalles, créditos, imágenes, vídeos
TVEn el sitio webSeries, temporadas y episodios
PersonasEn el sitio webPerfiles y filmografía
ImágenesEn el sitio webimg.amodb.dev, sin necesidad de clave
PuntuacionesSu propia puntuación del público en el sitio webPuntuación de Kinopoisk más otras cuatro fuentes cuando se conocen
Límite de solicitudesConsulta su documentación20, 40 o 120 por minuto por clave
Uso comercialConsulta su documentaciónPlanes de pago, consulta los precios
CompatibilidadSin API abierta general, consulta su documentaciónLecturas de TMDB v3 y OMDb

En qué se diferencia amodb

  • Un contrato documentado. Las rutas, los parámetros, los cuerpos de error y los límites están por escrito, y una sola clave sirve todos los endpoints.
  • Ruso junto a otros idiomas. La misma llamada con otro valor de language devuelve los mismos campos en otro idioma. Eso ayuda cuando tu público lee ruso, ucraniano e inglés.
  • Varias puntuaciones en un objeto. Puedes mostrar la puntuación de Kinopoisk junto a IMDb, Metacritic y Rotten Tomatoes, cada una null cuando se desconoce.
  • Títulos originales conservados. original_title y original_name guardan el título en su idioma de origen, incluidos el japonés y el coreano, aunque no sean idiomas de interfaz.

Dónde encaja mejor Kinopoisk

  • La propia comunidad. Las reseñas, las listas, las páginas de usuario y el debate local viven en el sitio. amodb no ofrece nada de eso, solo la puntuación cuando se conoce.
  • Todo lo que va más allá de los metadatos. Para el contenido que no es un campo de metadatos, usa el propio sitio. Una API de metadatos no lo incluye.
  • Su propia puntuación del público. El valor se genera allí primero. En amodb puede ser null para un título nuevo o poco conocido, y el número de votos puede ser null aunque la puntuación esté definida.

Migrar a amodb

Reúne los ids de Kinopoisk que guardas, asígnalos una sola vez con /3/find y conserva al lado el id numérico de amodb. Después, solicita los detalles en ruso y lee la puntuación de la misma respuesta.

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")

Un array movie_results vacío significa que no hay coincidencia para ese id. El id de Kinopoisk de una serie rellena tv_results en su lugar, así que lee ambos arrays cuando no sepas el tipo. Si recibes un 429, espera los segundos de Retry-After. La lista de idiomas está en idiomas, y las reglas de búsqueda en buscar por ID externo.

Cubre los huecos en el texto en ruso

Un campo de texto puede estar vacío cuando un título no tiene traducción al ruso. Comprueba si hay una cadena vacía y solicita de nuevo ese título con language=en-US. Para pósteres con letras en ruso, llama a /3/movie/550/images?include_image_language=ru,null y elige entre posters. El valor null mantiene en la lista las ilustraciones sin texto. Consulta imágenes para ver los tamaños.

Precios

amodb no tiene nivel gratuito. Pagas por adelantado 1, 3, 6, 12 o 24 meses en uno de tres planes, y un periodo más largo cuesta un 10, 20, 30 o 40 por ciento menos. Los planes permiten 20, 40 o 120 solicitudes por minuto, devuelven los mismos datos y no se renuevan automáticamente. Los importes están en precios.