Данни от IMDb през REST: краткият отговор
IMDb няма безплатно REST API с общо предназначение. Некомерсиалните му набори от данни са файлове за изтегляне, а търговският достъп е лицензиран, затова вижте документацията им за текущите условия. Ако искате да извикате HTTP ендпойнт с IMDb id и да получите JSON, amodb го прави с платен план. Ако договорът ви изисква данни, лицензирани от самия IMDb, това споразумение е с IMDb и amodb не го замества.
Начини да ползвате IMDb id в amodb
Пет извиквания покриват повечето нужди. Всяко започва от id, което вече имате, или завършва с такова.
| Имате или искате | Извикване | Получавате |
|---|---|---|
| Заглавие по IMDb id | GET / | Масиви movie_results, tv_results, person_results |
| IMDb id на филм | GET /3/movie/550, поле imdb_id | tt0137523 за Fight Club |
| IMDb id на сериал | GET / | imdb_id до id на TVDB |
| Оценката на IMDb | GET / | imdb като value и votes, или null |
| Запис в стил OMDb | GET /omdb/?i=tt0137523 | imdbRating, imdbVotes, imdbID |
Всеки ред работи със същия ключ. Рейтингите са описани на страницата рейтинги, а търсенето по id на страницата търсене по външен идентификатор.
Как да прочетете оценката на IMDb
Ендпойнтът за рейтинги връща оценката и броя гласове заедно. Това е истински отговор за Fight Club (id 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 часа на edge, така че по-честото запитване не носи полза.
Сравнение на функциите
| Функция | 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 id. Съпоставете всяко с id в amodb веднъж, запазете двойката и после викайте детайлите по числовото id.
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)Трите id по-горе се съпоставят с 550, 603 и 27205, които са Fight Club, The Matrix и Inception. Id на сериал като tt0903747 идва в tv_results, където Breaking Bad има id 1396. Празен масив означава, че за това id не е намерено съвпадение.
Контролирайте темпа на цикъла. Всяко id е една заявка, а 429 включва заглавка Retry-After със секундите за изчакване. Вижте грешки за другите кодове.
Как да пазите id надеждно
- Пазете IMDb id като низове. Те започват с
ttи носят водещи нули, както вtt0137523, а числовият тип губи тези нули. - Запазвайте IMDb id и id от amodb като двойка. Всяко от тях намира заглавието отново.
- Четете
tv_resultsза сериали иmovie_resultsза филми. Едно id обикновено попълва един масив и оставя другите празни. - Оттук нататък искайте детайли по id от amodb, защото извикването за детайли може да носи актьори, трейлъри и рейтинги чрез
append_to_response.
Цени
Изберете един от три плана за 20, 40 или 120 заявки в минута и платете предварително за 1, 3, 6, 12 или 24 месеца. По-дългите периоди дават отстъпка 10, 20, 30 или 40 процента. Всички планове връщат едни и същи данни, нищо не се подновява само и няма безплатен план. Вижте сумите на страницата с цените.