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}. Вижте изображения.
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. Профилните снимки са на страницата изображения, а външните 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 тук.