API detalii film

Endpoint-ul de detalii film întoarce un film după ID la GET /3/movie/{movie_id}. JSON-ul se potrivește cu TMDB v3, deci clienții existenți au nevoie doar de un URL de bază nou. Adaugă append_to_response ca să preiei credite, videoclipuri, imagini și extra amodb ratings, moods, soundtracks, wikidata și showtimes într-o singură cerere.

Actualizat Vezi ca Markdown

Obține detaliile unui film

GET /3/movie/{movie_id} întoarce fișa de bază a unui film: titluri, descriere, durată, genuri, data lansării, buget, încasări, companii de producție și căi de imagini. ID-ul este același ID numeric pe care îl folosește TMDB, deci un film pe care îl stochezi deja ca 550 păstrează acel ID aici.

Exemplul de mai jos cere filmul în engleză și îi atașează evaluările în același apel.

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

Parametri

  • movie_idcaleobligatoriu
    ID numeric de film, de exemplu 550.
  • api_keyinterogareuna dintre cele două
    Cheia ta. Folosește-o pe aceasta sau antetul Authorization: Bearer.
  • languageinterogare
    Etichetă TMDB precum en-US, ru-RU sau pt-BR. Sunt servite 14 limbi de bază. Implicit en-US.
  • append_to_responseinterogare
    Listă separată prin virgulă de până la 20 de sub-resurse de îmbinat în răspuns.

Câmpurile răspunsului

CâmpTipObservații
idnumăr întregID-ul filmului.
imdb_idșir sau nullID IMDb precum tt0137523.
title, original_titleșirTitlul localizat și cel original.
original_languageșirCod de limbă precum en.
overview, taglineșirText localizat, gol când nu există traducere.
homepageșirSite oficial, gol când nu se cunoaște.
release_dateșirYYYY-MM-DD, gol când nu se cunoaște.
statusșirStarea lansării, de exemplu Released sau In Production.
runtimenumăr întregMinute.
budget, revenuenumăr întregDolari SUA, 0 când nu se cunoaște.
genresarrayObiecte cu id și name.
belongs_to_collectionobiect sau nullid, name, poster_path, backdrop_path. Vezi colecții.
production_companiesarrayid, logo_path, name, origin_country.
production_countriesarrayiso_3166_1, name.
spoken_languagesarrayenglish_name, iso_639_1, name.
origin_countryarrayCoduri de țară precum US.
poster_path, backdrop_pathșir sau nullSe adaugă la https://img.amodb.dev/t/p/{size}. Vezi imagini.
popularitynumărScor relativ folosit de lista populară.
vote_average, vote_countnumăr, număr întregScor agregat al utilizatorilor.
adult, videobooleanAmbele sunt false. Titlurile pentru adulți nu sunt servite niciodată.

Exemplu de răspuns

GET /3/movie/550?language=en-US&append_to_response=ratings, cu array-urile lungi și textul scurtate:

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

Blocul ratings vine din append_to_response. Fiecare furnizor este un obiect {value, votes} sau null, după cum este descris la evaluări.

Combină datele cu append_to_response

Un singur apel poate înlocui șase. Listează sub-resursele de care ai nevoie și fiecare sosește sub propria cheie. Valorile TMDB standard funcționează: credits, videos, images, keywords, translations, external_ids, release_dates, alternative_titles, recommendations, similar, reviews, lists și watch/providers. amodb adaugă încă cinci.

ValoareAdaugăDetalii
ratingsScorurile IMDb, Kinopoisk, Metacritic, Rotten Tomatoes și TMDBEvaluări
moodsIndicatori de atmosferăAtmosfere
soundtracksPiesele auzite în filmColoane sonore
wikidataID Wikidata, buget, încasări, premii, locuri de filmareCăutare după ID extern
showtimesProgram de proiecții în cinema, unde se știeProgram de proiecții

Fiecare bloc atașat se numără ca parte dintr-o singură cerere HTTP. O cerere cu zece valori atașate folosește tot una dintre cele 20, 40 sau 120 de cereri pe minut. Blocurile atașate ratings, moods și soundtracks omit cheia id pe care o întorc căile independente.

Endpoint-uri înrudite pentru filme

Toate căile de mai jos au baza https://api.amodb.dev/3 și parametrul language.

Metodă și caleÎntoarceParametri suplimentari
GET /movie/{movie_id}/alternative_titles{id, titles}, adesea un array golniciunul
GET /movie/{movie_id}/release_datesDate de lansare și clasificări pe țarăniciunul
GET /movie/{movie_id}/recommendationsO listă de 20 de filme recomandateniciunul
GET /movie/{movie_id}/similarO listă de 20 de filme similareniciunul
GET /movie/{movie_id}/reviewsresults este gol pentru majoritatea titlurilorniciunul
GET /movie/{movie_id}/listsListe publice care conțin filmulpage
GET /movie/{movie_id}/watch/providersFurnizori de streaming și închiriere pe țarăniciunul
GET /movie/latestCea mai nouă înregistrare de film adăugatăniciunul

Listele de recomandări și de filme similare întorc mereu pagina 1 cu 20 de elemente. Răspunsul lists este paginat cu page, câte 20 de liste pe pagină. Listele paginate din alte părți ale API-ului primesc page de la 1 la 500.

Creditele, imaginile, videoclipurile, traducerile, cuvintele-cheie și ID-urile externe au propriile pagini: credite, imagini, videoclipuri și trailere, traduceri, cuvinte-cheie și căutare după ID extern. amodb nu oferă căile TMDB changes.

Erori

Erorile folosesc corpul TMDB, de exemplu {"success": false, "status_code": 34, "status_message": "The resource you requested could not be found."}.

HTTPstatus_codeCând
4017Cheia lipsește sau este greșită.
40236Perioada planului s-a încheiat.
40434Niciun film cu acel ID, o cale care nu este oferită sau un titlu pentru adulți.
40537Ai apelat o metodă de scriere, precum evaluarea unui film.
42925Ai depășit cererile pe minut. Așteaptă numărul de secunde din Retry-After.

Lista completă este pe pagina erori, iar limitele pe plan sunt la limite de cereri.

Note practice

  • Stochează id și imdb_id împreună. Oricare regăsește filmul prin căutare după ID extern.
  • Cere limba pe care o afișezi. Un câmp de text poate fi gol când nu există traducere în acea limbă, deci verifică dacă este un șir gol și cere din nou în en-US dacă ai nevoie de o variantă de rezervă.
  • Pune detaliile în cache și la tine pentru câteva ore. Cache-ul serverului le ține deja 6 ore, deci un cache de client mai scurt nu aduce nimic.
  • Ca să listezi filme în loc să citești unul, vezi căutare, descoperire și tendințe și liste.