API פרטי סרט
נקודת הקצה של פרטי סרט מחזירה סרט לפי מזהה ב-GET /3/movie/{movie_id}. ה-JSON זהה ל-TMDB v3, ולכן לקוחות קיימים צריכים רק כתובת בסיס חדשה. הוסיפו append_to_response כדי לקבל בבקשה אחת קרדיטים, סרטונים, תמונות והרחבות של amodb: דירוגים, מצבי רוח, פסקולים, wikidata וזמני הקרנה.
קבלת פרטי סרט
GET / מחזיר את רשומת הליבה של סרט אחד: כותרות, תקציר, משך, ז'אנרים, תאריך יציאה, תקציב, הכנסות, חברות הפקה ונתיבי תמונות. המזהה הוא אותו מזהה מספרי ש-TMDB משתמש בו, ולכן סרט ששמרתם כ-550 נשאר עם המזהה הזה כאן.
הדוגמה שלמטה מבקשת את הסרט באנגלית ומצרפת את הדירוגים שלו באותה קריאה.
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)
}פרמטרים
movie_idנתיבחובהמזהה סרט מספרי, למשל550.api_keyשאילתהאחד משנייםהמפתח שלכם. השתמשו בו או בכותרתAuthorization: Bearer.languageשאילתהתגית TMDB כמוen-US,ru-RUאוpt-BR. מוגשות 14 שפות בסיס. ברירת מחדלen-US.append_to_responseשאילתהעד 20 משאבי משנה מופרדים בפסיקים שימוזגו לתגובה.
שדות התגובה
| שדה | סוג | הערות |
|---|---|---|
id | integer | מזהה הסרט. |
imdb_id | string או null | מזהה IMDb כמו tt0137523. |
title, original_title | string | כותרת מתורגמת וכותרת מקורית. |
original_language | string | קוד שפה כמו en. |
overview, tagline | string | טקסט מתורגם, ריק כשאין תרגום. |
homepage | string | אתר רשמי, ריק כשלא ידוע. |
release_date | string | YYYY-MM-DD, ריק כשלא ידוע. |
status | string | מצב יציאה, למשל Released או In Production. |
runtime | integer | דקות. |
budget, revenue | integer | דולרים אמריקאיים, 0 כשלא ידוע. |
genres | array | אובייקטים עם id ו-name. |
belongs_to_collection | object או null | id, name, poster_path, backdrop_path. ראו אוספים. |
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 | קודי מדינה כמו US. |
poster_path, backdrop_path | string או null | מצרפים ל-https:/. ראו תמונות. |
popularity | number | ציון יחסי שמשמש את רשימת הפופולריים. |
vote_average, vote_count | number, integer | ציון משתמשים מצטבר. |
adult, video | boolean | שניהם false. כותרים למבוגרים לא מוגשים לעולם. |
תגובה לדוגמה
GET /, עם מערכים וטקסט ארוכים שקוצרו:
{
"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
}
}
}בלוק ratings מגיע מ-append_to_response. כל ספק הוא אובייקט {value, votes} או null, כמתואר בעמוד דירוגים.
שילוב נתונים עם append_to_response
קריאה אחת יכולה להחליף שש. פרטו את משאבי המשנה שאתם צריכים וכל אחד מגיע תחת מפתח משלו. הערכים הרגילים של TMDB עובדים: credits, videos, images, keywords, translations, external_ids, release_dates, alternative_titles, recommendations, similar, reviews, lists ו-watch/providers. amodb מוסיף עוד חמישה.
| ערך | מוסיף | פרטים |
|---|---|---|
ratings | ציונים של IMDb, Kinopoisk, Metacritic, Rotten Tomatoes ו-TMDB | דירוגים |
moods | מדדי מצב רוח | מדדי מצב רוח |
soundtracks | קטעים שנשמעים בסרט | פסקולים |
wikidata | מזהה Wikidata, תקציב, הכנסות קופות, פרסים, מקומות צילום | חיפוש לפי מזהה חיצוני |
showtimes | זמני הקרנה בבתי קולנוע כשהם ידועים | זמני הקרנה |
כל בלוק מצורף נספר כחלק מבקשת HTTP אחת. בקשה עם עשרה ערכים מצורפים עדיין צורכת אחת מ-20, 40 או 120 הבקשות שלכם לדקה. הבלוקים המצורפים ratings, moods ו-soundtracks משמיטים את המפתח id שהנתיבים העצמאיים מחזירים.
נקודות קצה קשורות לסרטים
כל הנתיבים שלמטה חולקים את הבסיס https:/ ואת הפרמטר language.
| שיטה ונתיב | מה מוחזר | פרמטרים נוספים |
|---|---|---|
GET / | {id, titles}, לעיתים קרובות מערך ריק | אין |
GET / | תאריכי יציאה ודירוגי גיל לפי מדינה | אין |
GET / | רשימה של 20 סרטים מומלצים | אין |
GET / | רשימה של 20 סרטים דומים | אין |
GET / | results ריק ברוב הכותרים | אין |
GET / | רשימות ציבוריות שמכילות את הסרט | page |
GET / | ספקי סטרימינג והשכרה לפי מדינה | אין |
GET /movie/latest | רשומת הסרט החדשה ביותר שנוספה | אין |
רשימות ההמלצות והדומים תמיד מחזירות עמוד 1 עם 20 פריטים. תגובת lists מדורגת עם page, 20 רשימות בעמוד. רשימות מדורגות במקומות אחרים ב-API מקבלות page מ-1 עד 500.
לקרדיטים, תמונות, סרטונים, תרגומים, מילות מפתח ומזהים חיצוניים יש עמודים משלהם: קרדיטים, תמונות, סרטונים וטריילרים, תרגומים, מילות מפתח וחיפוש לפי מזהה חיצוני. amodb לא מציע את נתיבי changes של TMDB.
שגיאות
שגיאות משתמשות בגוף של TMDB, למשל {"success": false,.
| HTTP | status_code | מתי |
|---|---|---|
| 401 | 7 | המפתח חסר או שגוי. |
| 402 | 36 | תקופת המסלול הסתיימה. |
| 404 | 34 | אין סרט עם המזהה הזה, נתיב שאינו מוצע, או כותר למבוגרים. |
| 405 | 37 | קראתם לשיטת כתיבה כמו דירוג סרט. |
| 429 | 25 | חרגתם מהבקשות שלכם לדקה. המתינו Retry-After שניות. |
הרשימה המלאה בעמוד שגיאות, ומגבלות לכל מסלול בעמוד מגבלות קצב.
הערות מעשיות
- שמרו את ה-
idואת ה-imdb_idיחד. כל אחד מהם מוצא את הסרט שוב דרך חיפוש לפי מזהה חיצוני. - בקשו את השפה שאתם מציגים. שדה טקסט יכול להיות ריק כשאין תרגום בשפה הזו, ולכן בדקו אם יש מחרוזת ריקה ובקשו שוב ב-
en-USאם אתם צריכים גיבוי. - שמרו פרטים במטמון בצד שלכם למשך כמה שעות. מטמון השרת כבר מחזיק אותם 6 שעות, ולכן מטמון לקוח קצר יותר לא מרוויח דבר.
- כדי להציג רשימות סרטים במקום לקרוא סרט אחד, ראו חיפוש, גילוי וטרנדים ורשימות.