נתוני IMDb דרך REST: התשובה הקצרה

ל-IMDb אין REST API חינמי לשימוש כללי. מערכי הנתונים הלא מסחריים שלו הם קבצים להורדה, וגישה מסחרית ניתנת ברישיון, ולכן את התנאים העדכניים ראו במסמכים שלהם. אם אתם רוצים לקרוא לנקודת קצה ב-HTTP עם מזהה IMDb ולקבל JSON בחזרה, amodb עושה זאת במסלול בתשלום. אם החוזה שלכם דורש נתונים ברישיון מ-IMDb עצמו, ההסכם הזה הוא מול IMDb ו-amodb לא מחליף אותו.

דרכים להשתמש במזהה IMDb ב-amodb

חמש קריאות מכסות את רוב הצרכים. כל אחת מתחילה ממזהה שכבר יש לכם או מסתיימת באחד.

יש לכם או רוציםקריאהמקבלים
כותר לפי מזהה IMDbGET /3/find/tt0137523?external_source=imdb_idהמערכים movie_results, tv_results, person_results
מזהה IMDb של סרטGET /3/movie/550, השדה imdb_idtt0137523 עבור Fight Club
מזהה IMDb של סדרהGET /3/tv/1396/external_idsimdb_id לצד מזהה TVDB
ציון IMDbGET /3/movie/550/ratingsimdb כ-value ו-votes, או null
רשומה בסגנון OMDbGET /omdb/?i=tt0137523imdbRating, imdbVotes, imdbID

כל שורה עובדת עם אותו מפתח. הדירוגים מתוארים בעמוד דירוגים וחיפושי מזהים בעמוד חיפוש לפי מזהה חיצוני.

קריאת ציון IMDb

נקודת הקצה של הדירוגים מחזירה את הציון ואת מספר ההצבעות יחד. זו תגובה אמיתית עבור Fight Club (מזהה 550). ציונים משתנים עם הזמן.

JSON
{
  "id": 550,
  "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
  }
}

אצל IMDb הערך value הוא בסולם 0 עד 10 עם ספרה עשרונית אחת. הציגו את מספר ההצבעות לצדו, ואל תציגו כלום כשהאובייקט הוא null. בתגובה הזו רק ל-IMDb ול-TMDB יש הצבעות. votes יכול להיות null בכל מקור, ולכן בדקו אותו לפני שאתם מציגים אותו. תגובה שנשמרה במטמון נשארת תקפה 6 שעות בקצה, ולכן בדיקה חוזרת בתדירות גבוהה יותר לא מועילה.

השוואת תכונות

תכונהIMDbamodb
מודל תמחוררישיון לגישה מסחרית, ראו במסמכים שלהםתשלום מראש, מ-1 עד 24 חודשים
מסלול חינמיאין REST API חינמי לשימוש כלליאין, וגם אין תקופת ניסיון
אימותראו במסמכים שלהםפרמטר השאילתה api_key או כותרת Bearer
פורמט תגובהקבצי מערכי נתונים להורדה, לפידים ברישיון ראו במסמכים שלהםJSON
שפותראו במסמכים שלהם14 שפות ממשק
סרטיםאת השדות ראו במסמכים שלהםפרטים, קרדיטים, תמונות, סרטונים
סדרותאת השדות ראו במסמכים שלהםסדרות, עונות, פרקים
אנשיםאת השדות ראו במסמכים שלהםפרופילים, פילמוגרפיה, תמונות
תמונותראו במסמכים שלהםimg.amodb.dev, בלי מפתח
דירוגיםהציון שלו, את דרך הגישה ראו במסמכים שלהםחמישה מקורות, ביניהם IMDb, כשהם ידועים
מגבלת קצבראו במסמכים שלהם20, 40 או 120 בקשות לדקה
שימוש מסחריברישיון, ראו במסמכים שלהםמסלולים בתשלום, ראו תמחור
תאימותפורמטים משלו, ראו במסמכים שלהםקריאות של TMDB v3 ופרוטוקול OMDb

במה amodb שונה

קוראים לנקודת קצה במקום לנתח קובץ. בקשה אחת מחזירה כותר עם השחקנים, הטריילרים והדירוגים שלו דרך append_to_response, והמבנה זהה ל-TMDB v3, ולכן ספריות לקוח קיימות עובדות. אותו מפתח משרת גם את נקודת הקצה בסגנון OMDb, וכך קוד ישן שקורא את imdbRating ממשיך לרוץ.

בלוק הדירוגים הוא אובייקט קבוע עם חמישה מפתחות. מקור שאינו ידוע הוא null, לא מפתח חסר, ולכן קוד שקורא את ratings.imdb לא צריך לבדוק קיום של האובייקט האב. מספר הצבעות יכול לבוא לצד הערך, וכך אפשר להסתיר ציון שנשען על מעט הצבעות. הוא יכול להיות גם null, כפי שהוא בשלושה מתוך חמשת המקורות בדוגמה למעלה.

מתי IMDb מתאים יותר

  • מקור הציון. IMDb מפרסם את הדירוגים שלו קודם. amodb מחזיר ערך רק כשהוא ידוע, ולכן כותר חדש או לא מוכר עלול לחזור null.
  • יכולות האתר. ביקורות משתמשים, רשימות ורשימות מעקב נמצאות באתר של IMDb. amodb הוא API למטא-נתונים ואינו מציע חשבונות משתמש.
  • נתונים ברישיון. אם שותף או חוזה דורשים נתונים ברישיון של IMDb, רק IMDb יכול לספק אותם.
  • ניתוח לא מקוון. קבצי מערכי הנתונים הלא מסחריים מתאימים למחקר מרוכז שמריצים על המחשב שלכם. את התנאים ראו במסמכים שלהם.

מעבר ל-amodb

סביר שיש בידיכם רשימה של מזהי IMDb. מפו כל מזהה למזהה amodb פעם אחת, שמרו את הזוג, ואחר כך קראו לפרטים לפי המזהה המספרי.

bashpy
curl -s "https://api.amodb.dev/3/find/tt0133093?external_source=imdb_id" \
  -H "Authorization: Bearer $AMODB_KEY"
import os
import requests

KEY = os.environ["AMODB_KEY"]
imdb_ids = ["tt0137523", "tt0133093", "tt1375666"]

for imdb_id in imdb_ids:
    r = requests.get(
        f"https://api.amodb.dev/3/find/{imdb_id}",
        params={"external_source": "imdb_id"},
        headers={"Authorization": f"Bearer {KEY}"},
        timeout=10,
    )
    r.raise_for_status()
    hits = r.json()["movie_results"]
    print(imdb_id, hits[0]["id"] if hits else None)

שלושת המזהים למעלה ממופים ל-550, 603 ו-27205, שהם Fight Club, The Matrix ו-Inception. מזהה של סדרה כמו tt0903747 חוזר ב-tv_results, שבו ל-Breaking Bad יש מזהה 1396. מערך ריק אומר שלא נמצאה התאמה למזהה הזה.

שמרו על קצב בלולאה. כל מזהה הוא בקשה אחת, ותגובת 429 כוללת כותרת Retry-After עם מספר השניות להמתנה. קודי שגיאה נוספים ראו בעמוד שגיאות.

שמירת מזהים בבטחה

  • שמרו מזהי IMDb כמחרוזות. הם מתחילים ב-tt ונושאים אפסים מובילים, כמו ב-tt0137523, וסוג מספרי מוחק את האפסים האלה.
  • שמרו את מזהה IMDb ואת מזהה amodb כזוג. כל אחד מהם מאתר את הכותר שוב.
  • קראו את tv_results לסדרות ואת movie_results לסרטים. מזהה בודד ממלא בדרך כלל מערך אחד ומשאיר את האחרים ריקים.
  • מכאן והלאה בקשו פרטים לפי מזהה amodb, כי קריאת פרטים יכולה לשאת שחקנים, טריילרים ודירוגים דרך append_to_response.

תמחור

בחרו אחד משלושה מסלולים של 20, 40 או 120 בקשות לדקה ושלמו מראש על 1, 3, 6, 12 או 24 חודשים. תקופות ארוכות יותר מקנות 10, 20, 30 או 40 אחוז הנחה. כל המסלולים מחזירים את אותם נתונים, שום דבר לא מתחדש מעצמו ואין מסלול חינמי. הסכומים מופיעים בעמוד תמחור.