API credite

Endpoint-urile de credite întorc distribuția și echipa unui film la GET /3/movie/{movie_id}/credits, precum și ale serialelor, sezoanelor și episoadelor sub /3/tv. JSON-ul se potrivește cu TMDB v3, inclusiv credit_id, order, department și job. Creditele de episod adaugă un array guest_stars lângă crew, iar array-ul lor cast este gol.

Actualizat Vezi ca Markdown

Obține creditele unui film

GET /3/movie/{movie_id}/credits întoarce două array-uri pentru un film: cast pentru persoanele care apar pe ecran și crew pentru cele care au lucrat în spatele camerei. Fiecare intrare conține ID-ul persoanei, deci poți deschide fișa completă pe pagina persoane. Aceleași date sunt disponibile în răspunsul filmului cu append_to_response=credits.

Exemplul citește Inception, afișează regizorul și listează primii cinci actori de pe generic.

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)
	}
}

Parametri

  • movie_idcaleobligatoriu
    ID numeric de film, de exemplu 27205.
  • api_keyinterogareuna dintre cele două
    Cheia ta. Folosește-o pe aceasta sau antetul Authorization: Bearer.
  • languageinterogare
    Etichetă TMDB precum en-US sau fr-FR. Etichetele din afara celor 14 limbi de bază revin la en.

Câmpurile răspunsului

CâmpSe aplică laObservații
idnivelul superiorID-ul filmului, serialului, sezonului sau episodului cărora le aparțin creditele.
cast, crewnivelul superiorArray-uri de intrări. Creditele de episod adaugă guest_stars.
idfiecare intrareID-ul persoanei. Deschide-l cu persoane.
name, original_namefiecare intrareNumele persoanei.
known_for_departmentfiecare intrareMeseria principală a persoanei în general, nu meseria din acest titlu.
gender, popularity, adultfiecare intrareAceeași semnificație ca în fișa persoanei.
profile_pathfiecare intrareCalea imaginii sau null. Se adaugă la https://img.amodb.dev/t/p/{size}.
credit_idfiecare intrareȘir care identifică acest singur credit.
characterdistribuție, actori invitațiNumele rolului, gol la unele intrări.
orderdistribuție, actori invitațiPoziția pe generic, 0 este prima.
departmentechipăGrup precum Directing, Writing, Production, Camera, Editing, Sound, Art, Visual Effects, Lighting, Costume & Make-Up sau Crew.
jobechipăMeserie specifică, de exemplu Director, Screenplay sau Editor.

Exemplu de răspuns

GET /3/movie/27205/credits?language=en-US. Răspunsul are azi 52 de intrări în distribuție și 735 în echipă, deci ambele array-uri sunt tăiate aici la două:

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"
    }
  ]
}

Credite pentru TV, sezon și episod

Toate căile de mai jos au baza https://api.amodb.dev/3 și primesc language.

Metodă și caleÎntoarce
GET /tv/{series_id}/creditsDistribuția și echipa serialului, o intrare pe persoană și rol.
GET /tv/{series_id}/season/{season_number}/creditsDistribuția și echipa unui sezon.
GET /tv/{series_id}/season/{season_number}/episode/{episode_number}/creditscrew și guest_stars pentru un episod. cast este un array gol.

Aceleași date sunt disponibile cu append_to_response=credits pe căile de serial, sezon și episod. Structura intrărilor se potrivește cu creditele de film de mai sus. Actorii invitați ai unui episod poartă character și order, iar intrările din echipă poartă department și job.

GET /3/tv/1399/season/1/episode/1/credits?language=en-US, cu array-urile tăiate la două intrări:

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 nu oferă credite TV agregate sau căutare după credit_id. Pentru lista distribuției unui serial, citește /tv/{series_id}/credits și sortează cast după order.

Citirea distribuției și a echipei într-o aplicație

SarcinăCum
Arată regizorulAlege intrările crew cu job egal cu Director. Un film poate avea mai mulți.
Arată distribuția principalăSortează cast după order și ia primii 10.
Grupează echipaGrupează după department. O persoană cu două meserii apare de două ori, deci îmbină după id-ul persoanei.
Arată distribuția unui serialCitește creditele serialului și sortează cast după order.
Listează toate departamentele și meseriileCitește lista de referință descrisă la genuri și liste de referință.

Erori

HTTPstatus_codeCând
4017Cheia lipsește sau este greșită.
40236Perioada planului s-a încheiat.
40434Filmul, serialul, sezonul sau episodul nu există sau calea nu este oferită.
40537Ai apelat o metodă de scriere.
42925Ai depășit cererile pe minut. Așteaptă numărul de secunde din Retry-After.

Detaliile sunt la erori și limite de cereri.

Note practice

  • Creditele sunt ținute în cache 6 ore, ca detaliile. Un nou membru al distribuției poate dura atât să apară.
  • O producție mare poate lista sute de intrări în echipă. Taie array-urile înainte să le afișezi.
  • profile_path este null pentru persoanele fără fotografie. Folosește w185 pentru rândurile din liste și h632 pentru vizualizările de detalii.
  • Fișele de film și de serial sunt la filme și seriale TV. Fișele de sezon și de episod sunt la sezoane și episoade.