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 | Id Wikidata, бюджэт, зборы, узнагароды, лакацыі здымак | Пошук па вонкавым ідэнтыфікатары |
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 не прапануе шляхі TMDB changes.
Памылкі
Памылкі выкарыстоўваюць цела 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 гадзін, таму карацейшы кліенцкі кэш нічога не дае.
- Каб атрымаць спіс фільмаў, а не адзін, глядзіце пошук, пошук па фільтрах і трэнды і спісы.