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 de | Cum | Ce se întoarce |
|---|---|---|
| Titlu și descriere în rusă | language=ru-RU la orice apel de detalii | title în rusă, original_title neschimbat |
| Un titlu dintr-un ID Kinopoisk | GET / | movie_results cu ID-ul 550 |
| ID-ul Kinopoisk al unui titlu | GET / | kinopoisk_id ca șir, aici "361" |
| Scorul Kinopoisk | GET / | kinopoisk cu value și votes, sau null |
| Text în ucraineană sau belarusă | language=uk-UA sau language=be-BY | Câmpuri localizate, în engleză unde nu există |
Blocul următor arată un răspuns de detalii în rusă cu append_. Este un răspuns real pentru Fight Club (ID 550), tăiat la câmpurile folosite aici și cu descrierea scurtată.
{
"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ție | Kinopoisk | amodb |
|---|---|---|
| Model de preț | Fără API deschis general, vezi documentația lor pentru serviciile terțe | Plătit în avans, 1 până la 24 de luni pe achiziție |
| Nivel gratuit | Vezi documentația lor | Niciunul, și fără perioadă de probă |
| Autentificare | Vezi documentația lor | api_key sau antet Bearer |
| Format de răspuns | Vezi documentația lor | JSON în structura TMDB v3 |
| Limbi | Site în limba rusă | 14 limbi de interfață, printre ele rusa |
| Filme | Pe site | Detalii, credite, imagini, videoclipuri |
| TV | Pe site | Seriale, sezoane și episoade |
| Persoane | Pe site | Profiluri și filmografie |
| Imagini | Pe site | img.amodb.dev, fără cheie |
| Evaluări | Propriul scor al publicului pe site | Scorul Kinopoisk plus alte patru surse, unde se știu |
| Limită de cereri | Vezi documentația lor | 20, 40 sau 120 pe minut pe cheie |
| Utilizare comercială | Vezi documentația lor | Planuri cu plată, vezi prețuri |
| Compatibilitate | Fără API deschis general, vezi documentația lor | Citiri 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
languagedă 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
nullcând este necunoscut. - Titlurile originale se păstrează.
original_titleșioriginal_nameconț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
nullpentru un titlu nou sau puțin cunoscut, iar numărul de voturi poate finullchiar ș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.
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ă / ș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.