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 potrzebujeszJakCo wraca
Rosyjski tytuł i opislanguage=ru-RU w dowolnym wywołaniu szczegółówtitle po rosyjsku, original_title bez zmian
Tytuł z ID z KinopoiskGET /3/find/361?external_source=kinopoisk_idmovie_results z ID 550
ID z Kinopoisk tytułuGET /3/movie/550/external_idskinopoisk_id jako ciąg, tu "361"
Wynik KinopoiskGET /3/movie/550/ratingskinopoisk z value i votes albo null
Tekst ukraiński lub białoruskilanguage=uk-UA lub language=be-BYZlokalizowane pola, po angielsku tam, gdzie żadnych nie ma

Następny blok pokazuje jedną odpowiedź szczegółów po rosyjsku z append_to_response=ratings. To prawdziwa odpowiedź dla Fight Club (ID 550), przycięta do użytych tu pól i ze skróconym opisem.

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

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

FunkcjaKinopoiskamodb
Model cenowyBrak ogólnego otwartego API, dla usług stron trzecich sprawdź ich dokumentacjęPrzedpłata, od 1 do 24 miesięcy na zakup
Darmowy planSprawdź ich dokumentacjęBrak, ani wersji próbnej
UwierzytelnianieSprawdź ich dokumentacjęapi_key lub nagłówek Bearer
Format odpowiedziSprawdź ich dokumentacjęJSON w kształcie TMDB v3
JęzykiRosyjskojęzyczny serwis14 języków interfejsu, w tym rosyjski
FilmyW serwisieSzczegóły, obsada, obrazy, wideo
SerialeW serwisieSeriale, sezony i odcinki
OsobyW serwisieProfile i filmografia
ObrazyW serwisieimg.amodb.dev, klucz niepotrzebny
OcenyWłasny wynik publiczności w serwisieWynik Kinopoisk plus cztery inne źródła, gdy znane
Limit żądańSprawdź ich dokumentację20, 40 lub 120 na minutę na klucz
Użycie komercyjneSprawdź 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ą language daje 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_title i original_name trzymają 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ść null dla 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.

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

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 /3/movie/550/images?include_image_language=ru,null 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.