API obsazení a štábu

Endpointy credits vracejí obsazení a štáb filmu na GET /3/movie/{movie_id}/credits a seriálů, sezón a epizod pod /3/tv. JSON odpovídá TMDB v3 včetně credit_id, order, department a job. Obsazení epizod přidává vedle crew pole guest_stars a jejich pole cast je prázdné.

Aktualizováno Zobrazit jako Markdown

Získání obsazení a štábu filmu

GET /3/movie/{movie_id}/credits vrací pro jeden film dvě pole: cast pro lidi, kteří se objevují na plátně, a crew pro lidi, kteří pracovali za kamerou. Každá položka obsahuje ID osoby, takže úplný záznam otevřete na stránce osoby. Stejná data jsou dostupná uvnitř odpovědi filmu s append_to_response=credits.

Příklad přečte Inception, vypíše režiséra a pět prvních herců v titulcích.

bashjspyphpgo
curl -sSf "https://api.amodb.dev/3/movie/27205/credits?language=en-US" \
  -H "Authorization: Bearer $AMODB_KEY"
const url = 'https://api.amodb.dev/3/movie/27205/credits?language=en-US';
const res = await fetch(url, { headers: { Authorization: `Bearer ${process.env.AMODB_KEY}` } });
if (!res.ok) throw new Error(`amodb returned ${res.status}`);
const credits = await res.json();
const director = credits.crew.find((c) => c.job === 'Director');
console.log('Director:', director?.name);
for (const c of [...credits.cast].sort((a, b) => a.order - b.order).slice(0, 5)) {
  console.log(c.order, c.name, 'as', c.character);
}
import os
import requests

r = requests.get(
    "https://api.amodb.dev/3/movie/27205/credits",
    params={"language": "en-US"},
    headers={"Authorization": f"Bearer {os.environ['AMODB_KEY']}"},
    timeout=10,
)
r.raise_for_status()
credits = r.json()
director = next((c for c in credits["crew"] if c["job"] == "Director"), None)
print("Director:", director and director["name"])
for c in sorted(credits["cast"], key=lambda c: c["order"])[:5]:
    print(c["order"], c["name"], "as", c["character"])
<?php
$url = 'https://api.amodb.dev/3/movie/27205/credits?language=en-US';
$ch = curl_init($url);
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");
}
$credits = json_decode($body, true);
usort($credits['cast'], fn ($a, $b) => $a['order'] <=> $b['order']);
foreach (array_slice($credits['cast'], 0, 5) as $c) {
    echo $c['order'], ' ', $c['name'], ' as ', $c['character'], PHP_EOL;
}
package main

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

type Credits struct {
	Cast []struct {
		Order     int    `json:"order"`
		Name      string `json:"name"`
		Character string `json:"character"`
	} `json:"cast"`
	Crew []struct {
		Name string `json:"name"`
		Job  string `json:"job"`
	} `json:"crew"`
}

func main() {
	req, _ := http.NewRequest("GET", "https://api.amodb.dev/3/movie/27205/credits?language=en-US", nil)
	req.Header.Set("Authorization", "Bearer "+os.Getenv("AMODB_KEY"))
	client := &http.Client{Timeout: 10 * time.Second}
	res, err := client.Do(req)
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()
	if res.StatusCode != http.StatusOK {
		panic(res.Status)
	}
	var c Credits
	if err := json.NewDecoder(res.Body).Decode(&c); err != nil {
		panic(err)
	}
	for _, m := range c.Crew {
		if m.Job == "Director" {
			fmt.Println("Director:", m.Name)
		}
	}
	for i, a := range c.Cast {
		if i == 5 {
			break
		}
		fmt.Println(a.Order, a.Name, "as", a.Character)
	}
}

Parametry

  • movie_idpathpovinný
    Číselné ID filmu, například 27205.
  • api_keyqueryjeden ze dvou
    Váš klíč. Použijte jej, nebo hlavičku Authorization: Bearer.
  • languagequery
    Tag TMDB, například en-US nebo fr-FR. Tagy mimo 14 základních jazyků se vrátí k en.

Pole odpovědi

PolePlatí proPoznámky
idnejvyšší úroveňID filmu, seriálu, sezóny nebo epizody, ke kterým obsazení patří.
cast, crewnejvyšší úroveňPole položek. Obsazení epizod přidává guest_stars.
idkaždá položkaID osoby. Otevřete jej přes osoby.
name, original_namekaždá položkaJméno osoby.
known_for_departmentkaždá položkaHlavní profese osoby celkově, ne profese v tomto titulu.
gender, popularity, adultkaždá položkaStejný význam jako v záznamu osoby.
profile_pathkaždá položkaCesta k obrázku nebo null. Připojte k https://img.amodb.dev/t/p/{size}.
credit_idkaždá položkaŘetězec, který identifikuje tento jeden záznam účasti.
charactercast, hostující herciNázev role, u některých položek prázdný.
ordercast, hostující herciPozice v titulcích, 0 je první.
departmentcrewSkupina jako Directing, Writing, Production, Camera, Editing, Sound, Art, Visual Effects, Lighting, Costume & Make-Up nebo Crew.
jobcrewKonkrétní profese, například Director, Screenplay nebo Editor.

Příklad odpovědi

GET /3/movie/27205/credits?language=en-US. Odpověď má dnes 52 položek cast a 735 položek crew, takže obě pole jsou zde zkrácena na dvě:

JSON
{
  "id": 27205,
  "cast": [
    {
      "adult": false,
      "gender": 2,
      "id": 6193,
      "known_for_department": "Acting",
      "name": "Leonardo DiCaprio",
      "original_name": "Leonardo DiCaprio",
      "popularity": 9.3213,
      "profile_path": "/wo2hJpn04vbtmh0B9utCFdsQhxM.jpg",
      "character": "Dom Cobb",
      "credit_id": "52fe4534c3a368484e04de03",
      "order": 0
    },
    {
      "adult": false,
      "gender": 2,
      "id": 24045,
      "known_for_department": "Acting",
      "name": "Joseph Gordon-Levitt",
      "original_name": "Joseph Gordon-Levitt",
      "popularity": 5.6202,
      "profile_path": "/z2FA8js799xqtfiFjBTicFYdfk.jpg",
      "character": "Arthur",
      "credit_id": "52fe4534c3a368484e04de0b",
      "order": 1
    }
  ],
  "crew": [
    {
      "adult": false,
      "gender": 2,
      "id": 1025090,
      "known_for_department": "Crew",
      "name": "Jim Wilkey",
      "original_name": "Jim Wilkey",
      "popularity": 0.9114,
      "profile_path": "/peEdS7ZYHwEeMJAwInJj732AeYs.jpg",
      "credit_id": "6634553bad59b501286dab5f",
      "department": "Crew",
      "job": "Stunt Driver"
    },
    {
      "adult": false,
      "gender": 2,
      "id": 1741194,
      "known_for_department": "Sound",
      "name": "James Thatcher",
      "original_name": "James Thatcher",
      "popularity": 0.6215,
      "profile_path": null,
      "credit_id": "5bcdece8925141613e0216d3",
      "department": "Sound",
      "job": "Musician"
    }
  ]
}

Obsazení seriálů, sezón a epizod

Všechny cesty níže sdílejí základ https://api.amodb.dev/3 a přijímají language.

Metoda a cestaVrací
GET /tv/{series_id}/creditsObsazení a štáb seriálu, jedna položka na osobu a roli.
GET /tv/{series_id}/season/{season_number}/creditsObsazení a štáb jedné sezóny.
GET /tv/{series_id}/season/{season_number}/episode/{episode_number}/creditscrew a guest_stars jedné epizody. cast je prázdné pole.

Stejná data jsou dostupná s append_to_response=credits na cestách seriálu, sezóny a epizody. Tvar položky odpovídá obsazení filmu výše. Hostující herci epizod nesou character a order, položky štábu nesou department a job.

GET /3/tv/1399/season/1/episode/1/credits?language=en-US, pole zkrácená na dvě položky:

JSON
{
  "id": 63056,
  "cast": [],
  "crew": [
    {
      "department": "Writing",
      "job": "Writer",
      "credit_id": "5256c8a019c2956ff6046e2b",
      "adult": false,
      "gender": 2,
      "id": 9813,
      "known_for_department": "Writing",
      "name": "David Benioff",
      "original_name": "David Benioff",
      "popularity": 2.0354,
      "profile_path": "/xvNN5huL0X8yJ7h3IZfGG4O2zBD.jpg"
    },
    {
      "department": "Editing",
      "job": "Editor",
      "credit_id": "54eef2ab925141795f005d4f",
      "adult": false,
      "gender": 2,
      "id": 18077,
      "known_for_department": "Editing",
      "name": "Oral Norrie Ottey",
      "original_name": "Oral Norrie Ottey",
      "popularity": 0,
      "profile_path": null
    }
  ],
  "guest_stars": [
    {
      "character": "Benjen Stark",
      "credit_id": "5256c8b919c2956ff604836a",
      "order": 61,
      "adult": false,
      "gender": 2,
      "id": 119783,
      "known_for_department": "Acting",
      "name": "Joseph Mawle",
      "original_name": "Joseph Mawle",
      "popularity": 1.4645,
      "profile_path": "/1Ocb9v3h54beGVoJMm4w50UQhLf.jpg"
    },
    {
      "character": "Rickon Stark",
      "credit_id": "566a83bcc3a3683f56003604",
      "order": 80,
      "adult": false,
      "gender": 2,
      "id": 1050248,
      "known_for_department": "Acting",
      "name": "Art Parkinson",
      "original_name": "Art Parkinson",
      "popularity": 1.2594,
      "profile_path": "/ejAKOJME1DsvHECLWdQ7dEtXyyc.jpg"
    }
  ]
}

amodb nenabízí agregované obsazení seriálů ani vyhledání podle credit_id. Seznam herců seriálu čtěte z /tv/{series_id}/credits a cast seřaďte podle order.

Čtení obsazení a štábu v aplikaci

ÚkolJak
Zobrazit režiséraVyberte položky crew, kde job je Director. Film jich může mít několik.
Zobrazit hlavní obsazeníSeřaďte cast podle order a vezměte prvních 10.
Seskupit štábSeskupte podle department. Osoba se dvěma profesemi se objeví dvakrát, sloučte proto podle id osoby.
Zobrazit obsazení seriáluPřečtěte obsazení seriálu a cast seřaďte podle order.
Vypsat všechna oddělení a profesePřečtěte číselník popsaný na stránce žánry a číselníky.

Chyby

HTTPstatus_codeKdy
4017Klíč chybí nebo je nesprávný.
40236Platnost tarifu skončila.
40434Film, seriál, sezóna nebo epizoda neexistuje, nebo cesta není nabízena.
40537Zavolali jste metodu pro zápis.
42925Překročen počet požadavků za minutu. Počkejte tolik sekund, kolik říká Retry-After.

Podrobnosti jsou na stránkách chyby a limity požadavků.

Praktické poznámky

  • Obsazení a štáb se cachují 6 hodin, stejně jako detaily. Nový člen obsazení se může objevit až po této době.
  • Velká produkce může mít stovky položek štábu. Pole před vykreslením zkraťte.
  • profile_path je null u lidí bez fotografie. Pro řádky seznamu použijte w185 a pro detail h632.
  • Záznamy filmů a seriálů jsou na stránkách filmy a seriály. Záznamy sezón a epizod jsou na stránce sezóny a epizody.