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.
Ottenere i dettagli di un film
GET / 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.
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_idpercorsoobbligatorioID numerico del film, per esempio550.api_keyqueryuno dei dueLa tua chiave. Usa questa o l'headerAuthorization: Bearer.languagequeryTag TMDB comeen-US,ru-RUopt-BR. Sono servite 14 lingue di base. Predefinitoen-US.append_to_responsequeryElenco separato da virgole di al massimo 20 sottorisorse da unire alla risposta.
Campi della risposta
| Campo | Tipo | Note |
|---|---|---|
id | intero | ID del film. |
imdb_id | stringa o null | ID IMDb come tt0137523. |
title, original_title | stringa | Titolo localizzato e titolo originale. |
original_language | stringa | Codice di lingua come en. |
overview, tagline | stringa | Testo localizzato, vuoto quando non esiste una traduzione. |
homepage | stringa | Sito ufficiale, vuoto quando non noto. |
release_date | stringa | YYYY-MM-DD, vuota quando non nota. |
status | stringa | Stato di uscita, per esempio Released o In Production. |
runtime | intero | Minuti. |
budget, revenue | intero | Dollari statunitensi, 0 quando non noto. |
genres | array | Oggetti con id e name. |
belongs_to_collection | oggetto o null | id, name, poster_path, backdrop_path. Vedi collezioni. |
production_companies | array | id, logo_path, name, origin_country. |
production_countries | array | iso_3166_1, name. |
spoken_languages | array | english_name, iso_639_1, name. |
origin_country | array | Codici paese come US. |
poster_path, backdrop_path | stringa o null | Da accodare a https:/. Vedi immagini. |
popularity | numero | Punteggio relativo usato dalla lista dei popolari. |
vote_average, vote_count | numero, intero | Punteggio aggregato degli utenti. |
adult, video | booleano | Entrambi sono false. I titoli per adulti non vengono mai serviti. |
Risposta di esempio
GET /, con array e testi lunghi accorciati:
{
"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.
| Valore | Aggiunge | Dettagli |
|---|---|---|
ratings | Punteggi IMDb, Kinopoisk, Metacritic, Rotten Tomatoes e TMDB | Valutazioni |
moods | Indicatori di mood | Mood |
soundtracks | Brani presenti nel film | Colonne sonore |
wikidata | ID Wikidata, budget, incassi, premi, luoghi delle riprese | Ricerca per ID esterno |
showtimes | Orari delle proiezioni al cinema quando noti | Orari 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:/ e il parametro language.
| Metodo e percorso | Restituisce | Parametri aggiuntivi |
|---|---|---|
GET / | {id, titles}, spesso un array vuoto | nessuno |
GET / | Date di uscita e classificazioni per paese | nessuno |
GET / | Una lista di 20 film consigliati | nessuno |
GET / | Una lista di 20 film simili | nessuno |
GET / | results è vuoto per la maggior parte dei titoli | nessuno |
GET / | Liste pubbliche che contengono il film | page |
GET / | Piattaforme di streaming e noleggio per paese | nessuno |
GET /movie/latest | L'ultima scheda di film aggiunta | nessuno |
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,.
| HTTP | status_code | Quando |
|---|---|---|
| 401 | 7 | La chiave manca o è sbagliata. |
| 402 | 36 | Il periodo del piano è terminato. |
| 404 | 34 | Nessun film con quell'ID, un percorso non offerto, o un titolo per adulti. |
| 405 | 37 | Hai chiamato un metodo di scrittura come valutare un film. |
| 429 | 25 | Hai 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
ideimdb_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-USse 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.