Obtén el tráiler oficial de una película
GET / devuelve todos los vídeos asociados a una película. Cada elemento tiene un type, un indicador official, un código de idioma, una marca de tiempo published_at y los campos site y key que identifican el vídeo. Conserva los elementos donde type es Trailer y official es true, y tendrás tu tráiler.
Obtienes una lista de registros de vídeo que puedes ordenar tú mismo, no una transmisión. La respuesta nombra el vídeo y dónde está alojado, y tu página construye el reproductor a partir de site y key. Para las series de TV llega la misma estructura. Las rutas de temporada y de episodio responden con una lista vacía.
Qué datos obtienes
| Endpoint | Devuelve |
|---|---|
GET / | Tráilers, teasers, clips, featurettes, escenas detrás de cámaras y tomas falsas de una película |
GET / | La misma lista para una serie |
GET / | Siempre una lista results vacía |
GET / | Siempre una lista results vacía |
GET / con append_ | Detalles y vídeos en una sola solicitud |
Campos de cada vídeo:
| Campo | Tipo | Uso |
|---|---|---|
type | cadena | Tipo de vídeo: Trailer, Teaser, Clip, Featurette, Behind the Scenes o Bloopers, como en la página de vídeos |
official | booleano | true cuando el vídeo está marcado como oficial |
iso_639_1, iso_3166_1 | cadena | Códigos de idioma y de país del vídeo |
key, site | cadena | Identificador del vídeo y nombre del sitio que lo aloja, YouTube en todos los vídeos vistos |
size | entero | Resolución vertical, 1080 en todos los vídeos vistos |
published_at | cadena | Marca de tiempo ISO 8601, útil para ordenar del más reciente al más antiguo |
name, id | cadena | Título del vídeo y su id, que es la misma cadena que key |
Empieza en 3 pasos
- Elige un plan en precios. Todos los planes devuelven todos los datos, así que eliges por solicitudes por minuto.
- Crea una clave en el panel de tu cuenta. Son 32 caracteres hexadecimales en minúscula.
- Llama a
GET /con la clave en3/ movie/ {movie_ id}/ videos api_keyo en un encabezadoAuthorization: Bearer.
Ejemplo de solicitud
El ejemplo pide los vídeos de Inception (id 27205), los ordena en el código e imprime el mejor. La ordenación pone primero las coincidencias de idioma, luego Trailer antes de Teaser, luego los oficiales antes que los no oficiales y por último el published_at más reciente.
curl -s "https://api.amodb.dev/3/movie/27205/videos" \
-H "Authorization: Bearer $AMODB_KEY"const BASE = 'https://api.amodb.dev/3';
const headers = { Authorization: `Bearer ${process.env.AMODB_KEY}` };
const TYPE_RANK = { Trailer: 0, Teaser: 2 };
function rank(video, lang) {
const language = video.iso_639_1 === lang ? 0 : 10;
const type = TYPE_RANK[video.type] ?? 4;
return language + type + (video.official ? 0 : 1);
}
async function pickTrailer(movieId, lang = 'en') {
const res = await fetch(`${BASE}/movie/${movieId}/videos`, { headers });
if (!res.ok) throw new Error(`amodb returned ${res.status}`);
const { results } = await res.json();
results.sort(
(a, b) => rank(a, lang) - rank(b, lang) || (b.published_at || '').localeCompare(a.published_at || ''),
);
return results[0] ?? null;
}
const trailer = await pickTrailer(27205, 'en');
console.log(trailer ? `${trailer.name}: ${trailer.site} ${trailer.key}` : 'no video found');Respuesta recortada: los primeros 2 de 42 vídeos. La lista contiene todos los idiomas.
{
"id": 27205,
"results": [
{
"iso_639_1": "en",
"iso_3166_1": "US",
"name": "The Dream Sequence",
"key": "mpj9dL7swwk",
"site": "YouTube",
"size": 1080,
"type": "Clip",
"official": true,
"published_at": "2022-03-09T01:00:20Z",
"id": "mpj9dL7swwk"
},
{
"iso_639_1": "en",
"iso_3166_1": "US",
"name": "35mm Theatrical Trailer #3",
"key": "cdx31ak4KbQ",
"site": "YouTube",
"size": 1080,
"type": "Trailer",
"official": false,
"published_at": "2022-03-07T06:00:19Z",
"id": "cdx31ak4KbQ"
}
]
}Elige qué vídeo reproducir
Un título suele tener varios tráilers oficiales (un primer anuncio, un montaje final) junto a teasers y clips. Ordénalos con una secuencia fija para que la página nunca acabe con un vídeo de tomas falsas en el espacio del tráiler.
| Prioridad | Filtro | Uso habitual |
|---|---|---|
| 1 | Trailer, oficial, el idioma coincide | El vídeo que se reproduce |
| 2 | Trailer, no oficial | Subidas regionales o de fans cuando no existe nada oficial |
| 3 | Teaser, oficial | Avances cortos previos al estreno |
| 4 | Clip, Featurette | Respaldo para que el espacio no quede vacío |
| omitir | Behind the Scenes, Bloopers | Muéstralos en una lista de extras aparte |
Desempata con published_at. Con el más reciente primero obtienes el montaje más nuevo, y con el más antiguo primero obtienes el primer anuncio.
Idiomas de los tráilers
Los vídeos se etiquetan con un idioma mediante iso_639_1, y un mismo título puede tener tráilers en varios. Inception tiene 42 vídeos en 9 idiomas. amodb los devuelve todos en una sola respuesta. Los parámetros language e include_video_language no tienen efecto en los endpoints de vídeos, así que elige el idioma en tu código.
| Paso | Qué hacer |
|---|---|
| 1 | Conserva los vídeos cuyo iso_639_1 coincida con tu usuario, por ejemplo ru |
| 2 | Si ninguno coincide, conserva en |
| 3 | Si ninguno coincide, conserva el resto |
Ordena dentro de cada paso por tipo y por el indicador official, como en el ejemplo. Los idiomas de los vídeos dependen de la subida, no de los 14 idiomas de la interfaz que aparecen en idiomas, así que un tráiler puede ser cs o he.
Tráilers de series
El tráiler de una serie está en /3/tv/1396/videos (Breaking Bad), que contiene 9 tráilers. La función de ordenación de arriba sirve tal cual, porque los campos no cambian. Las rutas de temporada y de episodio como / responden 200 con una lista results vacía, así que lee la lista de la serie. Consulta vídeos y tráilers para ver la lista completa de rutas.
Crea un carrusel de tráilers
Un carrusel de películas en cartelera necesita una llamada de lista y una llamada por título: GET / (consulta tendencias y listas) más diez llamadas de vídeos suman 11 solicitudes para diez títulos. Guarda el key elegido junto al id de la película. Los tráilers cambian poco, así que actualiza una elección guardada cada pocas horas o cuando se reestrene un título.
Cómo se compara
| Capacidad | Hacer scraping de las páginas tú mismo | API de metadatos con nivel gratuito | amodb |
|---|---|---|---|
| Indicador oficial | Deducirlo del título de la página | Revisa su documentación | Booleano official en cada vídeo |
| Filtro por tipo de vídeo | Analizar texto | Revisa su documentación | Seis valores de type |
| Elección de idioma | Una configuración regional por página | Revisa su documentación | iso_639_1 e iso_3166_1 en cada vídeo, filtrados en tu código |
| Series y episodios | Páginas separadas que rastrear | Revisa su documentación | Las series usan el mismo endpoint, las listas de temporadas y episodios están vacías |
| Mantenimiento | Se rompe cuando cambia el marcado | Depende del proveedor | Una estructura JSON estable |
| Términos | Tú asumes el riesgo | Revisa sus términos | Planes de pago, consulta precios |
Precios
Los planes son prepago. Compras 1, 3, 6, 12 o 24 meses y obtienes un 0, 10, 20, 30 o 40 por ciento de descuento en los periodos más largos. Nada se renueva solo. Los planes de 20, 40 y 120 solicitudes por minuto sirven todos los endpoints de esta página, así que un carrusel de tráilers con mucho tráfico es solo cuestión de velocidad. No hay nivel gratuito ni periodo de prueba. Compara los planes en precios.