נתוני IMDb דרך REST: התשובה הקצרה
ל-IMDb אין REST API חינמי לשימוש כללי. מערכי הנתונים הלא מסחריים שלו הם קבצים להורדה, וגישה מסחרית ניתנת ברישיון, ולכן את התנאים העדכניים ראו במסמכים שלהם. אם אתם רוצים לקרוא לנקודת קצה ב-HTTP עם מזהה IMDb ולקבל JSON בחזרה, amodb עושה זאת במסלול בתשלום. אם החוזה שלכם דורש נתונים ברישיון מ-IMDb עצמו, ההסכם הזה הוא מול IMDb ו-amodb לא מחליף אותו.
דרכים להשתמש במזהה IMDb ב-amodb
חמש קריאות מכסות את רוב הצרכים. כל אחת מתחילה ממזהה שכבר יש לכם או מסתיימת באחד.
| יש לכם או רוצים | קריאה | מקבלים |
|---|---|---|
| כותר לפי מזהה IMDb | GET / | המערכים movie_results, tv_results, person_results |
| מזהה IMDb של סרט | GET /3/movie/550, השדה imdb_id | tt0137523 עבור Fight Club |
| מזהה IMDb של סדרה | GET / | imdb_id לצד מזהה TVDB |
| ציון IMDb | GET / | imdb כ-value ו-votes, או null |
| רשומה בסגנון OMDb | GET /omdb/?i=tt0137523 | imdbRating, imdbVotes, imdbID |
כל שורה עובדת עם אותו מפתח. הדירוגים מתוארים בעמוד דירוגים וחיפושי מזהים בעמוד חיפוש לפי מזהה חיצוני.
קריאת ציון IMDb
נקודת הקצה של הדירוגים מחזירה את הציון ואת מספר ההצבעות יחד. זו תגובה אמיתית עבור Fight Club (מזהה 550). ציונים משתנים עם הזמן.
{
"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 שעות בקצה, ולכן בדיקה חוזרת בתדירות גבוהה יותר לא מועילה.
השוואת תכונות
| תכונה | IMDb | amodb |
|---|---|---|
| מודל תמחור | רישיון לגישה מסחרית, ראו במסמכים שלהם | תשלום מראש, מ-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 פעם אחת, שמרו את הזוג, ואחר כך קראו לפרטים לפי המזהה המספרי.
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 אחוז הנחה. כל המסלולים מחזירים את אותם נתונים, שום דבר לא מתחדש מעצמו ואין מסלול חינמי. הסכומים מופיעים בעמוד תמחור.