API деталей фільму
Ендпоінт деталей фільму повертає один фільм за id на GET /3/movie/{movie_id}. JSON збігається з TMDB v3, тож наявним клієнтам потрібен лише новий базовий URL. Додайте append_to_response, щоб одним запитом отримати акторський склад, відео, зображення та додаткові дані amodb: ratings, moods, soundtracks, wikidata і showtimes.
Отримання деталей фільму
GET / повертає основний запис одного фільму: назви, опис, тривалість, жанри, дату виходу, бюджет, збори, кінокомпанії та шляхи до зображень. Id є тим самим числовим id, що й у TMDB, тож фільм, який ви вже зберігаєте як 550, зберігає цей id і тут.
Наведений нижче приклад запитує фільм англійською й у тому самому виклику додає його рейтинги.
curl -s "https://api.amodb.dev/3/movie/550?language=en-US&append_to_response=ratings" \
-H "Authorization: Bearer $AMODB_KEY"const url = 'https://api.amodb.dev/3/movie/550?language=en-US&append_to_response=ratings';
const res = await fetch(url, { headers: { Authorization: `Bearer ${process.env.AMODB_KEY}` } });
if (!res.ok) throw new Error(`amodb returned ${res.status}`);
const movie = await res.json();
console.log(movie.title, movie.runtime, movie.ratings.imdb?.value);import os
import requests
r = requests.get(
"https://api.amodb.dev/3/movie/550",
params={"language": "en-US", "append_to_response": "ratings"},
headers={"Authorization": f"Bearer {os.environ['AMODB_KEY']}"},
timeout=10,
)
r.raise_for_status()
movie = r.json()
imdb = movie["ratings"]["imdb"]
print(movie["title"], movie["runtime"], imdb and imdb["value"])<?php
$url = 'https://api.amodb.dev/3/movie/550?language=en-US&append_to_response=ratings';
$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");
}
$movie = json_decode($body, true);
echo $movie['title'], ' ', $movie['runtime'], ' ', $movie['ratings']['imdb']['value'] ?? 'n/a', PHP_EOL;package main
import (
"encoding/json"
"fmt"
"net/http"
"os"
)
type Movie struct {
Title string `json:"title"`
Runtime int `json:"runtime"`
}
func main() {
url := "https://api.amodb.dev/3/movie/550?language=en-US"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("AMODB_KEY"))
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
if res.StatusCode != http.StatusOK {
panic(res.Status)
}
var m Movie
json.NewDecoder(res.Body).Decode(&m)
fmt.Println(m.Title, m.Runtime)
}Параметри
movie_idшляхобов'язковийЧисловий id фільму, наприклад550.api_keyрядок запитуодин із двохВаш ключ. Використовуйте його або заголовокAuthorization: Bearer.languageрядок запитуТег TMDB, наприкладen-US,ru-RUабоpt-BR. Обслуговується 14 базових мов. За замовчуваннямen-US.append_to_responseрядок запитуСписок до 20 підресурсів через кому, які додаються до відповіді.
Поля відповіді
| Поле | Тип | Примітки |
|---|---|---|
id | ціле число | Id фільму. |
imdb_id | рядок або null | IMDb id, наприклад tt0137523. |
title, original_title | рядок | Локалізована й оригінальна назва. |
original_language | рядок | Код мови, наприклад en. |
overview, tagline | рядок | Локалізований текст, порожній, якщо перекладу немає. |
homepage | рядок | Офіційний сайт, порожній, якщо невідомий. |
release_date | рядок | YYYY-MM-DD, порожній, якщо невідома. |
status | рядок | Стан випуску, наприклад Released або In Production. |
runtime | ціле число | Хвилини. |
budget, revenue | ціле число | Долари США, 0, якщо невідомо. |
genres | масив | Об'єкти з id і name. |
belongs_to_collection | об'єкт або null | id, name, poster_path, backdrop_path. Див. колекції. |
production_companies | масив | id, logo_path, name, origin_country. |
production_countries | масив | iso_3166_1, name. |
spoken_languages | масив | english_name, iso_639_1, name. |
origin_country | масив | Коди країн, наприклад US. |
poster_path, backdrop_path | рядок або null | Додайте до https:/. Див. API зображень. |
popularity | число | Відносна оцінка, яку використовує список популярних. |
vote_average, vote_count | число, ціле число | Сукупна оцінка користувачів. |
adult, video | булеве значення | Обидва дорівнюють false. Фільми для дорослих ніколи не віддаються. |
Приклад відповіді
GET /, зі скороченими довгими масивами й текстом:
{
"adult": false,
"backdrop_path": "/b9HyPoxwxjxkWEUL5ErZdhApQe2.jpg",
"belongs_to_collection": null,
"budget": 63000000,
"genres": [
{
"id": 18,
"name": "Drama"
},
{
"id": 53,
"name": "Thriller"
}
],
"homepage": "https://www.20thcenturystudios.com/movies/fight-club",
"id": 550,
"imdb_id": "tt0137523",
"origin_country": [
"US",
"DE"
],
"original_language": "en",
"original_title": "Fight Club",
"overview": "A ticking-time-bomb insomniac and a slippery soap salesman channel primal male aggression into a shocking n...",
"popularity": 39.0054,
"poster_path": "/jSziioSwPVrOy9Yow3XhWIBDjq1.jpg",
"production_companies": [
{
"id": 25,
"logo_path": "/nM2MfoMqzJQRiSynsDabOtFKetD.png",
"name": "20th Century Fox",
"origin_country": "US"
},
{
"id": 508,
"logo_path": "/4sGWXoboEkWPphI6es6rTmqkCBh.png",
"name": "Regency Enterprises",
"origin_country": "US"
}
],
"production_countries": [
{
"iso_3166_1": "US",
"name": "United States of America"
},
{
"iso_3166_1": "DE",
"name": "Germany"
}
],
"release_date": "1999-10-15",
"revenue": 101209702,
"runtime": 139,
"spoken_languages": [
{
"english_name": "English",
"iso_639_1": "en",
"name": "English"
}
],
"status": "Released",
"tagline": "Mischief. Mayhem. Soap.",
"title": "Fight Club",
"video": false,
"vote_average": 8.437,
"vote_count": 33039,
"ratings": {
"imdb": {
"value": 8.8,
"votes": 2669989
},
"kinopoisk": {
"value": 8.7,
"votes": null
},
"metacritic": {
"value": 67,
"votes": null
},
"rotten_tomatoes": {
"value": 81,
"votes": null
},
"tmdb": {
"value": 8.437,
"votes": 33039
}
}
}Блок ratings походить від append_to_response. Кожен постачальник є об'єктом {value, votes} або null, як описано на сторінці рейтинги.
Поєднання даних через append_to_response
Один виклик може замінити шість. Перелічіть підресурси, які потрібні, і кожен прийде під власним ключем. Працюють стандартні значення TMDB: credits, videos, images, keywords, translations, external_ids, release_dates, alternative_titles, recommendations, similar, reviews, lists і watch/providers. amodb додає ще п'ять.
| Значення | Додає | Докладніше |
|---|---|---|
ratings | Оцінки IMDb, Kinopoisk, Metacritic, Rotten Tomatoes і TMDB | Рейтинги |
moods | Індикатори настрою | Настрої |
soundtracks | Треки, що звучать у фільмі | Саундтреки |
wikidata | Wikidata id, бюджет, касові збори, нагороди, місця зйомок | Пошук за зовнішнім ID |
showtimes | Сеанси в кінотеатрах, де вони відомі | Сеанси |
Кожен доданий блок враховується як частина одного HTTP-запиту. Запит із десятьма доданими значеннями все одно використовує один із ваших 20, 40 чи 120 запитів на хвилину. Додані блоки ratings, moods і soundtracks не містять ключа id, який повертають окремі шляхи.
Пов'язані ендпоінти фільмів
Усі шляхи нижче мають спільну базу https:/ і параметр language.
| Метод і шлях | Повертає | Додаткові параметри |
|---|---|---|
GET / | {id, titles}, часто порожній масив | немає |
GET / | Дати виходу й вікові сертифікації за країнами | немає |
GET / | Список із 20 рекомендованих фільмів | немає |
GET / | Список із 20 схожих фільмів | немає |
GET / | results порожній для більшості фільмів | немає |
GET / | Публічні списки, що містять фільм | page |
GET / | Провайдери стримінгу й оренди за країнами | немає |
GET /movie/latest | Найновіший доданий запис фільму | немає |
Списки recommendations і similar завжди повертають сторінку 1 із 20 елементами. Відповідь lists розбито на сторінки параметром page, по 20 списків на сторінку. Посторінкові списки в інших місцях API приймають page від 1 до 500.
Акторський склад, зображення, відео, переклади, ключові слова та зовнішні id мають власні сторінки: акторський склад і знімальна група, API зображень, відео та трейлери, переклади, ключові слова і пошук за зовнішнім ID. amodb не пропонує шляхів TMDB changes.
Помилки
Помилки мають тіло TMDB, наприклад {"success": false,.
| HTTP | status_code | Коли |
|---|---|---|
| 401 | 7 | Ключ відсутній або хибний. |
| 402 | 36 | Період дії тарифу закінчився. |
| 404 | 34 | Немає фільму з таким id, шлях не пропонується або це фільм для дорослих. |
| 405 | 37 | Ви викликали метод запису, наприклад оцінювання фільму. |
| 429 | 25 | Ви перевищили ліміт запитів на хвилину. Зачекайте кількість секунд із Retry-After. |
Повний список на сторінці помилки, а ліміти за тарифами на сторінці ліміти запитів.
Практичні поради
- Зберігайте
idтаimdb_idразом. Будь-який із них знову знаходить фільм через пошук за зовнішнім ID. - Запитуйте мову, яку показуєте. Текстове поле може бути порожнім, якщо перекладу цією мовою немає, тому перевіряйте порожній рядок і повторюйте запит із
en-US, якщо потрібен запасний варіант. - Кешуйте деталі на своєму боці на кілька годин. Серверний кеш уже тримає їх 6 годин, тому коротший клієнтський кеш нічого не дає.
- Щоб отримати список фільмів, а не прочитати один, дивіться пошук, discover і тренди та списки.