Какво може и какво не може да ви даде една алтернатива

Kinopoisk е рускоезичен сайт за кино и няма общо отворено API. Разработчиците често ползват вместо това външни услуги, всяка със свои условия, затова вижте документацията им. amodb е независимо API, а не услуга на Kinopoisk. Покрива три нужди, които рускоезичните проекти често имат: заглавия и описания на руски, търсене по Kinopoisk id и оценката на Kinopoisk до другите оценки, където е известна.

Градивни елементи

От какво имате нуждаКакКакво се връща
Руско заглавие и описаниеlanguage=ru-RU при всяко извикване за детайлиtitle на руски, original_title без промяна
Заглавие по Kinopoisk idGET /3/find/361?external_source=kinopoisk_idmovie_results с id 550
Kinopoisk id на заглавиеGET /3/movie/550/external_idskinopoisk_id като низ, тук "361"
Оценката на KinopoiskGET /3/movie/550/ratingskinopoisk с value и votes, или null
Текст на украински или беларускиlanguage=uk-UA или language=be-BYЛокализирани полета, английски там, където няма

Следващият блок показва един отговор за детайли на руски с append_to_response=ratings. Това е истински отговор за Fight Club (id 550), съкратен до използваните тук полета и със съкратено описание.

JSON
{
  "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 не може да се приема за даденост. Подробности има на страницата рейтинги.

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

ФункцияKinopoiskamodb
Модел на ценитеНяма общо отворено 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 до тях. После искайте детайли на руски и четете оценката от същия отговор.

Python
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. За постери с руски надписи извикайте /3/movie/550/images?include_image_language=ru,null и изберете от posters. Стойността null оставя в списъка изображения без текст. Вижте изображения за размерите.

Цени

amodb няма безплатен план. Плащате предварително за 1, 3, 6, 12 или 24 месеца по един от три плана, а по-дълъг период струва 10, 20, 30 или 40 процента по-малко. Плановете позволяват 20, 40 или 120 заявки в минута, връщат едни и същи данни и не се подновяват автоматично. Сумите са на страницата с цените.