API деталей персони
Ендпоінт персони повертає одного актора, режисера чи члена знімальної групи за id на GET /3/person/{person_id}. JSON збігається з TMDB v3: біографія, дата народження, місце народження, зображення профілю та відділ. Супутні ендпоінти повертають фільми, серіали й об'єднану фільмографію, зовнішні id, зображення профілю та список популярних.
Отримання деталей персони
GET / повертає основний запис однієї персони: ім'я, біографію, дату народження, місце народження, відділ, зображення профілю та IMDb id. Id є числовим id персони в TMDB, тож Tom Hanks лишається 31, а Leonardo DiCaprio лишається 6193. Люди, що працюють перед камерою і за нею, мають один простір id.
Приклад читає Tom Hanks і додає його об'єднану фільмографію, а потім виводить ім'я, дату народження, основний відділ і кількість акторських робіт.
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 | рядок або null | YYYY-MM-DD. deathday дорівнює null для живих людей. |
place_of_birth | рядок або null | Довільний текст. |
gender | ціле число | 0 не вказано, 1 жіноча, 2 чоловіча, 3 небінарна. |
known_for_department | рядок | Основна робота, наприклад Acting або Directing. |
imdb_id | рядок або null | IMDb id персони, наприклад nm0000158. |
homepage | рядок або null | Офіційний сайт. |
profile_path | рядок або null | Додайте до https:/. Див. API зображень. |
popularity | число | Відносна оцінка, яку використовує список популярних. |
adult | булеве значення | Завжди false. Персони для дорослих ніколи не віддаються. |
Приклад відповіді
GET /, зі скороченою біографією:
{
"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 / | Фільми, з character і order у cast та department і job у crew | немає |
GET / | Серіали, з character у cast та department і job у crew | немає |
GET / | Фільми й серіали разом, кожен із media_type зі значенням movie або tv | немає |
Записи фільмів мають title і release_date. Записи серіалів мають name і first_air_date, а записи акторського складу серіалів також містять ключ episode_count, який у поточних даних дорівнює 0. Записи також мають credit_id, genre_ids, poster_path, vote_average та інші поля списків. Фрагмент нижче сортує об'єднану фільмографію за датою та виводить п'ять найновіших записів.
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_for | language, page |
GET / | Фото профілю в масиві profiles | немає |
GET / | imdb_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.
Помилки
| HTTP | status_code | Коли |
|---|---|---|
| 401 | 7 | Ключ відсутній або хибний. |
| 402 | 36 | Період дії тарифу закінчився. |
| 404 | 34 | Немає персони з таким id, це персона для дорослих або шлях не пропонується. |
| 405 | 37 | Ви викликали метод запису. |
| 429 | 25 | Перевищено ліміт запитів на хвилину. Зачекайте кількість секунд із 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 тут.