Ce îți poate și ce nu îți poate da o alternativă

Kinopoisk este un site de filme în limba rusă și nu publică un API deschis general. Dezvoltatorii folosesc adesea în schimb servicii terțe, fiecare cu termenii proprii, așa că vezi documentația lor. amodb este un API independent și nu un serviciu Kinopoisk. Acoperă trei nevoi pe care le au adesea proiectele în limba rusă: titluri și descrieri în rusă, o căutare după ID Kinopoisk și scorul Kinopoisk lângă alte scoruri, acolo unde se cunoaște.

Elemente de bază

Ai nevoie deCumCe se întoarce
Titlu și descriere în rusălanguage=ru-RU la orice apel de detaliititle în rusă, original_title neschimbat
Un titlu dintr-un ID KinopoiskGET /3/find/361?external_source=kinopoisk_idmovie_results cu ID-ul 550
ID-ul Kinopoisk al unui titluGET /3/movie/550/external_idskinopoisk_id ca șir, aici "361"
Scorul KinopoiskGET /3/movie/550/ratingskinopoisk cu value și votes, sau null
Text în ucraineană sau belarusălanguage=uk-UA sau language=be-BYCâmpuri localizate, în engleză unde nu există

Blocul următor arată un răspuns de detalii în rusă cu append_to_response=ratings. Este un răspuns real pentru Fight Club (ID 550), tăiat la câmpurile folosite aici și cu descrierea scurtată.

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

Obiectul ratings listează mereu aceleași cinci chei. Aici scorul Kinopoisk este 8.7, iar votes este null, deci numărul de voturi Kinopoisk nu poate fi luat de-a gata. Detaliile sunt pe pagina evaluări.

Comparația funcțiilor

FuncțieKinopoiskamodb
Model de prețFără API deschis general, vezi documentația lor pentru serviciile terțePlătit în avans, 1 până la 24 de luni pe achiziție
Nivel gratuitVezi documentația lorNiciunul, și fără perioadă de probă
AutentificareVezi documentația lorapi_key sau antet Bearer
Format de răspunsVezi documentația lorJSON în structura TMDB v3
LimbiSite în limba rusă14 limbi de interfață, printre ele rusa
FilmePe siteDetalii, credite, imagini, videoclipuri
TVPe siteSeriale, sezoane și episoade
PersoanePe siteProfiluri și filmografie
ImaginiPe siteimg.amodb.dev, fără cheie
EvaluăriPropriul scor al publicului pe siteScorul Kinopoisk plus alte patru surse, unde se știu
Limită de cereriVezi documentația lor20, 40 sau 120 pe minut pe cheie
Utilizare comercialăVezi documentația lorPlanuri cu plată, vezi prețuri
CompatibilitateFără API deschis general, vezi documentația lorCitiri TMDB v3 și OMDb

Prin ce diferă amodb

  • Un contract documentat. Căile, parametrii, corpurile de eroare și limitele sunt scrise, iar o singură cheie servește fiecare endpoint.
  • Rusa alături de alte limbi. Același apel cu altă valoare language dă aceleași câmpuri în altă limbă. Asta ajută când publicul tău citește rusă, ucraineană și engleză.
  • Mai multe scoruri într-un singur obiect. Poți arăta scorul Kinopoisk lângă IMDb, Metacritic și Rotten Tomatoes, fiecare null când este necunoscut.
  • Titlurile originale se păstrează. original_title și original_name conțin titlul în limba sursă, inclusiv japoneza și coreeana, chiar dacă acestea nu sunt limbi de interfață.

Când Kinopoisk se potrivește mai bine

  • Comunitatea însăși. Recenziile, listele, paginile utilizatorilor și discuțiile locale se află pe site. amodb nu oferă nimic din asta, doar scorul unde se cunoaște.
  • Tot ce depășește metadatele. Pentru conținut care nu este un câmp de metadate, folosește site-ul însuși. Un API de metadate nu îl poartă.
  • Propriul scor al publicului. Valoarea se produce acolo prima dată. În amodb poate fi null pentru un titlu nou sau puțin cunoscut, iar numărul de voturi poate fi null chiar și când scorul este setat.

Migrarea la amodb

Adună ID-urile Kinopoisk pe care le stochezi, potrivește-le o singură dată cu /3/find și păstrează ID-ul numeric amodb lângă ele. După aceea, cere detaliile în rusă și citește scorul din același răspuns.

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

Un array movie_results gol înseamnă nicio potrivire pentru acel ID. Un ID Kinopoisk de serial umple în schimb tv_results, deci citește ambele array-uri când nu știi felul. Tratează un 429 așteptând Retry-After secunde. Lista de limbi este la limbi, iar regulile de căutare sunt la căutare după ID extern.

Tratează golurile din textul în rusă

Un câmp de text poate fi gol când nu există traducere în rusă pentru un titlu. Verifică dacă este un șir gol și cere din nou acel titlu cu language=en-US. Pentru postere cu litere rusești, apelează /3/movie/550/images?include_image_language=ru,null și alege din posters. Valoarea null păstrează în listă grafica fără text. Vezi imagini pentru dimensiuni.

Prețuri

amodb nu are nivel gratuit. Plătești în avans 1, 3, 6, 12 sau 24 de luni pe unul dintre trei planuri, iar o perioadă mai lungă costă cu 10, 20, 30 sau 40 la sută mai puțin. Planurile permit 20, 40 sau 120 de cereri pe minut, întorc aceleași date și nu se reînnoiesc automat. Sumele sunt la prețuri.