Datos de IMDb por REST: la respuesta corta
IMDb no tiene una API REST gratuita de uso general. Sus conjuntos de datos no comerciales son archivos descargables y el acceso comercial requiere licencia, así que consulta su documentación para conocer los términos vigentes. Si quieres llamar a un endpoint HTTP con un id de IMDb y recibir JSON, amodb lo hace con un plan de pago. Si tu contrato exige datos con licencia del propio IMDb, ese acuerdo es con IMDb y amodb no lo sustituye.
Formas de usar un id de IMDb en amodb
Cinco llamadas cubren la mayoría de las necesidades. Cada una parte de un id que ya tienes o termina en uno.
| Tienes o quieres | Llamada | Obtienes |
|---|---|---|
| Un título a partir de un id de IMDb | GET / | Los arrays movie_results, tv_results, person_results |
| El id de IMDb de una película | GET /3/movie/550, campo imdb_id | tt0137523 para Fight Club |
| El id de IMDb de una serie | GET / | imdb_id junto al id de TVDB |
| La puntuación de IMDb | GET / | imdb como value y votes, o null |
| Un registro al estilo OMDb | GET /omdb/?i=tt0137523 | imdbRating, imdbVotes, imdbID |
Todas las filas funcionan con la misma clave. Las puntuaciones se describen en la página de puntuaciones y las búsquedas por id en buscar por ID externo.
Lee la puntuación de IMDb
El endpoint de puntuaciones devuelve la nota y el número de votos juntos. Esta es una respuesta real para Fight Club (id 550). Las puntuaciones cambian con el tiempo.
{
"id": 550,
"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
}
}Para IMDb, value va en una escala de 0 a 10 con un decimal. Muestra el número de votos junto a él, y no pintes nada cuando el objeto sea null. En esta respuesta solo IMDb y TMDB tienen votos. votes puede ser null en cualquier fuente, así que compruébalo antes de mostrarlo. Una respuesta en caché sigue siendo válida 6 horas en la caché perimetral, así que consultar con más frecuencia no aporta nada.
Comparación de funciones
| Función | IMDb | amodb |
|---|---|---|
| Modelo de precios | Acceso comercial con licencia, consulta su documentación | Prepago, de 1 a 24 meses |
| Nivel gratuito | Sin API REST gratuita de uso general | Ninguno, y sin periodo de prueba |
| Autenticación | Consulta su documentación | Parámetro de consulta api_key o cabecera Bearer |
| Formato de respuesta | Archivos de conjuntos de datos descargables, consulta su documentación sobre los feeds con licencia | JSON |
| Idiomas | Consulta su documentación | 14 idiomas de interfaz |
| Películas | Consulta su documentación para ver los campos | Detalles, créditos, imágenes, vídeos |
| TV | Consulta su documentación para ver los campos | Series, temporadas, episodios |
| Personas | Consulta su documentación para ver los campos | Perfiles, filmografía, imágenes |
| Imágenes | Consulta su documentación | img.amodb.dev, sin necesidad de clave |
| Puntuaciones | Su propia puntuación, consulta su documentación sobre el acceso | Cinco fuentes, entre ellas IMDb, cuando se conocen |
| Límite de solicitudes | Consulta su documentación | 20, 40 o 120 solicitudes por minuto |
| Uso comercial | Con licencia, consulta su documentación | Planes de pago, consulta los precios |
| Compatibilidad | Formatos propios, consulta su documentación | Lecturas de TMDB v3 y el protocolo de OMDb |
En qué se diferencia amodb
Llamas a un endpoint en lugar de procesar un archivo. Una sola solicitud devuelve un título con su reparto, tráileres y puntuaciones mediante append_to_response, y la forma coincide con TMDB v3, así que las bibliotecas cliente existentes funcionan. La misma clave sirve el endpoint al estilo OMDb, que mantiene en marcha el código antiguo que lee imdbRating.
El bloque de puntuaciones es un objeto fijo con cinco claves. Una fuente desconocida es null, no una clave ausente, así que el código que lee ratings.imdb no necesita comprobar antes que exista el objeto padre. Junto al valor puede haber un número de votos, que te permite ocultar una puntuación basada en pocos votos. También puede ser null, como ocurre con tres de las cinco fuentes del ejemplo anterior.
Dónde encaja mejor IMDb
- El origen de la puntuación. IMDb publica primero sus propias puntuaciones. amodb devuelve un valor solo cuando se conoce, así que un título nuevo o poco conocido puede venir
null. - Funciones del sitio. Las reseñas de usuarios, las listas y las listas de seguimiento viven en el sitio de IMDb. amodb es una API de metadatos y no ofrece cuentas de usuario.
- Datos con licencia. Si un socio o un contrato exige datos con licencia de IMDb, solo IMDb puede proporcionarlos.
- Análisis sin conexión. Los archivos de datos no comerciales sirven para investigación masiva que ejecutas en tu propia máquina. Consulta su documentación para ver los términos.
Migrar a amodb
Lo más probable es que tengas una lista de ids de IMDb. Asigna cada uno a un id de amodb una sola vez, guarda el par y llama después a los detalles con el id numérico.
curl -s "https://api.amodb.dev/3/find/tt0133093?external_source=imdb_id" \
-H "Authorization: Bearer $AMODB_KEY"import os
import requests
KEY = os.environ["AMODB_KEY"]
imdb_ids = ["tt0137523", "tt0133093", "tt1375666"]
for imdb_id in imdb_ids:
r = requests.get(
f"https://api.amodb.dev/3/find/{imdb_id}",
params={"external_source": "imdb_id"},
headers={"Authorization": f"Bearer {KEY}"},
timeout=10,
)
r.raise_for_status()
hits = r.json()["movie_results"]
print(imdb_id, hits[0]["id"] if hits else None)Los tres ids anteriores corresponden a 550, 603 y 27205, que son Fight Club, The Matrix e Inception. Un id de serie como tt0903747 llega en tv_results, donde Breaking Bad tiene el id 1396. Un array vacío significa que no se encontró ninguna coincidencia para ese id.
Dosifica el ritmo del bucle. Cada id es una solicitud, y un 429 incluye una cabecera Retry-After con los segundos de espera. Consulta errores para ver los demás códigos.
Guarda los ids de forma segura
- Guarda los ids de IMDb como cadenas de texto. Empiezan por
tty llevan ceros a la izquierda, como entt0137523, y un tipo numérico elimina esos ceros. - Guarda el id de IMDb y el de amodb como un par. Cualquiera de los dos vuelve a encontrar el título.
- Lee
tv_resultspara las series ymovie_resultspara las películas. Un solo id normalmente rellena un array y deja los demás vacíos. - Solicita los detalles por el id de amodb a partir de entonces, porque una llamada de detalles puede incluir reparto, tráileres y puntuaciones mediante
append_to_response.
Precios
Elige uno de tres planes de 20, 40 o 120 solicitudes por minuto y paga por adelantado 1, 3, 6, 12 o 24 meses. Los periodos más largos tienen un descuento del 10, 20, 30 o 40 por ciento. Todos los planes devuelven los mismos datos, nada se renueva solo y no hay nivel gratuito. Consulta precios para ver los importes.