Даныя 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 працэнтаў. Усе планы вяртаюць тыя ж даныя, нічога не прадаўжаецца само, і бясплатнага тарыфа няма. Сумы гл. на старонцы цэны.