API detailu filmu

Endpoint detailu filmu vrací jeden film podle ID na GET /3/movie/{movie_id}. JSON odpovídá TMDB v3, takže stávající klienti potřebují jen novou základní URL. Přidejte append_to_response a v jednom požadavku získáte obsazení, videa, obrázky a doplňky amodb: hodnocení, nálady, soundtracky, wikidata a promítací časy.

Aktualizováno Zobrazit jako Markdown

Získání detailů filmu

GET /3/movie/{movie_id} vrací základní záznam jednoho filmu: názvy, popis, délku, žánry, datum vydání, rozpočet, tržby, produkční společnosti a cesty k obrázkům. ID je stejné číselné ID, které používá TMDB, takže film, který už ukládáte jako 550, si ho zde ponechá.

Příklad níže si vyžádá film v angličtině a ve stejném volání přidá jeho hodnocení.

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)
}

Parametry

  • movie_idpathpovinný
    Číselné ID filmu, například 550.
  • api_keyqueryjeden ze dvou
    Váš klíč. Použijte jej, nebo hlavičku Authorization: Bearer.
  • languagequery
    Tag TMDB, například en-US, ru-RU nebo pt-BR. Podporuje se 14 základních jazyků. Výchozí en-US.
  • append_to_responsequery
    Seznam až 20 dílčích zdrojů oddělených čárkami, které se sloučí do odpovědi.

Pole odpovědi

PoleTypPoznámky
idintegerID filmu.
imdb_idstring nebo nullID z IMDb, například tt0137523.
title, original_titlestringLokalizovaný a původní název.
original_languagestringKód jazyka, například en.
overview, taglinestringLokalizovaný text, prázdný, když překlad neexistuje.
homepagestringOficiální web, prázdný, když není znám.
release_datestringYYYY-MM-DD, prázdné, když není známo.
statusstringStav vydání, například Released nebo In Production.
runtimeintegerMinuty.
budget, revenueintegerAmerické dolary, 0, když není známo.
genresarrayObjekty s id a name.
belongs_to_collectionobject nebo nullid, name, poster_path, backdrop_path. Viz kolekce.
production_companiesarrayid, logo_path, name, origin_country.
production_countriesarrayiso_3166_1, name.
spoken_languagesarrayenglish_name, iso_639_1, name.
origin_countryarrayKódy zemí, například US.
poster_path, backdrop_pathstring nebo nullPřipojte k https://img.amodb.dev/t/p/{size}. Viz obrázky.
popularitynumberRelativní skóre používané seznamem populárních.
vote_average, vote_countnumber, integerSouhrnné skóre uživatelů.
adult, videobooleanObojí je false. Tituly pro dospělé se nikdy neposkytují.

Příklad odpovědi

GET /3/movie/550?language=en-US&append_to_response=ratings, s dlouhými poli a texty zkrácenými:

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
    }
  }
}

Blok ratings pochází z append_to_response. Každý poskytovatel je objekt {value, votes} nebo null, jak popisuje stránka hodnocení.

Kombinování dat přes append_to_response

Jedno volání může nahradit šest. Vypište dílčí zdroje, které potřebujete, a každý přijde pod vlastním klíčem. Fungují standardní hodnoty TMDB: credits, videos, images, keywords, translations, external_ids, release_dates, alternative_titles, recommendations, similar, reviews, lists a watch/providers. amodb přidává dalších pět.

HodnotaPřidáváPodrobnosti
ratingsSkóre z IMDb, Kinopoisk, Metacritic, Rotten Tomatoes a TMDBHodnocení
moodsMěřiče náladyNálady
soundtracksSkladby, které ve filmu zazníSoundtracky
wikidataID Wikidata, rozpočet, tržby, ocenění, místa natáčeníHledání podle externího ID
showtimesPromítací časy kin, kde jsou známéPromítací časy

Každý přidaný blok se počítá jako součást jednoho požadavku HTTP. Požadavek s deseti přidanými hodnotami stále spotřebuje jeden z vašich 20, 40 nebo 120 požadavků za minutu. Přidané bloky ratings, moods a soundtracks vynechávají klíč id, který samostatné cesty vracejí.

Související endpointy filmů

Všechny cesty níže sdílejí základ https://api.amodb.dev/3 a parametr language.

Metoda a cestaVracíDalší parametry
GET /movie/{movie_id}/alternative_titles{id, titles}, často prázdné poležádné
GET /movie/{movie_id}/release_datesData vydání a věková hodnocení podle zemížádné
GET /movie/{movie_id}/recommendationsSeznam 20 doporučených filmůžádné
GET /movie/{movie_id}/similarSeznam 20 podobných filmůžádné
GET /movie/{movie_id}/reviewsresults je u většiny titulů prázdnéžádné
GET /movie/{movie_id}/listsVeřejné seznamy, které film obsahujípage
GET /movie/{movie_id}/watch/providersPoskytovatelé streamování a půjčování podle zemížádné
GET /movie/latestNejnovější přidaný záznam filmužádné

Seznamy doporučení a podobných filmů vždy vracejí stránku 1 s 20 položkami. Odpověď lists je stránkovaná přes page, 20 seznamů na stránku. Stránkované seznamy jinde v API přijímají page od 1 do 500.

Obsazení, obrázky, videa, překlady, klíčová slova a externí ID mají vlastní stránky: obsazení a štáb, obrázky, videa a trailery, překlady, klíčová slova a hledání podle externího ID. amodb nenabízí cesty changes z TMDB.

Chyby

Chyby používají tělo TMDB, například {"success": false, "status_code": 34, "status_message": "The resource you requested could not be found."}.

HTTPstatus_codeKdy
4017Klíč chybí nebo je nesprávný.
40236Platnost tarifu skončila.
40434Film s tímto ID neexistuje, cesta, která se nenabízí, nebo titul pro dospělé.
40537Zavolali jste metodu pro zápis, například hodnocení filmu.
42925Překročili jste počet požadavků za minutu. Počkejte tolik sekund, kolik říká Retry-After.

Úplný seznam je na stránce chyby a limity podle tarifu na stránce limity požadavků.

Praktické poznámky

  • Ukládejte id a imdb_id společně. Kterýmkoli film znovu najdete přes hledání podle externího ID.
  • Vyžádejte jazyk, který zobrazujete. Textové pole může být prázdné, když v daném jazyce překlad neexistuje, zkontrolujte proto prázdný řetězec a pro zálohu požádejte znovu s en-US.
  • Detaily cachujte u sebe několik hodin. Cache na serveru je drží 6 hodin, takže kratší cache u klienta nic nepřináší.
  • Chcete-li filmy vypsat, a ne číst jeden, viz vyhledávání, discover a trendy a seznamy.