API szczegółów osoby

Endpoint osoby zwraca jednego aktora, reżysera lub członka ekipy po ID pod GET /3/person/{person_id}. JSON odpowiada TMDB v3: biografia, data urodzenia, miejsce urodzenia, obraz profilowy i dział. Endpointy towarzyszące zwracają role filmowe, serialowe i połączone, zewnętrzne ID, obrazy profilowe oraz listę popularnych osób.

Zaktualizowano Zobacz jako Markdown

Pobieranie szczegółów osoby

GET /3/person/{person_id} zwraca podstawowy rekord jednej osoby: imię i nazwisko, biografię, datę urodzenia, miejsce urodzenia, dział, obraz profilowy i ID z IMDb. ID to numeryczne ID osoby z TMDB, więc Tom Hanks pozostaje 31, a Leonardo DiCaprio 6193. Osoby pracujące przed kamerą i za nią dzielą jedną przestrzeń ID.

Przykład odczytuje Toma Hanksa, dołącza jego połączone role i wypisuje imię i nazwisko, datę urodzenia, główny dział i liczbę ról aktorskich.

bashjspyphpgo
curl -sSf "https://api.amodb.dev/3/person/31?language=en-US&append_to_response=combined_credits" \
  -H "Authorization: Bearer $AMODB_KEY"
const url = 'https://api.amodb.dev/3/person/31?language=en-US&append_to_response=combined_credits';
const res = await fetch(url, { headers: { Authorization: `Bearer ${process.env.AMODB_KEY}` } });
if (!res.ok) throw new Error(`amodb returned ${res.status}`);
const person = await res.json();
console.log(person.name, person.birthday, person.known_for_department, person.combined_credits.cast.length);
import os
import requests

r = requests.get(
    "https://api.amodb.dev/3/person/31",
    params={"language": "en-US", "append_to_response": "combined_credits"},
    headers={"Authorization": f"Bearer {os.environ['AMODB_KEY']}"},
    timeout=10,
)
r.raise_for_status()
person = r.json()
print(person["name"], person["birthday"], person["known_for_department"], len(person["combined_credits"]["cast"]))
<?php
$url = 'https://api.amodb.dev/3/person/31?language=en-US&append_to_response=combined_credits';
$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");
}
$person = json_decode($body, true);
echo $person['name'], ' ', $person['birthday'], ' ', count($person['combined_credits']['cast']), PHP_EOL;
package main

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

type Person struct {
	Name         string `json:"name"`
	Birthday     string `json:"birthday"`
	Department   string `json:"known_for_department"`
	PlaceOfBirth string `json:"place_of_birth"`
}

func main() {
	req, _ := http.NewRequest("GET", "https://api.amodb.dev/3/person/31?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 p Person
	if err := json.NewDecoder(res.Body).Decode(&p); err != nil {
		panic(err)
	}
	fmt.Println(p.Name, p.Birthday, p.Department, p.PlaceOfBirth)
}

Parametry

  • person_idpathwymagany
    Numeryczne ID osoby, na przykład 31.
  • api_keyqueryjeden z dwóch
    Twój klucz. Użyj go albo nagłówka Authorization: Bearer.
  • languagequery
    Tag TMDB, na przykład en-US lub ru-RU. Biografia wraca w tym języku, gdy istnieje tłumaczenie.
  • append_to_responsequery
    Lista oddzielona przecinkami: movie_credits, tv_credits, combined_credits, external_ids, images. Nieznane nazwy są ignorowane.

Pola odpowiedzi

PoleTypUwagi
idintegerID osoby.
namestringWyświetlana nazwa, w żądanym language, gdy istnieje tłumaczenie.
also_known_asarrayAlternatywne imiona i pisownie.
biographystringTekst zlokalizowany, pusty, gdy tłumaczenie nie istnieje.
birthday, deathdaystring lub nullYYYY-MM-DD. deathday ma wartość null dla osób żyjących.
place_of_birthstring lub nullDowolny tekst.
genderinteger0 nieokreślona, 1 kobieta, 2 mężczyzna, 3 niebinarna.
known_for_departmentstringGłówne zajęcie, na przykład Acting lub Directing.
imdb_idstring lub nullID osoby z IMDb, na przykład nm0000158.
homepagestring lub nullOficjalna strona.
profile_pathstring lub nullDołącz do https://img.amodb.dev/t/p/{size}. Zobacz obrazy.
popularitynumberWzględny wskaźnik używany przez listę popularnych.
adultbooleanZawsze false. Osoby dla dorosłych nigdy nie są udostępniane.

Przykładowa odpowiedź

GET /3/person/31?language=en-US, ze skróconą biografią:

JSON
{
  "adult": false,
  "also_known_as": [
    "Thomas Jeffrey Hanks"
  ],
  "biography": "Thomas Jeffrey Hanks (born July 9, 1956) is an American actor and filmmaker. Known for both his comedic and dramatic roles, Hanks is one of the most popular...",
  "birthday": "1956-07-09",
  "deathday": null,
  "gender": 2,
  "homepage": null,
  "id": 31,
  "imdb_id": "nm0000158",
  "known_for_department": "Acting",
  "name": "Tom Hanks",
  "place_of_birth": "Concord, California, USA",
  "popularity": 12.98,
  "profile_path": "/oFvZoKI6lvU03n4YoNGAll9rkas.jpg"
}

Endpointy filmografii

Trzy endpointy wypisują, nad czym pracowała osoba. Wszystkie przyjmują language i zwracają klucze id, cast i crew. Gdy dołączasz je przez append_to_response, klucz id jest pomijany.

Metoda i ścieżkaZwracaDodatkowe parametry
GET /person/{person_id}/movie_creditsFilmy, z character i order w cast oraz department i job w crewbrak
GET /person/{person_id}/tv_creditsSeriale, z character w cast oraz department i job w crewbrak
GET /person/{person_id}/combined_creditsFilmy i seriale razem, każde z media_type ustawionym na movie lub tvbrak

Pozycje filmów niosą title i release_date. Pozycje seriali niosą name i first_air_date, a pozycje obsady seriali mają też klucz episode_count, który w obecnych danych wynosi 0. Pozycje niosą także credit_id, genre_ids, poster_path, vote_average i inne pola list. Poniższy fragment sortuje połączone role według daty i wypisuje pięć najnowszych.

JavaScript
const credits = person.combined_credits;
const date = (c) => c.release_date || c.first_air_date || '';
const latest = credits.cast.filter((c) => date(c)).sort((a, b) => date(b).localeCompare(date(a))).slice(0, 5);
for (const c of latest) console.log(date(c), c.media_type, c.title || c.name, 'as', c.character);

Listy i obrazy

Metoda i ścieżkaZwracaDodatkowe parametry
GET /person/popularLista popularnych osób z paginacją, z tytułami known_forlanguage, page
GET /person/{person_id}/imagesZdjęcia profilowe w tablicy profilesbrak
GET /person/{person_id}/external_idsimdb_id, wikidata_id, facebook_id, instagram_id, tiktok_id, twitter_id, youtube_idbrak

Pozycje popularnych zawierają id, name, original_name, known_for_department, gender, profile_path, popularity i tablicę known_for. Strony biegną od 1 do 500. Zdjęcia profilowe omawia strona obrazy, a zewnętrzne ID strona wyszukiwanie po zewnętrznym ID.

amodb nie udostępnia tłumaczeń osób, najnowszego rekordu osoby, oznaczonych obrazów ani zmian. Biografię w potrzebnym języku pobierz zamiast tego parametrem language.

Błędy

HTTPstatus_codeKiedy
4017Brakuje klucza lub jest błędny.
40236Okres planu dobiegł końca.
40434Brak osoby o tym ID, osoba dla dorosłych lub ścieżka, która nie jest udostępniana.
40537Wywołano metodę zapisu.
42925Przekroczono limit żądań na minutę. Poczekaj tyle sekund, ile podaje Retry-After.

Pełna lista jest na stronie błędy, a okna według planów na stronie limity żądań.

Praktyczne uwagi

  • Szczegóły osób i listy ról są w cache przez 6 godzin. Lista popularnych jest w cache przez 30 minut, a strony biegną od 1 do 500.
  • Dodaj combined_credits przez append_to_response zamiast robić drugie wywołanie. Obie drogi zwracają te same dane.
  • W movie_credits każda pozycja cast ma wartość order, czyli pozycję osoby w czołówce tego filmu. Pozycje seriali nie mają order, więc sortuj je według first_air_date.
  • Użyj known_for_department, by zdecydować, którą listę pokazać najpierw: cast dla aktorów, crew dla reżyserów i scenarzystów.
  • Osobę po nazwisku znajdziesz na stronie wyszukiwanie, a potem użyj ID tutaj.