API за детайли на филм
Ендпойнтът за детайли на филм връща един филм по id на GET /3/movie/{movie_id}. JSON съвпада с TMDB v3, така че съществуващите клиенти се нуждаят само от нов базов URL. Добавете append_to_response, за да вземете credits, videos, images и допълненията на 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:/. Вижте изображения. |
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, бюджет, приходи, награди, места на снимане | Търсене по външен идентификатор |
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 имат собствени страници: участници, изображения, видеа и трейлъри, преводи, ключови думи и търсене по външен идентификатор. amodb не предлага пътищата changes на TMDB.
Грешки
Грешките ползват тялото на TMDB, например {"success": false,.
| HTTP | status_code | Кога |
|---|---|---|
| 401 | 7 | Ключът липсва или е грешен. |
| 402 | 36 | Периодът на плана е изтекъл. |
| 404 | 34 | Няма филм с това id, пътят не се предлага или заглавието е за възрастни. |
| 405 | 37 | Извикали сте метод за запис, например оценяване на филм. |
| 429 | 25 | Надхвърлили сте лимита на заявки в минута. Изчакайте Retry-After секунди. |
Пълният списък е на страницата грешки, а лимитите по планове са на страницата лимити на заявките.
Практически бележки
- Пазете
idиimdb_idзаедно. Всяко от тях намира филма отново през търсене по външен идентификатор. - Искайте езика, който показвате. Текстово поле може да е празно, когато на този език няма превод, затова проверявайте за празен низ и повторете заявката с
en-US, ако ви трябва резервен език. - Кеширайте детайлите при себе си за няколко часа. Кешът на сървъра вече ги държи 6 часа, така че по-кратък клиентски кеш не носи полза.
- За да изброите филми, вместо да четете един, вижте търсене, откриване по филтри и тенденции и списъци.