API деталей персони

Ендпоінт персони повертає одного актора, режисера чи члена знімальної групи за id на GET /3/person/{person_id}. JSON збігається з TMDB v3: біографія, дата народження, місце народження, зображення профілю та відділ. Супутні ендпоінти повертають фільми, серіали й об'єднану фільмографію, зовнішні id, зображення профілю та список популярних.

Оновлено Відкрити в Markdown

Отримання деталей персони

GET /3/person/{person_id} повертає основний запис однієї персони: ім'я, біографію, дату народження, місце народження, відділ, зображення профілю та IMDb id. Id є числовим id персони в TMDB, тож Tom Hanks лишається 31, а Leonardo DiCaprio лишається 6193. Люди, що працюють перед камерою і за нею, мають один простір id.

Приклад читає Tom Hanks і додає його об'єднану фільмографію, а потім виводить ім'я, дату народження, основний відділ і кількість акторських робіт.

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

Параметри

  • person_idшляхобов'язковий
    Числовий id персони, наприклад 31.
  • api_keyрядок запитуодин із двох
    Ваш ключ. Використовуйте його або заголовок Authorization: Bearer.
  • languageрядок запиту
    Тег TMDB, наприклад en-US або ru-RU. Біографія повертається цією мовою, якщо переклад існує.
  • append_to_responseрядок запиту
    Список через кому: movie_credits, tv_credits, combined_credits, external_ids, images. Невідомі назви ігноруються.

Поля відповіді

ПолеТипПримітки
idціле числоId персони.
nameрядокІм'я для показу, мовою із запитаного language, якщо переклад існує.
also_known_asмасивАльтернативні імена та написання.
biographyрядокЛокалізований текст, порожній, якщо перекладу немає.
birthday, deathdayрядок або nullYYYY-MM-DD. deathday дорівнює null для живих людей.
place_of_birthрядок або nullДовільний текст.
genderціле число0 не вказано, 1 жіноча, 2 чоловіча, 3 небінарна.
known_for_departmentрядокОсновна робота, наприклад Acting або Directing.
imdb_idрядок або nullIMDb id персони, наприклад nm0000158.
homepageрядок або nullОфіційний сайт.
profile_pathрядок або nullДодайте до https://img.amodb.dev/t/p/{size}. Див. API зображень.
popularityчислоВідносна оцінка, яку використовує список популярних.
adultбулеве значенняЗавжди false. Персони для дорослих ніколи не віддаються.

Приклад відповіді

GET /3/person/31?language=en-US, зі скороченою біографією:

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

Ендпоінти фільмографії

Три ендпоінти перелічують, над чим працювала персона. Усі приймають language і повертають ключі id, cast і crew. Коли ви додаєте їх через append_to_response, ключ id відсутній.

Метод і шляхПовертаєДодаткові параметри
GET /person/{person_id}/movie_creditsФільми, з character і order у cast та department і job у crewнемає
GET /person/{person_id}/tv_creditsСеріали, з character у cast та department і job у crewнемає
GET /person/{person_id}/combined_creditsФільми й серіали разом, кожен із media_type зі значенням movie або tvнемає

Записи фільмів мають title і release_date. Записи серіалів мають name і first_air_date, а записи акторського складу серіалів також містять ключ episode_count, який у поточних даних дорівнює 0. Записи також мають credit_id, genre_ids, poster_path, vote_average та інші поля списків. Фрагмент нижче сортує об'єднану фільмографію за датою та виводить п'ять найновіших записів.

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

Списки та зображення

Метод і шляхПовертаєДодаткові параметри
GET /person/popularПосторінковий список популярних людей із назвами known_forlanguage, page
GET /person/{person_id}/imagesФото профілю в масиві profilesнемає
GET /person/{person_id}/external_idsimdb_id, wikidata_id, facebook_id, instagram_id, tiktok_id, twitter_id, youtube_idнемає

Записи популярних містять id, name, original_name, known_for_department, gender, profile_path, popularity і масив known_for. Сторінки йдуть від 1 до 500. Фото профілю описано в розділі API зображень, а зовнішні id на сторінці пошук за зовнішнім ID.

amodb не пропонує переклади персон, найновіший запис персони, зображення з тегами чи зміни. Натомість запитуйте біографію потрібною мовою параметром language.

Помилки

HTTPstatus_codeКоли
4017Ключ відсутній або хибний.
40236Період дії тарифу закінчився.
40434Немає персони з таким id, це персона для дорослих або шлях не пропонується.
40537Ви викликали метод запису.
42925Перевищено ліміт запитів на хвилину. Зачекайте кількість секунд із Retry-After.

Повний список на сторінці помилки, а вікна за тарифами на сторінці ліміти запитів.

Практичні поради

  • Деталі персони та списки кредитів кешуються на 6 годин. Список популярних кешується на 30 хвилин, а сторінки йдуть від 1 до 500.
  • Додавайте combined_credits через append_to_response замість другого виклику. Обидва способи повертають ті самі дані.
  • У movie_credits кожен запис cast має значення order, позицію персони в титрах цього фільму. Записи серіалів не мають order, тому сортуйте їх за first_air_date.
  • Використовуйте known_for_department, щоб вирішити, який список показувати першим: cast для акторів, crew для режисерів і сценаристів.
  • Знайдіть персону за іменем на сторінці пошук, а потім використайте id тут.