Co alternativa dokáže a co ne

Kinopoisk je ruskojazyčný filmový web a nezveřejňuje obecné otevřené API. Vývojáři často místo toho používají služby třetích stran, každou s vlastními podmínkami, podívejte se proto do jejich dokumentace. amodb je nezávislé API, ne služba Kinopoisku. Pokrývá tři potřeby, které ruskojazyčné projekty často mají: názvy a popisy rusky, vyhledání podle ID z Kinopoisku a skóre Kinopoisku vedle dalších skóre tam, kde je známé.

Stavební kameny

Co potřebujeteJakCo se vrátí
Ruský název a popislanguage=ru-RU v libovolném volání detailůtitle rusky, original_title beze změny
Titul z ID z KinopoiskuGET /3/find/361?external_source=kinopoisk_idmovie_results s ID 550
ID z Kinopoisku tituluGET /3/movie/550/external_idskinopoisk_id jako řetězec, zde "361"
Skóre KinopoiskuGET /3/movie/550/ratingskinopoisk s value a votes, nebo null
Ukrajinský nebo běloruský textlanguage=uk-UA nebo language=be-BYLokalizovaná pole, anglicky tam, kde žádná nejsou

Další blok ukazuje jednu odpověď detailu rusky s append_to_response=ratings. Je to skutečná odpověď pro Fight Club (ID 550), zkrácená na zde použitá pole a s krátkým popisem.

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
    }
  }
}

Objekt ratings vždy uvádí stejných pět klíčů. Skóre Kinopoisku je zde 8.7 a jeho votes je null, počet hlasů Kinopoisku proto nelze brát jako samozřejmost. Podrobnosti jsou na stránce hodnocení.

Srovnání funkcí

FunkceKinopoiskamodb
Cenový modelŽádné obecné otevřené API, u služeb třetích stran se podívejte do jejich dokumentacePředplatné, 1 až 24 měsíců na nákup
Bezplatný tarifPodívejte se do jejich dokumentaceŽádný, ani zkušební verze
OvěřeníPodívejte se do jejich dokumentaceapi_key nebo hlavička Bearer
Formát odpovědiPodívejte se do jejich dokumentaceJSON ve tvaru TMDB v3
JazykyRuskojazyčný web14 jazyků rozhraní, mezi nimi ruština
FilmyNa webuDetaily, obsazení, obrázky, videa
SeriályNa webuSeriály, sezóny a epizody
OsobyNa webuProfily a filmografie
ObrázkyNa webuimg.amodb.dev, klíč není potřeba
HodnoceníVlastní skóre publika na webuSkóre Kinopoisku plus čtyři další zdroje, kde jsou známé
Limit požadavkůPodívejte se do jejich dokumentace20, 40 nebo 120 za minutu na klíč
Komerční užitíPodívejte se do jejich dokumentacePlacené tarify, viz ceník
KompatibilitaŽádné obecné otevřené API, podívejte se do jejich dokumentaceČtení TMDB v3 a OMDb

V čem se amodb liší

  • Zdokumentovaná smlouva. Cesty, parametry, těla chyb a limity jsou sepsané a jeden klíč obsluhuje každý endpoint.
  • Ruština vedle jiných jazyků. Stejné volání s jinou hodnotou language dá stejná pole v jiném jazyce. To pomáhá, když vaše publikum čte rusky, ukrajinsky a anglicky.
  • Několik skóre v jednom objektu. Skóre Kinopoisku můžete zobrazit vedle IMDb, Metacritic a Rotten Tomatoes, každé null, když je neznámé.
  • Zachované původní názvy. original_title a original_name drží titul v původním jazyce, včetně japonštiny a korejštiny, i když to nejsou jazyky rozhraní.

Kdy se Kinopoisk hodí lépe

  • Komunita samotná. Recenze, seznamy, uživatelské stránky a místní diskuse žijí na webu. amodb nic z toho nenabízí, jen skóre, kde je známé.
  • Vše mimo metadata. Pro obsah, který není polem metadat, použijte web samotný. API s metadaty ho nenese.
  • Vlastní skóre publika. Hodnota vzniká nejdřív tam. V amodb může být null u nového nebo málo známého titulu a počet hlasů může být null, i když je skóre nastaveno.

Přechod na amodb

Shromážděte ID z Kinopoisku, která ukládáte, jednou je namapujte přes /3/find a číselné ID amodb držte vedle nich. Poté si vyžádejte detaily rusky a skóre čtěte ze stejné odpovědi.

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")

Prázdné pole movie_results znamená, že pro dané ID není shoda. ID seriálu z Kinopoisku naplní místo toho tv_results, čtěte proto obě pole, když druh neznáte. U 429 počkejte Retry-After sekund. Seznam jazyků je na stránce jazyky a pravidla vyhledání na stránce hledání podle externího ID.

Ošetření mezer v ruském textu

Textové pole může být prázdné, když pro titul neexistuje ruský překlad. Zkontrolujte prázdný řetězec a tento jeden titul vyžádejte znovu s language=en-US. Pro plakáty s ruským písmem zavolejte /3/movie/550/images?include_image_language=ru,null a vybírejte z posters. Hodnota null ponechá v seznamu grafiku bez textu. Velikosti viz obrázky.

Ceník

amodb nemá bezplatný tarif. Předplácíte 1, 3, 6, 12 nebo 24 měsíců u jednoho ze tří tarifů a delší období stojí o 10, 20, 30 nebo 40 procent méně. Tarify povolují 20, 40 nebo 120 požadavků za minutu, vracejí stejná data a samy se neobnovují. Částky jsou na stránce ceník.