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.
Obține detaliile unui film
GET / î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.
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_idcaleobligatoriuID numeric de film, de exemplu550.api_keyinterogareuna dintre cele douăCheia ta. Folosește-o pe aceasta sau antetulAuthorization: Bearer.languageinterogareEtichetă TMDB precumen-US,ru-RUsaupt-BR. Sunt servite 14 limbi de bază. Impliciten-US.append_to_responseinterogareListă separată prin virgulă de până la 20 de sub-resurse de îmbinat în răspuns.
Câmpurile răspunsului
| Câmp | Tip | Observații |
|---|---|---|
id | număr întreg | ID-ul filmului. |
imdb_id | șir sau null | ID IMDb precum tt0137523. |
title, original_title | șir | Titlul localizat și cel original. |
original_language | șir | Cod de limbă precum en. |
overview, tagline | șir | Text localizat, gol când nu există traducere. |
homepage | șir | Site oficial, gol când nu se cunoaște. |
release_date | șir | YYYY-MM-DD, gol când nu se cunoaște. |
status | șir | Starea lansării, de exemplu Released sau In Production. |
runtime | număr întreg | Minute. |
budget, revenue | număr întreg | Dolari SUA, 0 când nu se cunoaște. |
genres | array | Obiecte cu id și name. |
belongs_to_collection | obiect sau null | id, name, poster_path, backdrop_path. Vezi colecții. |
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 | Coduri de țară precum US. |
poster_path, backdrop_path | șir sau null | Se adaugă la https:/. Vezi imagini. |
popularity | număr | Scor relativ folosit de lista populară. |
vote_average, vote_count | număr, număr întreg | Scor agregat al utilizatorilor. |
adult, video | boolean | Ambele sunt false. Titlurile pentru adulți nu sunt servite niciodată. |
Exemplu de răspuns
GET /, cu array-urile lungi și textul scurtate:
{
"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.
| Valoare | Adaugă | Detalii |
|---|---|---|
ratings | Scorurile IMDb, Kinopoisk, Metacritic, Rotten Tomatoes și TMDB | Evaluări |
moods | Indicatori de atmosferă | Atmosfere |
soundtracks | Piesele auzite în film | Coloane sonore |
wikidata | ID Wikidata, buget, încasări, premii, locuri de filmare | Căutare după ID extern |
showtimes | Program de proiecții în cinema, unde se știe | Program 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:/ și parametrul language.
| Metodă și cale | Întoarce | Parametri suplimentari |
|---|---|---|
GET / | {id, titles}, adesea un array gol | niciunul |
GET / | Date de lansare și clasificări pe țară | niciunul |
GET / | O listă de 20 de filme recomandate | niciunul |
GET / | O listă de 20 de filme similare | niciunul |
GET / | results este gol pentru majoritatea titlurilor | niciunul |
GET / | Liste publice care conțin filmul | page |
GET / | Furnizori de streaming și închiriere pe țară | niciunul |
GET /movie/latest | Cea 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,.
| HTTP | status_code | Când |
|---|---|---|
| 401 | 7 | Cheia lipsește sau este greșită. |
| 402 | 36 | Perioada planului s-a încheiat. |
| 404 | 34 | Niciun film cu acel ID, o cale care nu este oferită sau un titlu pentru adulți. |
| 405 | 37 | Ai apelat o metodă de scriere, precum evaluarea unui film. |
| 429 | 25 | Ai 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șiimdb_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-USdacă 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.