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řebujete | Jak | Co se vrátí |
|---|---|---|
| Ruský název a popis | language=ru-RU v libovolném volání detailů | title rusky, original_title beze změny |
| Titul z ID z Kinopoisku | GET / | movie_results s ID 550 |
| ID z Kinopoisku titulu | GET / | kinopoisk_id jako řetězec, zde "361" |
| Skóre Kinopoisku | GET / | kinopoisk s value a votes, nebo null |
| Ukrajinský nebo běloruský text | language=uk-UA nebo language=be-BY | Lokalizovaná pole, anglicky tam, kde žádná nejsou |
Další blok ukazuje jednu odpověď detailu rusky s append_. Je to skutečná odpověď pro Fight Club (ID 550), zkrácená na zde použitá pole a s krátkým popisem.
{
"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í
| Funkce | Kinopoisk | amodb |
|---|---|---|
| Cenový model | Žádné obecné otevřené API, u služeb třetích stran se podívejte do jejich dokumentace | Předplatné, 1 až 24 měsíců na nákup |
| Bezplatný tarif | Podívejte se do jejich dokumentace | Žádný, ani zkušební verze |
| Ověření | Podívejte se do jejich dokumentace | api_key nebo hlavička Bearer |
| Formát odpovědi | Podívejte se do jejich dokumentace | JSON ve tvaru TMDB v3 |
| Jazyky | Ruskojazyčný web | 14 jazyků rozhraní, mezi nimi ruština |
| Filmy | Na webu | Detaily, obsazení, obrázky, videa |
| Seriály | Na webu | Seriály, sezóny a epizody |
| Osoby | Na webu | Profily a filmografie |
| Obrázky | Na webu | img.amodb.dev, klíč není potřeba |
| Hodnocení | Vlastní skóre publika na webu | Skóre Kinopoisku plus čtyři další zdroje, kde jsou známé |
| Limit požadavků | Podívejte se do jejich dokumentace | 20, 40 nebo 120 za minutu na klíč |
| Komerční užití | Podívejte se do jejich dokumentace | Placené 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
languagedá 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_titleaoriginal_namedrží 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
nullu nového nebo málo známého titulu a počet hlasů může býtnull, 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.
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 / 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.