Produtoras e emissoras

Os endpoints de produtora e emissora retornam nome, país de origem e caminho do logo de um estúdio ou de uma emissora de TV por id, em GET /3/company/{company_id} e GET /3/network/{network_id}. Caminhos e JSON seguem o TMDB v3. Passe os ids para with_companies e with_networks no discover para listar os títulos.

Atualizado em Ver em Markdown

Obter os detalhes de uma produtora

GET /3/company/{company_id} retorna uma produtora: nome, país de origem e caminho do logo. Ele também traz description, headquarters, homepage e parent_company, mas o amodb os deixa vazios. O id é o id de produtora do TMDB, então os ids que você guardou antes continuam funcionando.

O exemplo abaixo lê a primeira produtora do filme 550 e depois carrega essa produtora.

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_idcaminhoobrigatório
    Id numérico da produtora, por exemplo 25.
  • api_keyconsultaum dos dois
    Sua chave. Use este parâmetro ou o header Authorization: Bearer.

Campos da resposta

CampoTipoObservações
descriptionstringSempre uma string vazia.
headquartersstringCidade ou região. Vazio para a maioria das produtoras.
homepagestringEndereço do site. Vazio para a maioria das produtoras.
idinteiroId da produtora.
logo_pathstring ou nullAcrescente a https://img.amodb.dev/t/p/{size}.
namestringNome da produtora.
origin_countrystringCódigo ISO 3166-1, como US. Pode vir vazio.
parent_companynullSempre null. O amodb não preenche a empresa controladora.

Exemplo de resposta

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

O mesmo formato volta para qualquer id de produtora, por exemplo /3/company/1 para a Lucasfilm.

Obter os detalhes de uma emissora

GET /3/network/{network_id} retorna uma emissora de TV: nome, país de origem, caminho do logo, headquarters e homepage. Ela não tem description nem parent_company. Leia o id de uma emissora no array networks de uma série. A série /3/tv/1399 lista a HBO com o id 49.

JSON
{
  "headquarters": "",
  "homepage": "",
  "id": 49,
  "logo_path": "/tuomPhY2UtuPTqqFnKMVHvSb724.png",
  "name": "HBO",
  "origin_country": "US"
}
CampoTipoObservações
headquartersstringVazio para a maioria das emissoras.
homepagestringVazio para a maioria das emissoras.
idinteiroId da emissora.
logo_pathstring ou nullCaminho do arquivo do logo.
namestringNome da emissora.
origin_countrystringCódigo ISO 3166-1. Uma string vazia para serviços globais de streaming, como a Netflix.

Endpoints deste grupo

Todos os caminhos usam a base https://api.amodb.dev/3 e a mesma autenticação dos outros endpoints.

Método e caminhoRetornaParâmetros
GET /company/{company_id}Registro da produtoracompany_id
GET /network/{network_id}Registro da emissoranetwork_id
GET /search/companyLista paginada de produtoras com id, name, logo_path, origin_countryquery, page

O amodb não oferece os caminhos alternative_names nem images para produtoras e emissoras. O logo é o logo_path do próprio registro.

Logos

Monte o endereço do logo como https://img.amodb.dev/t/p/w185 mais logo_path. GET /3/configuration lista os tamanhos de logo: w92, w154, w185, w300, w500 e original. A página de imagens traz a tabela completa de tamanhos. Os arquivos de logo são em sua maioria PNG, e os arquivos de imagem não exigem chave. Uma produtora sem logo tem logo_path definido como null.

Filtrar o discover por produtora ou emissora

Os ids de produtoras e emissoras são mais úteis como filtros. O discover transforma um id em uma lista de títulos.

FiltroFunciona emSignificado
with_companies/discover/movie e /discover/tvTítulos feitos por essas produtoras.
with_networks/discover/tvSéries exibidas por essas emissoras. O discover de filmes o ignora.

Separe vários ids com vírgula para exigir todos, ou com uma barra vertical (codificada como %7C) para aceitar qualquer um. A primeira chamada abaixo lista filmes de uma produtora, ordenados por popularidade. A segunda lista as séries que a HBO exibiu.

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"

Os resultados do discover ficam em cache na borda por 30 minutos e chegam 20 por página. A lista completa de filtros está na página de discover.

Encontrar uma produtora pelo nome

GET /3/search/company?query=lucasfilm retorna uma lista paginada. Cada linha tem id, logo_path, name e origin_country. As linhas não são ordenadas por correspondência exata: o estúdio chamado Lucasfilm Ltd. tem o id 1 e é a terceira linha, depois de dois nomes parecidos. Compare name e origin_country antes de pegar um id. As regras da consulta estão na página de busca. Não existe caminho de busca de emissoras.

Erros

Uma produtora ou emissora que não existe retorna o corpo de erro do TMDB com status_code 34. As outras falhas usam o mesmo corpo.

HTTPstatus_codeQuando
4017A chave está ausente ou incorreta.
40236O período do plano terminou.
40434Nenhuma produtora ou emissora com esse id, ou um id que não é um número.
40537Você enviou um método de escrita.
42925Acima do seu limite de requisições por minuto. Espere os segundos indicados em Retry-After.

Veja erros para a lista completa e limites de requisições para os headers.

Notas práticas

  • Guarde o id da produtora junto com o nome. Nomes mudam, ids não.
  • Verifique se logo_path é null antes de exibi-lo. Não conte com homepage, headquarters nem description, porque estão vazios.
  • Os detalhes de produtoras e emissoras ficam em cache por 6 horas na borda. Os arquivos de logo em img.amodb.dev ficam em cache por 30 dias.
  • Uma emissora é um conceito de TV. Para obter as séries dela, use with_networks em /discover/tv, não no discover de filmes.
  • Para encontrar uma produtora pelo nome, use a busca de produtoras acima e escolha a linha certa por name e origin_country.