Данни от IMDb през REST: краткият отговор

IMDb няма безплатно REST API с общо предназначение. Некомерсиалните му набори от данни са файлове за изтегляне, а търговският достъп е лицензиран, затова вижте документацията им за текущите условия. Ако искате да извикате HTTP ендпойнт с IMDb id и да получите JSON, amodb го прави с платен план. Ако договорът ви изисква данни, лицензирани от самия IMDb, това споразумение е с IMDb и amodb не го замества.

Начини да ползвате IMDb id в amodb

Пет извиквания покриват повечето нужди. Всяко започва от id, което вече имате, или завършва с такова.

Имате или искатеИзвикванеПолучавате
Заглавие по IMDb idGET /3/find/tt0137523?external_source=imdb_idМасиви movie_results, tv_results, person_results
IMDb id на филмGET /3/movie/550, поле imdb_idtt0137523 за Fight Club
IMDb id на сериалGET /3/tv/1396/external_idsimdb_id до id на TVDB
Оценката на IMDbGET /3/movie/550/ratingsimdb като value и votes, или null
Запис в стил OMDbGET /omdb/?i=tt0137523imdbRating, imdbVotes, imdbID

Всеки ред работи със същия ключ. Рейтингите са описани на страницата рейтинги, а търсенето по id на страницата търсене по външен идентификатор.

Как да прочетете оценката на IMDb

Ендпойнтът за рейтинги връща оценката и броя гласове заедно. Това е истински отговор за Fight Club (id 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 часа на edge, така че по-честото запитване не носи полза.

Сравнение на функциите

Функция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 id. Съпоставете всяко с id в amodb веднъж, запазете двойката и после викайте детайлите по числовото id.

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)

Трите 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 процента. Всички планове връщат едни и същи данни, нищо не се подновява само и няма безплатен план. Вижте сумите на страницата с цените.