Obtén el tráiler oficial de una película

GET /3/movie/{movie_id}/videos 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

EndpointDevuelve
GET /3/movie/{movie_id}/videosTráilers, teasers, clips, featurettes, escenas detrás de cámaras y tomas falsas de una película
GET /3/tv/{tv_id}/videosLa misma lista para una serie
GET /3/tv/{tv_id}/season/{season_number}/videosSiempre una lista results vacía
GET /3/tv/{tv_id}/season/{season_number}/episode/{episode_number}/videosSiempre una lista results vacía
GET /3/movie/{movie_id} con append_to_response=videosDetalles y vídeos en una sola solicitud

Campos de cada vídeo:

CampoTipoUso
typecadenaTipo de vídeo: Trailer, Teaser, Clip, Featurette, Behind the Scenes o Bloopers, como en la página de vídeos
officialbooleanotrue cuando el vídeo está marcado como oficial
iso_639_1, iso_3166_1cadenaCódigos de idioma y de país del vídeo
key, sitecadenaIdentificador del vídeo y nombre del sitio que lo aloja, YouTube en todos los vídeos vistos
sizeenteroResolución vertical, 1080 en todos los vídeos vistos
published_atcadenaMarca de tiempo ISO 8601, útil para ordenar del más reciente al más antiguo
name, idcadenaTítulo del vídeo y su id, que es la misma cadena que key

Empieza en 3 pasos

  1. Elige un plan en precios. Todos los planes devuelven todos los datos, así que eliges por solicitudes por minuto.
  2. Crea una clave en el panel de tu cuenta. Son 32 caracteres hexadecimales en minúscula.
  3. Llama a GET /3/movie/{movie_id}/videos con la clave en api_key o en un encabezado Authorization: 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.

bashjs
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.

JSON
{
  "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.

PrioridadFiltroUso habitual
1Trailer, oficial, el idioma coincideEl vídeo que se reproduce
2Trailer, no oficialSubidas regionales o de fans cuando no existe nada oficial
3Teaser, oficialAvances cortos previos al estreno
4Clip, FeaturetteRespaldo para que el espacio no quede vacío
omitirBehind the Scenes, BloopersMué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.

PasoQué hacer
1Conserva los vídeos cuyo iso_639_1 coincida con tu usuario, por ejemplo ru
2Si ninguno coincide, conserva en
3Si 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 /3/tv/1396/season/1/videos 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 /3/movie/now_playing (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

CapacidadHacer scraping de las páginas tú mismoAPI de metadatos con nivel gratuitoamodb
Indicador oficialDeducirlo del título de la páginaRevisa su documentaciónBooleano official en cada vídeo
Filtro por tipo de vídeoAnalizar textoRevisa su documentaciónSeis valores de type
Elección de idiomaUna configuración regional por páginaRevisa su documentacióniso_639_1 e iso_3166_1 en cada vídeo, filtrados en tu código
Series y episodiosPáginas separadas que rastrearRevisa su documentaciónLas series usan el mismo endpoint, las listas de temporadas y episodios están vacías
MantenimientoSe rompe cuando cambia el marcadoDepende del proveedorUna estructura JSON estable
TérminosTú asumes el riesgoRevisa sus términosPlanes 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.