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
| Necesitas | Cómo | Qué devuelve |
|---|---|---|
| Título y sinopsis en ruso | language=ru-RU en cualquier llamada de detalle | title en ruso, original_title sin cambios |
| Un título a partir de un id de Kinopoisk | GET / | movie_results con el id 550 |
| El id de Kinopoisk de un título | GET / | kinopoisk_id como cadena, aquí "361" |
| La puntuación de Kinopoisk | GET / | kinopoisk con value y votes, o null |
| Texto en ucraniano o bielorruso | language=uk-UA o language=be-BY | Campos localizados, en inglés donde no existe traducción |
El siguiente bloque muestra una respuesta de detalle en ruso con append_. Es una respuesta real para Fight Club (id 550), recortada a los campos usados aquí y con la sinopsis abreviada.
{
"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ón | Kinopoisk | amodb |
|---|---|---|
| Modelo de precios | Sin API abierta general, consulta la documentación de los servicios de terceros | Prepago, de 1 a 24 meses por compra |
| Nivel gratuito | Consulta su documentación | Ninguno, y sin periodo de prueba |
| Autenticación | Consulta su documentación | api_key o cabecera Bearer |
| Formato de respuesta | Consulta su documentación | JSON con la forma de TMDB v3 |
| Idiomas | Sitio en ruso | 14 idiomas de interfaz, entre ellos el ruso |
| Películas | En el sitio web | Detalles, créditos, imágenes, vídeos |
| TV | En el sitio web | Series, temporadas y episodios |
| Personas | En el sitio web | Perfiles y filmografía |
| Imágenes | En el sitio web | img.amodb.dev, sin necesidad de clave |
| Puntuaciones | Su propia puntuación del público en el sitio web | Puntuación de Kinopoisk más otras cuatro fuentes cuando se conocen |
| Límite de solicitudes | Consulta su documentación | 20, 40 o 120 por minuto por clave |
| Uso comercial | Consulta su documentación | Planes de pago, consulta los precios |
| Compatibilidad | Sin API abierta general, consulta su documentación | Lecturas 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
languagedevuelve 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
nullcuando se desconoce. - Títulos originales conservados.
original_titleyoriginal_nameguardan 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
nullpara un título nuevo o poco conocido, y el número de votos puede sernullaunque 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.
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 / 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.