Co może dać alternatywa, a czego nie
Kinopoisk to rosyjskojęzyczny serwis filmowy i nie publikuje ogólnego otwartego API. Programiści często używają zamiast tego usług stron trzecich, każdej z własnymi warunkami, więc sprawdź ich dokumentację. amodb to niezależne API, a nie usługa Kinopoisk. Pokrywa trzy potrzeby, które często mają projekty rosyjskojęzyczne: tytuły i opisy po rosyjsku, wyszukiwanie po ID z Kinopoisk oraz wynik Kinopoisk obok innych wyników tam, gdzie jest znany.
Elementy składowe
| Czego potrzebujesz | Jak | Co wraca |
|---|---|---|
| Rosyjski tytuł i opis | language=ru-RU w dowolnym wywołaniu szczegółów | title po rosyjsku, original_title bez zmian |
| Tytuł z ID z Kinopoisk | GET / | movie_results z ID 550 |
| ID z Kinopoisk tytułu | GET / | kinopoisk_id jako ciąg, tu "361" |
| Wynik Kinopoisk | GET / | kinopoisk z value i votes albo null |
| Tekst ukraiński lub białoruski | language=uk-UA lub language=be-BY | Zlokalizowane pola, po angielsku tam, gdzie żadnych nie ma |
Następny blok pokazuje jedną odpowiedź szczegółów po rosyjsku z append_. To prawdziwa odpowiedź dla Fight Club (ID 550), przycięta do użytych tu pól i ze skróconym opisem.
{
"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
}
}
}Obiekt ratings zawsze wymienia te same pięć kluczy. Wynik Kinopoisk to tu 8.7, a jego votes ma wartość null, więc liczby głosów Kinopoisk nie można brać za pewnik. Szczegóły są na stronie oceny.
Porównanie funkcji
| Funkcja | Kinopoisk | amodb |
|---|---|---|
| Model cenowy | Brak ogólnego otwartego API, dla usług stron trzecich sprawdź ich dokumentację | Przedpłata, od 1 do 24 miesięcy na zakup |
| Darmowy plan | Sprawdź ich dokumentację | Brak, ani wersji próbnej |
| Uwierzytelnianie | Sprawdź ich dokumentację | api_key lub nagłówek Bearer |
| Format odpowiedzi | Sprawdź ich dokumentację | JSON w kształcie TMDB v3 |
| Języki | Rosyjskojęzyczny serwis | 14 języków interfejsu, w tym rosyjski |
| Filmy | W serwisie | Szczegóły, obsada, obrazy, wideo |
| Seriale | W serwisie | Seriale, sezony i odcinki |
| Osoby | W serwisie | Profile i filmografia |
| Obrazy | W serwisie | img.amodb.dev, klucz niepotrzebny |
| Oceny | Własny wynik publiczności w serwisie | Wynik Kinopoisk plus cztery inne źródła, gdy znane |
| Limit żądań | Sprawdź ich dokumentację | 20, 40 lub 120 na minutę na klucz |
| Użycie komercyjne | Sprawdź ich dokumentację | Płatne plany, zobacz cennik |
| Zgodność | Brak ogólnego otwartego API, sprawdź ich dokumentację | Odczyty TMDB v3 i OMDb |
Czym amodb się różni
- Udokumentowany kontrakt. Ścieżki, parametry, treści błędów i limity są spisane, a jeden klucz obsługuje każdy endpoint.
- Rosyjski obok innych języków. To samo wywołanie z inną wartością
languagedaje te same pola w innym języku. To pomaga, gdy twoi odbiorcy czytają po rosyjsku, ukraińsku i angielsku. - Kilka wyników w jednym obiekcie. Wynik Kinopoisk możesz pokazać obok IMDb, Metacritic i Rotten Tomatoes, każdy z
null, gdy nieznany. - Zachowane tytuły oryginalne.
original_titleioriginal_nametrzymają tytuł w języku źródłowym, w tym po japońsku i koreańsku, choć to nie są języki interfejsu.
Kiedy Kinopoisk pasuje lepiej
- Sama społeczność. Recenzje, listy, strony użytkowników i lokalne dyskusje żyją w serwisie. amodb nie oferuje niczego z tego, tylko wynik, gdy znany.
- Wszystko poza metadanymi. Dla treści, która nie jest polem metadanych, użyj samego serwisu. API metadanych jej nie niesie.
- Własny wynik publiczności. Wartość powstaje najpierw tam. W amodb może mieć wartość
nulldla nowego lub mało znanego tytułu, a liczba głosów może mieć wartośćnull, nawet gdy wynik jest ustawiony.
Przejście na amodb
Zbierz ID z Kinopoisk, które przechowujesz, zmapuj je raz przez /3/find i trzymaj obok nich numeryczne ID amodb. Potem żądaj szczegółów po rosyjsku i odczytuj wynik z tej samej odpowiedzi.
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")Pusta tablica movie_results oznacza brak dopasowania dla tego ID. ID serialu z Kinopoisk wypełnia zamiast tego tv_results, więc czytaj obie tablice, gdy nie znasz rodzaju. Przy 429 poczekaj Retry-After sekund. Lista języków jest na stronie języki, a zasady wyszukiwania na stronie wyszukiwanie po zewnętrznym ID.
Obsługa luk w tekście rosyjskim
Pole tekstowe może być puste, gdy dla tytułu nie istnieje rosyjskie tłumaczenie. Sprawdź pusty ciąg i zażądaj tego jednego tytułu ponownie z language=en-US. Dla plakatów z rosyjskim napisem wywołaj / i wybieraj z posters. Wartość null zostawia na liście grafiki bez tekstu. Rozmiary zobacz w obrazy.
Cennik
amodb nie ma darmowego planu. Przedpłacasz 1, 3, 6, 12 lub 24 miesiące na jednym z trzech planów, a dłuższy okres kosztuje o 10, 20, 30 lub 40 procent mniej. Plany dopuszczają 20, 40 lub 120 żądań na minutę, zwracają te same dane i nie odnawiają się automatycznie. Kwoty są na stronie cennik.