Async wrapper for unofficial KinopoiskAPI https://pypi.org/project/asyncopoisk/
Find a file
2024-01-11 11:26:22 +03:00
.github/workflows Fix workflow secrets 2024-01-11 09:35:08 +03:00
asyncopoisk Some fixes in models 2024-01-11 11:25:45 +03:00
tests Decrease staff count to test 2024-01-11 11:25:34 +03:00
.gitignore Implemente all api methods 2023-12-18 10:40:21 +03:00
LICENSE Initial commit 2023-12-18 06:13:50 +03:00
pyproject.toml Update dependencies 2024-01-11 11:26:22 +03:00
README.md Add some badges 2024-01-11 10:28:29 +03:00
requirements.txt Update requirements 2024-01-11 07:04:42 +03:00

Asyncopoisk

PyPI - License PyPI - Version PyPI - Supported versions GitHub Actions Workflow Status

Это асинхронная обертка для Kinopoisk API Unofficial. Создавалась для личного пользования, так как удобной и асинхронной обертки найти не смог. Это был мой первый опыт в написании АПИ обертки, так что PR и Issue приветствуются!

Особенности

В обертки реализованы все методы, что были описаны в документации на момент 2023.21.12 структура запросов сделана так, чтобы минимально отличаться от документации самой АПИ

Начало работы

Перед использованием asyncopoisk вам нужно получить токен. Получить его можно на сайте Kinopoisk API Unofficial

Установите Asyncopoisk

pip install asyncopoisk

Далее создайте экземпляр обертки

from asyncopoisk import KinopoiskAPI
kp = KinopoiskAPI(token="TOKEN")

Теперь с помощью kp вы можете вызывать методы АПИ.

ВАЖНО так как обертка использует асинхронную httpx сессию, вызов всех методов должен происходить асинхронно

Примеры

Получить данные о фильме по kinopoisk id

import asyncio
from asyncopoisk import KinopoiskAPI


async def main(kp_token: str, kp_id: int):
    kp = KinopoiskAPI(token=kp_token)
    # Получаем фильм по id
    film = await kp.films(kp_id)


if __name__ == "__main__":
    asyncio.run(main(kp_token="TOKEN", kp_id=841700))

Получить данные о фильме по imdb id

import asyncio
from asyncopoisk import KinopoiskAPI


async def main(kp_token: str, imdb_id: str):
    kp = KinopoiskAPI(token=kp_token)
    # Получаем фильм по imdb id
    film = await kp.films(imdb_id=imdb_id)


if __name__ == "__main__":
    asyncio.run(main(kp_token="TOKEN", imdb_id="tt3659388"))

Получить список русских сериалов с рейтингом не ниже 6.5 от 2023 года

Номера стран и жанров можно получить используя метод films.filters()

from typing import List

import asyncio
from asyncopoisk import KinopoiskAPI
from asyncopoisk.models.enums import SearchOrder, SearchFilmType


async def main(
	kp_token: str, 
    countries: List[int],
    order: SearchOrder,
    type: SearchFilmType,
    rating_from: float,
    year_from: int,
):
    kp = KinopoiskAPI(token=kp_token)
    # Поиск по фильтрам
    film = await kp.films(
        countries=countries,
        order=order,
        type=type,
        rating_from=rating_from,
        year_from=year_from,
    )


if __name__ == "__main__":
    asyncio.run(
        main(
            kp_token="TOKEN", 
            countries = [34],
            order = SearchOrder.RATING,
            type = SearchFilmType.TV_SERIES,
            rating_from = 6.5,
            year_from = 2023,
        )
    )

Поиск по ключевому слову

import asyncio
from asyncopoisk import KinopoiskAPI
from asyncopoisk.models.enums import SearchOrder, SearchFilmType


async def main(kp_token: str, keyword: str):
    kp = KinopoiskAPI(token=kp_token)
    # Поиск по ключевому слову
    result = await kp.films.search_by_keyword(keyword=keyword)


if __name__ == "__main__":
    asyncio.run(
        main(
            kp_token="2d3c7c68-b288-4fbd-84d8-ccb68e495923",
            keyword="Марсианин",
        )
    )

Зависимости