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.
Obter os detalhes de uma produtora
GET / 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.
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órioId numérico da produtora, por exemplo25.api_keyconsultaum dos doisSua chave. Use este parâmetro ou o headerAuthorization: Bearer.
Campos da resposta
| Campo | Tipo | Observações |
|---|---|---|
description | string | Sempre uma string vazia. |
headquarters | string | Cidade ou região. Vazio para a maioria das produtoras. |
homepage | string | Endereço do site. Vazio para a maioria das produtoras. |
id | inteiro | Id da produtora. |
logo_path | string ou null | Acrescente a https:/. |
name | string | Nome da produtora. |
origin_country | string | Código ISO 3166-1, como US. Pode vir vazio. |
parent_company | null | Sempre null. O amodb não preenche a empresa controladora. |
Exemplo de resposta
{
"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 / 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.
{
"headquarters": "",
"homepage": "",
"id": 49,
"logo_path": "/tuomPhY2UtuPTqqFnKMVHvSb724.png",
"name": "HBO",
"origin_country": "US"
}| Campo | Tipo | Observações |
|---|---|---|
headquarters | string | Vazio para a maioria das emissoras. |
homepage | string | Vazio para a maioria das emissoras. |
id | inteiro | Id da emissora. |
logo_path | string ou null | Caminho do arquivo do logo. |
name | string | Nome da emissora. |
origin_country | string | Có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:/ e a mesma autenticação dos outros endpoints.
| Método e caminho | Retorna | Parâmetros |
|---|---|---|
GET / | Registro da produtora | company_id |
GET / | Registro da emissora | network_id |
GET /search/company | Lista paginada de produtoras com id, name, logo_path, origin_country | query, 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:/ 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.
| Filtro | Funciona em | Significado |
|---|---|---|
with_companies | /discover/movie e /discover/tv | Títulos feitos por essas produtoras. |
with_networks | /discover/tv | Sé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 -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 / 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.
| HTTP | status_code | Quando |
|---|---|---|
| 401 | 7 | A chave está ausente ou incorreta. |
| 402 | 36 | O período do plano terminou. |
| 404 | 34 | Nenhuma produtora ou emissora com esse id, ou um id que não é um número. |
| 405 | 37 | Você enviou um método de escrita. |
| 429 | 25 | Acima 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
idda produtora junto com o nome. Nomes mudam, ids não. - Verifique se
logo_pathénullantes de exibi-lo. Não conte comhomepage,headquartersnemdescription, 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.devficam em cache por 30 dias. - Uma emissora é um conceito de TV. Para obter as séries dela, use
with_networksem/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
nameeorigin_country.