API dei dettagli del film

L'endpoint dei dettagli restituisce un film per ID su GET /3/movie/{movie_id}. Il JSON segue TMDB v3, quindi i client esistenti richiedono solo un nuovo URL di base. Aggiungi append_to_response per ottenere crediti, video, immagini e gli extra di amodb ratings, moods, soundtracks, wikidata e showtimes in una richiesta.

Aggiornato il Vedi in Markdown

Ottenere i dettagli di un film

GET /3/movie/{movie_id} restituisce la scheda di base di un film: titoli, trama, durata, generi, data di uscita, budget, incassi, società di produzione e percorsi delle immagini. L'ID è lo stesso ID numerico usato da TMDB, quindi un film che già salvi come 550 mantiene quell'ID qui.

L'esempio qui sotto chiede il film in inglese e aggiunge le sue valutazioni nella stessa chiamata.

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_idpercorsoobbligatorio
    ID numerico del film, per esempio 550.
  • api_keyqueryuno dei due
    La tua chiave. Usa questa o l'header Authorization: Bearer.
  • languagequery
    Tag TMDB come en-US, ru-RU o pt-BR. Sono servite 14 lingue di base. Predefinito en-US.
  • append_to_responsequery
    Elenco separato da virgole di al massimo 20 sottorisorse da unire alla risposta.

Campi della risposta

CampoTipoNote
idinteroID del film.
imdb_idstringa o nullID IMDb come tt0137523.
title, original_titlestringaTitolo localizzato e titolo originale.
original_languagestringaCodice di lingua come en.
overview, taglinestringaTesto localizzato, vuoto quando non esiste una traduzione.
homepagestringaSito ufficiale, vuoto quando non noto.
release_datestringaYYYY-MM-DD, vuota quando non nota.
statusstringaStato di uscita, per esempio Released o In Production.
runtimeinteroMinuti.
budget, revenueinteroDollari statunitensi, 0 quando non noto.
genresarrayOggetti con id e name.
belongs_to_collectionoggetto o nullid, name, poster_path, backdrop_path. Vedi collezioni.
production_companiesarrayid, logo_path, name, origin_country.
production_countriesarrayiso_3166_1, name.
spoken_languagesarrayenglish_name, iso_639_1, name.
origin_countryarrayCodici paese come US.
poster_path, backdrop_pathstringa o nullDa accodare a https://img.amodb.dev/t/p/{size}. Vedi immagini.
popularitynumeroPunteggio relativo usato dalla lista dei popolari.
vote_average, vote_countnumero, interoPunteggio aggregato degli utenti.
adult, videobooleanoEntrambi sono false. I titoli per adulti non vengono mai serviti.

Risposta di esempio

GET /3/movie/550?language=en-US&append_to_response=ratings, con array e testi lunghi accorciati:

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

Il blocco ratings viene da append_to_response. Ogni fornitore è un oggetto {value, votes} oppure null, come descritto nella pagina valutazioni.

Combinare i dati con append_to_response

Una chiamata ne può sostituire sei. Elenca le sottorisorse che ti servono e ciascuna arriva sotto la propria chiave. Funzionano i valori TMDB standard: credits, videos, images, keywords, translations, external_ids, release_dates, alternative_titles, recommendations, similar, reviews, lists e watch/providers. amodb ne aggiunge altri cinque.

ValoreAggiungeDettagli
ratingsPunteggi IMDb, Kinopoisk, Metacritic, Rotten Tomatoes e TMDBValutazioni
moodsIndicatori di moodMood
soundtracksBrani presenti nel filmColonne sonore
wikidataID Wikidata, budget, incassi, premi, luoghi delle ripreseRicerca per ID esterno
showtimesOrari delle proiezioni al cinema quando notiOrari delle proiezioni

Ogni blocco aggiunto conta come parte di una sola richiesta HTTP. Una richiesta con dieci valori aggiunti usa comunque una delle tue 20, 40 o 120 richieste al minuto. I blocchi ratings, moods e soundtracks aggiunti omettono la chiave id che i percorsi autonomi restituiscono.

Endpoint dei film correlati

Tutti i percorsi qui sotto condividono la base https://api.amodb.dev/3 e il parametro language.

Metodo e percorsoRestituisceParametri aggiuntivi
GET /movie/{movie_id}/alternative_titles{id, titles}, spesso un array vuotonessuno
GET /movie/{movie_id}/release_datesDate di uscita e classificazioni per paesenessuno
GET /movie/{movie_id}/recommendationsUna lista di 20 film consigliatinessuno
GET /movie/{movie_id}/similarUna lista di 20 film similinessuno
GET /movie/{movie_id}/reviewsresults è vuoto per la maggior parte dei titolinessuno
GET /movie/{movie_id}/listsListe pubbliche che contengono il filmpage
GET /movie/{movie_id}/watch/providersPiattaforme di streaming e noleggio per paesenessuno
GET /movie/latestL'ultima scheda di film aggiuntanessuno

Le liste di consigliati e simili restituiscono sempre la pagina 1 con 20 elementi. La risposta di lists è paginata con page, 20 liste per pagina. Le liste paginate altrove nell'API accettano page da 1 a 500.

Crediti, immagini, video, traduzioni, parole chiave e ID esterni hanno le proprie pagine: crediti, immagini, video e trailer, traduzioni, parole chiave e ricerca per ID esterno. amodb non offre i percorsi changes di TMDB.

Errori

Gli errori usano il corpo TMDB, per esempio {"success": false, "status_code": 34, "status_message": "The resource you requested could not be found."}.

HTTPstatus_codeQuando
4017La chiave manca o è sbagliata.
40236Il periodo del piano è terminato.
40434Nessun film con quell'ID, un percorso non offerto, o un titolo per adulti.
40537Hai chiamato un metodo di scrittura come valutare un film.
42925Hai superato le richieste al minuto. Attendi i secondi di Retry-After.

L'elenco completo è nella pagina errori, e i limiti per piano sono in limiti di richieste.

Note pratiche

  • Salva insieme id e imdb_id. L'uno o l'altro ritrova il film tramite la ricerca per ID esterno.
  • Richiedi la lingua che mostri. Un campo di testo può essere vuoto quando in quella lingua non esiste una traduzione, quindi controlla la stringa vuota e richiedi di nuovo in en-US se ti serve un ripiego.
  • Tieni in cache i dettagli dalla tua parte per qualche ora. La cache del server li tiene già per 6 ore, quindi una cache client più breve non porta nulla.
  • Per elencare film invece di leggerne uno, vedi ricerca, discover e tendenze e liste.