Какво може и какво не може да ви даде една алтернатива
Kinopoisk е рускоезичен сайт за кино и няма общо отворено API. Разработчиците често ползват вместо това външни услуги, всяка със свои условия, затова вижте документацията им. amodb е независимо API, а не услуга на Kinopoisk. Покрива три нужди, които рускоезичните проекти често имат: заглавия и описания на руски, търсене по Kinopoisk id и оценката на Kinopoisk до другите оценки, където е известна.
Градивни елементи
| От какво имате нужда | Как | Какво се връща |
|---|---|---|
| Руско заглавие и описание | language=ru-RU при всяко извикване за детайли | title на руски, original_title без промяна |
| Заглавие по Kinopoisk id | GET / | movie_results с id 550 |
| Kinopoisk id на заглавие | GET / | kinopoisk_id като низ, тук "361" |
| Оценката на Kinopoisk | GET / | kinopoisk с value и votes, или null |
| Текст на украински или беларуски | language=uk-UA или language=be-BY | Локализирани полета, английски там, където няма |
Следващият блок показва един отговор за детайли на руски с append_. Това е истински отговор за Fight Club (id 550), съкратен до използваните тук полета и със съкратено описание.
{
"id": 550,
"original_title": "Fight Club",
"overview": "Сотрудник страховой компании страдает хронической бессонницей и отчаянно пытается вырваться из му...",
"release_date": "1999-10-15",
"tagline": "«Интриги. Хаос. Мыло»",
"title": "Бойцовский клуб",
"ratings": {
"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
}
}
}Обектът ratings винаги изброява същите пет ключа. Тук оценката на Kinopoisk е 8.7, а нейното votes е null, така че броят гласове на Kinopoisk не може да се приема за даденост. Подробности има на страницата рейтинги.
Сравнение на функциите
| Функция | Kinopoisk | amodb |
|---|---|---|
| Модел на цените | Няма общо отворено API, за външни услуги вижте документацията им | Предплатен, от 1 до 24 месеца на покупка |
| Безплатен план | Вижте документацията им | Няма, и няма пробен период |
| Удостоверяване | Вижте документацията им | api_key или заглавка Bearer |
| Формат на отговора | Вижте документацията им | JSON във формата на TMDB v3 |
| Езици | Рускоезичен сайт | 14 езика на интерфейса, сред тях руски |
| Филми | На сайта | Детайли, участници, изображения, видеа |
| Сериали | На сайта | Сериали, сезони и епизоди |
| Личности | На сайта | Профили и филмография |
| Изображения | На сайта | img.amodb.dev, не е нужен ключ |
| Рейтинги | Собствена оценка на зрителите на сайта | Оценката на Kinopoisk плюс още четири източника, където са известни |
| Лимит на заявките | Вижте документацията им | 20, 40 или 120 в минута на ключ |
| Търговска употреба | Вижте документацията им | Платени планове, вижте цени |
| Съвместимост | Няма общо отворено API, вижте документацията им | Четене по TMDB v3 и OMDb |
С какво се различава amodb
- Документиран договор. Пътищата, параметрите, телата на грешките и лимитите са описани, а един ключ обслужва всеки ендпойнт.
- Руски до други езици. Същото извикване с друга стойност на
languageдава същите полета на друг език. Това помага, когато аудиторията ви чете руски, украински и английски. - Няколко оценки в един обект. Можете да покажете оценката на Kinopoisk до IMDb, Metacritic и Rotten Tomatoes, всяка
null, когато е неизвестна. - Оригиналните заглавия се пазят.
original_titleиoriginal_nameдържат заглавието на езика на източника, включително японски и корейски, макар да не са езици на интерфейса.
Къде Kinopoisk пасва по-добре
- Самата общност. Ревюта, списъци, потребителски страници и местни дискусии живеят на сайта. amodb не предлага нищо от това, само оценката, където е известна.
- Всичко отвъд метаданните. За съдържание, което не е поле с метаданни, ползвайте самия сайт. API за метаданни не го носи.
- Собствената оценка на зрителите. Стойността се произвежда първо там. В amodb тя може да е
nullза ново или малко познато заглавие, а броят гласове може да еnull, дори когато оценката е зададена.
Миграция към amodb
Съберете Kinopoisk id, които пазите, съпоставете ги веднъж през /3/find и пазете числовото id от amodb до тях. После искайте детайли на руски и четете оценката от същия отговор.
import os
import requests
KEY = os.environ["AMODB_KEY"]
BASE = "https://api.amodb.dev/3"
HEADERS = {"Authorization": f"Bearer {KEY}"}
def get(path, **params):
r = requests.get(BASE + path, params=params, headers=HEADERS, timeout=10)
r.raise_for_status()
return r.json()
found = get("/find/361", external_source="kinopoisk_id")
movie_id = found["movie_results"][0]["id"]
movie = get(f"/movie/{movie_id}", language="ru-RU", append_to_response="ratings")
kp = movie["ratings"]["kinopoisk"]
print(movie["title"], "/", movie["original_title"])
print("Kinopoisk:", kp["value"] if kp else "not known")Празен масив movie_results означава, че няма съвпадение за това id. Kinopoisk id на сериал попълва вместо това tv_results, така че четете и двата масива, когато не знаете вида. При 429 изчакайте Retry-After секунди. Списъкът с езици е на страницата езици, а правилата за търсене са на страницата търсене по външен идентификатор.
Как да се справите с пропуски в руския текст
Текстово поле може да е празно, когато за заглавието няма превод на руски. Проверете за празен низ и поискайте това заглавие отново с language=en-US. За постери с руски надписи извикайте / и изберете от posters. Стойността null оставя в списъка изображения без текст. Вижте изображения за размерите.
Цени
amodb няма безплатен план. Плащате предварително за 1, 3, 6, 12 или 24 месеца по един от три плана, а по-дълъг период струва 10, 20, 30 или 40 процента по-малко. Плановете позволяват 20, 40 или 120 заявки в минута, връщат едни и същи данни и не се подновяват автоматично. Сумите са на страницата с цените.