API за детайли на филм

Ендпойнтът за детайли на филм връща един филм по id на GET /3/movie/{movie_id}. JSON съвпада с TMDB v3, така че съществуващите клиенти се нуждаят само от нов базов URL. Добавете append_to_response, за да вземете credits, videos, images и допълненията на amodb ratings, moods, soundtracks, wikidata и showtimes в една заявка.

Обновено Отвори като Markdown

Вземане на детайли за филм

GET /3/movie/{movie_id} връща основния запис на един филм: заглавия, описание, продължителност, жанрове, дата на излизане, бюджет, приходи, продуцентски компании и пътища до изображения. Id е същото числово id, което ползва TMDB, така че филм, който вече пазите като 550, запазва това id и тук.

Примерът по-долу иска филма на английски и добавя рейтингите му в същото извикване.

bashjspyphpgo
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низ или nullIMDb 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обект или nullid, 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://img.amodb.dev/t/p/{size}. Вижте изображения.
popularityчислоОтносителна оценка, използвана от списъка с популярни.
vote_average, vote_countчисло, цяло числоОбобщена потребителска оценка.
adult, videoбулева стойностИ двете са false. Заглавия за възрастни никога не се обслужват.

Примерен отговор

GET /3/movie/550?language=en-US&append_to_response=ratings, с изрязани дълги масиви и текст:

JSON
{
  "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Песни, които звучат във филмаСаундтраци
wikidataWikidata id, бюджет, приходи, награди, места на сниманеТърсене по външен идентификатор
showtimesПрожекции в кината, където са известниПрожекции

Всеки добавен блок се брои като част от една HTTP заявка. Заявка с десет добавени стойности пак ползва една от вашите 20, 40 или 120 заявки в минута. Добавените блокове ratings, moods и soundtracks нямат ключа id, който връщат самостоятелните пътища.

Свързани ендпойнти за филм

Всички пътища по-долу имат обща основа https://api.amodb.dev/3 и параметъра language.

Метод и пътКакво връщаДопълнителни параметри
GET /movie/{movie_id}/alternative_titles{id, titles}, често празен масивняма
GET /movie/{movie_id}/release_datesДати на излизане и възрастови рейтинги по държавиняма
GET /movie/{movie_id}/recommendationsСписък с 20 препоръчани филманяма
GET /movie/{movie_id}/similarСписък с 20 подобни филманяма
GET /movie/{movie_id}/reviewsresults е празен за повечето заглавияняма
GET /movie/{movie_id}/listsПублични списъци, които съдържат филмаpage
GET /movie/{movie_id}/watch/providersСтрийминг и наем по държавиняма
GET /movie/latestНай-новият добавен запис за филмняма

Списъците recommendations и similar винаги връщат страница 1 с 20 елемента. Отговорът lists е странициран с page, по 20 списъка на страница. Другите странирани списъци в API приемат page от 1 до 500.

Участниците, изображенията, видеата, преводите, ключовите думи и външните id имат собствени страници: участници, изображения, видеа и трейлъри, преводи, ключови думи и търсене по външен идентификатор. amodb не предлага пътищата changes на TMDB.

Грешки

Грешките ползват тялото на TMDB, например {"success": false, "status_code": 34, "status_message": "The resource you requested could not be found."}.

HTTPstatus_codeКога
4017Ключът липсва или е грешен.
40236Периодът на плана е изтекъл.
40434Няма филм с това id, пътят не се предлага или заглавието е за възрастни.
40537Извикали сте метод за запис, например оценяване на филм.
42925Надхвърлили сте лимита на заявки в минута. Изчакайте Retry-After секунди.

Пълният списък е на страницата грешки, а лимитите по планове са на страницата лимити на заявките.

Практически бележки

  • Пазете id и imdb_id заедно. Всяко от тях намира филма отново през търсене по външен идентификатор.
  • Искайте езика, който показвате. Текстово поле може да е празно, когато на този език няма превод, затова проверявайте за празен низ и повторете заявката с en-US, ако ви трябва резервен език.
  • Кеширайте детайлите при себе си за няколко часа. Кешът на сървъра вече ги държи 6 часа, така че по-кратък клиентски кеш не носи полза.
  • За да изброите филми, вместо да четете един, вижте търсене, откриване по филтри и тенденции и списъци.