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