Productoras y cadenas de TV

Los endpoints de productoras y cadenas devuelven el nombre, el país de origen y la ruta del logo de un estudio o una cadena de TV por id, en GET /3/company/{company_id} y GET /3/network/{network_id}. Las rutas y el JSON coinciden con TMDB v3. Pasa los ids a with_companies y with_networks en discover para listar sus títulos.

Actualizado el Ver en Markdown

Obtener los detalles de una productora

GET /3/company/{company_id} devuelve una productora: nombre, país de origen y ruta del logo. También incluye description, headquarters, homepage y parent_company, pero amodb los deja vacíos. El id es el id de productora de TMDB, así que los ids que guardaste antes siguen funcionando.

El ejemplo lee la primera productora de la película 550 y luego carga esa productora.

bashjspyphpgo
COMPANY_ID=$(curl -sf "https://api.amodb.dev/3/movie/550" \
  -H "Authorization: Bearer $AMODB_KEY" | jq '.production_companies[0].id')
curl -sf "https://api.amodb.dev/3/company/$COMPANY_ID" \
  -H "Authorization: Bearer $AMODB_KEY"
const base = 'https://api.amodb.dev/3';
const headers = { Authorization: `Bearer ${process.env.AMODB_KEY}` };

async function get(path) {
  const res = await fetch(base + path, { headers });
  if (!res.ok) throw new Error(`amodb returned ${res.status} for ${path}`);
  return res.json();
}

const movie = await get('/movie/550');
const company = await get(`/company/${movie.production_companies[0].id}`);
console.log(company.name, company.origin_country, company.logo_path);
import os
import requests

BASE = "https://api.amodb.dev/3"
HEADERS = {"Authorization": f"Bearer {os.environ['AMODB_KEY']}"}


def get(path):
    r = requests.get(BASE + path, headers=HEADERS, timeout=10)
    r.raise_for_status()
    return r.json()


movie = get("/movie/550")
company = get(f"/company/{movie['production_companies'][0]['id']}")
print(company["name"], company["origin_country"], company["logo_path"])
<?php
function amodb_get(string $path): array {
    $ch = curl_init('https://api.amodb.dev/3' . $path);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('AMODB_KEY')],
    ]);
    $body = curl_exec($ch);
    $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    if ($status !== 200) {
        throw new RuntimeException("amodb returned $status for $path");
    }
    return json_decode($body, true);
}

$movie = amodb_get('/movie/550');
$company = amodb_get('/company/' . $movie['production_companies'][0]['id']);
echo $company['name'], ' ', $company['origin_country'], PHP_EOL;
package main

import (
	"encoding/json"
	"fmt"
	"net/http"
	"os"
	"time"
)

var client = &http.Client{Timeout: 10 * time.Second}

func get(path string, out any) error {
	req, err := http.NewRequest("GET", "https://api.amodb.dev/3"+path, nil)
	if err != nil {
		return err
	}
	req.Header.Set("Authorization", "Bearer "+os.Getenv("AMODB_KEY"))
	res, err := client.Do(req)
	if err != nil {
		return err
	}
	defer res.Body.Close()
	if res.StatusCode != http.StatusOK {
		return fmt.Errorf("amodb returned %s for %s", res.Status, path)
	}
	return json.NewDecoder(res.Body).Decode(out)
}

func main() {
	var movie struct {
		Companies []struct {
			ID int `json:"id"`
		} `json:"production_companies"`
	}
	if err := get("/movie/550", &movie); err != nil || len(movie.Companies) == 0 {
		panic("movie has no production companies")
	}
	var company struct {
		Name          string `json:"name"`
		OriginCountry string `json:"origin_country"`
	}
	if err := get(fmt.Sprintf("/company/%d", movie.Companies[0].ID), &company); err != nil {
		panic(err)
	}
	fmt.Println(company.Name, company.OriginCountry)
}

Parámetros

  • company_idrutaobligatorio
    Id numérico de la productora, por ejemplo 25.
  • api_keyconsultauno de los dos
    Tu clave. Usa esta o el encabezado Authorization: Bearer.

Campos de la respuesta

CampoTipoNotas
descriptiontextoSiempre una cadena vacía.
headquarterstextoCiudad o región. Vacío en la mayoría de las productoras.
homepagetextoDirección del sitio web. Vacío en la mayoría de las productoras.
identeroId de la productora.
logo_pathtexto o nullAñádelo a https://img.amodb.dev/t/p/{size}.
nametextoNombre de la productora.
origin_countrytextoCódigo ISO 3166-1 como US. Puede estar vacío.
parent_companynullSiempre null. amodb no rellena la productora matriz.

Ejemplo de respuesta

JSON
{
  "description": "",
  "headquarters": "",
  "homepage": "",
  "id": 25,
  "logo_path": "/nM2MfoMqzJQRiSynsDabOtFKetD.png",
  "name": "20th Century Fox",
  "origin_country": "US",
  "parent_company": null
}

La misma estructura llega con cualquier id de productora, por ejemplo /3/company/1 para Lucasfilm.

Obtener los detalles de una cadena

GET /3/network/{network_id} devuelve una cadena de TV: nombre, país de origen, ruta del logo, headquarters y homepage. No tiene description ni parent_company. Lee el id de una cadena en el array networks de una serie. La serie /3/tv/1399 lista a HBO con el id 49.

JSON
{
  "headquarters": "",
  "homepage": "",
  "id": 49,
  "logo_path": "/tuomPhY2UtuPTqqFnKMVHvSb724.png",
  "name": "HBO",
  "origin_country": "US"
}
CampoTipoNotas
headquarterstextoVacío en la mayoría de las cadenas.
homepagetextoVacío en la mayoría de las cadenas.
identeroId de la cadena.
logo_pathtexto o nullRuta del archivo del logo.
nametextoNombre de la cadena.
origin_countrytextoCódigo ISO 3166-1. Una cadena vacía para servicios de streaming globales como Netflix.

Endpoints de este grupo

Todas las rutas comparten la base https://api.amodb.dev/3 y la misma autenticación que los demás endpoints.

Método y rutaDevuelveParámetros
GET /company/{company_id}Registro de productoracompany_id
GET /network/{network_id}Registro de cadenanetwork_id
GET /search/companyLista paginada de productoras con id, name, logo_path, origin_countryquery, page

amodb no ofrece las rutas alternative_names ni images para productoras y cadenas. El logo es el logo_path del propio registro.

Logos

Construye la dirección del logo como https://img.amodb.dev/t/p/w185 más logo_path. GET /3/configuration lista los tamaños de logo: w92, w154, w185, w300, w500 y original. La página de imágenes tiene la tabla completa de tamaños. Los archivos de logo son sobre todo PNG, y los archivos de imagen no necesitan clave. Una productora sin logo tiene logo_path en null.

Filtrar discover por productora o cadena

Los ids de productora y de cadena resultan más útiles como filtros. Discover convierte un id en una lista de títulos.

FiltroFunciona enSignificado
with_companies/discover/movie y /discover/tvTítulos hechos por estas productoras.
with_networks/discover/tvSeries emitidas por estas cadenas. Discover de películas lo ignora.

Separa varios ids con una coma para exigirlos todos, o con una barra vertical (codificada como %7C) para aceptar cualquiera de ellos. La llamada de abajo lista las películas de una productora, ordenadas por popularidad. La segunda llamada lista las series que emitió HBO.

curl
curl -sf "https://api.amodb.dev/3/discover/movie?with_companies=$COMPANY_ID&sort_by=popularity.desc&page=1" \
  -H "Authorization: Bearer $AMODB_KEY"

curl -sf "https://api.amodb.dev/3/discover/tv?with_networks=49&sort_by=popularity.desc" \
  -H "Authorization: Bearer $AMODB_KEY"

Los resultados de discover se guardan en la caché perimetral 30 minutos y llegan 20 por página. La lista completa de filtros está en la página de discover.

Encontrar una productora por nombre

GET /3/search/company?query=lucasfilm devuelve una lista paginada. Cada fila tiene id, logo_path, name y origin_country. Las filas no se ordenan por coincidencia exacta: el estudio llamado Lucasfilm Ltd. tiene el id 1 y es la tercera fila, después de dos nombres parecidos. Compara name y origin_country antes de tomar un id. Las reglas de consulta están en la página de búsqueda. No existe una ruta de búsqueda de cadenas.

Errores

Una productora o una cadena que no existe devuelve el cuerpo de error de TMDB con status_code 34. Los demás fallos usan el mismo cuerpo.

HTTPstatus_codeCuándo
4017La clave falta o es incorrecta.
40236El periodo del plan ha terminado.
40434No hay ninguna productora ni cadena con ese id, o el id no es un número.
40537Enviaste un método de escritura.
42925Superaste tus solicitudes por minuto. Espera los segundos de Retry-After.

Consulta errores para ver la lista completa y límites de solicitudes para los encabezados.

Notas prácticas

  • Guarda el id de la productora junto al nombre. Los nombres cambian, los ids no.
  • Comprueba que logo_path no sea null antes de mostrarlo. No dependas de homepage, headquarters ni description, porque están vacíos.
  • Los detalles de productoras y cadenas se guardan en la caché perimetral 6 horas. Los archivos de logo de img.amodb.dev se guardan 30 días.
  • Una cadena es un concepto de TV. Para obtener sus series, usa with_networks en /discover/tv, no en discover de películas.
  • Para encontrar una productora por nombre, usa la búsqueda de productoras de arriba y elige la fila correcta por name y origin_country.