API פרטי סרט

נקודת הקצה של פרטי סרט מחזירה סרט לפי מזהה ב-GET /3/movie/{movie_id}. ה-JSON זהה ל-TMDB v3, ולכן לקוחות קיימים צריכים רק כתובת בסיס חדשה. הוסיפו append_to_response כדי לקבל בבקשה אחת קרדיטים, סרטונים, תמונות והרחבות של amodb: דירוגים, מצבי רוח, פסקולים, wikidata וזמני הקרנה.

עודכן צפייה כ-Markdown

קבלת פרטי סרט

GET /3/movie/{movie_id} מחזיר את רשומת הליבה של סרט אחד: כותרות, תקציר, משך, ז'אנרים, תאריך יציאה, תקציב, הכנסות, חברות הפקה ונתיבי תמונות. המזהה הוא אותו מזהה מספרי ש-TMDB משתמש בו, ולכן סרט ששמרתם כ-550 נשאר עם המזהה הזה כאן.

הדוגמה שלמטה מבקשת את הסרט באנגלית ומצרפת את הדירוגים שלו באותה קריאה.

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

פרמטרים

  • movie_idנתיבחובה
    מזהה סרט מספרי, למשל 550.
  • api_keyשאילתהאחד משניים
    המפתח שלכם. השתמשו בו או בכותרת Authorization: Bearer.
  • languageשאילתה
    תגית TMDB כמו en-US, ru-RU או pt-BR. מוגשות 14 שפות בסיס. ברירת מחדל en-US.
  • append_to_responseשאילתה
    עד 20 משאבי משנה מופרדים בפסיקים שימוזגו לתגובה.

שדות התגובה

שדהסוגהערות
idintegerמזהה הסרט.
imdb_idstring או nullמזהה IMDb כמו tt0137523.
title, original_titlestringכותרת מתורגמת וכותרת מקורית.
original_languagestringקוד שפה כמו en.
overview, taglinestringטקסט מתורגם, ריק כשאין תרגום.
homepagestringאתר רשמי, ריק כשלא ידוע.
release_datestringYYYY-MM-DD, ריק כשלא ידוע.
statusstringמצב יציאה, למשל Released או In Production.
runtimeintegerדקות.
budget, revenueintegerדולרים אמריקאיים, 0 כשלא ידוע.
genresarrayאובייקטים עם id ו-name.
belongs_to_collectionobject או nullid, name, poster_path, backdrop_path. ראו אוספים.
production_companiesarrayid, logo_path, name, origin_country.
production_countriesarrayiso_3166_1, name.
spoken_languagesarrayenglish_name, iso_639_1, name.
origin_countryarrayקודי מדינה כמו US.
poster_path, backdrop_pathstring או nullמצרפים ל-https://img.amodb.dev/t/p/{size}. ראו תמונות.
popularitynumberציון יחסי שמשמש את רשימת הפופולריים.
vote_average, vote_countnumber, integerציון משתמשים מצטבר.
adult, videobooleanשניהם false. כותרים למבוגרים לא מוגשים לעולם.

תגובה לדוגמה

GET /3/movie/550?language=en-US&append_to_response=ratings, עם מערכים וטקסט ארוכים שקוצרו:

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

בלוק 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://api.amodb.dev/3 ואת הפרמטר language.

שיטה ונתיבמה מוחזרפרמטרים נוספים
GET /movie/{movie_id}/alternative_titles{id, titles}, לעיתים קרובות מערך ריקאין
GET /movie/{movie_id}/release_datesתאריכי יציאה ודירוגי גיל לפי מדינהאין
GET /movie/{movie_id}/recommendationsרשימה של 20 סרטים מומלציםאין
GET /movie/{movie_id}/similarרשימה של 20 סרטים דומיםאין
GET /movie/{movie_id}/reviewsresults ריק ברוב הכותריםאין
GET /movie/{movie_id}/listsרשימות ציבוריות שמכילות את הסרטpage
GET /movie/{movie_id}/watch/providersספקי סטרימינג והשכרה לפי מדינהאין
GET /movie/latestרשומת הסרט החדשה ביותר שנוספהאין

רשימות ההמלצות והדומים תמיד מחזירות עמוד 1 עם 20 פריטים. תגובת lists מדורגת עם page, 20 רשימות בעמוד. רשימות מדורגות במקומות אחרים ב-API מקבלות page מ-1 עד 500.

לקרדיטים, תמונות, סרטונים, תרגומים, מילות מפתח ומזהים חיצוניים יש עמודים משלהם: קרדיטים, תמונות, סרטונים וטריילרים, תרגומים, מילות מפתח וחיפוש לפי מזהה חיצוני. amodb לא מציע את נתיבי changes של TMDB.

שגיאות

שגיאות משתמשות בגוף של TMDB, למשל {"success": false, "status_code": 34, "status_message": "The resource you requested could not be found."}.

HTTPstatus_codeמתי
4017המפתח חסר או שגוי.
40236תקופת המסלול הסתיימה.
40434אין סרט עם המזהה הזה, נתיב שאינו מוצע, או כותר למבוגרים.
40537קראתם לשיטת כתיבה כמו דירוג סרט.
42925חרגתם מהבקשות שלכם לדקה. המתינו Retry-After שניות.

הרשימה המלאה בעמוד שגיאות, ומגבלות לכל מסלול בעמוד מגבלות קצב.

הערות מעשיות

  • שמרו את ה-id ואת ה-imdb_id יחד. כל אחד מהם מוצא את הסרט שוב דרך חיפוש לפי מזהה חיצוני.
  • בקשו את השפה שאתם מציגים. שדה טקסט יכול להיות ריק כשאין תרגום בשפה הזו, ולכן בדקו אם יש מחרוזת ריקה ובקשו שוב ב-en-US אם אתם צריכים גיבוי.
  • שמרו פרטים במטמון בצד שלכם למשך כמה שעות. מטמון השרת כבר מחזיק אותם 6 שעות, ולכן מטמון לקוח קצר יותר לא מרוויח דבר.
  • כדי להציג רשימות סרטים במקום לקרוא סרט אחד, ראו חיפוש, גילוי וטרנדים ורשימות.