Skip to content

Latest commit

 

History

History
94 lines (76 loc) · 4.38 KB

README.md

File metadata and controls

94 lines (76 loc) · 4.38 KB

Shiki4py

GitHub license PyPi package version Supported python versions GitHub repo size Code style: black

Асинхронный клиент для взаимодействия с api Shikimori, написанный на Python 3.7 c использованием asyncio и aiohttp.

Особенности

  • Асинхронность
  • Поддержка api v1 и v2
  • Ограничения 5rps и 90rpm
  • Повторная отправка запроса с экспоненциальной отсрочкой при ошибке 429
  • OAuth2 авторизация
  • Контроль срока действия токена
  • Хранение токенов в .env файле
  • Свой класс с методами для каждого ресурса api (пока только для animes, comments, users)
  • Представление json данных как python классы

Установка

pip install shiki4py

Использование

Быстрый старт

from shiki4py import Shikimori
import asyncio
import logging


logging.basicConfig(level=logging.INFO)


async def main():
    # Клиент без авторизации
    async with Shikimori("APP_NAME") as api:
        clubs = await api.users.clubs(555400)
        print(clubs)

    # Клиент с авторизацией
    api = Shikimori("APP_NAME",
                    "CLIENT_ID",
                    "CLIENT_SECRET")
    await api.open()
    # Отправляем запросы
    # await api.client.request(...)
    # await api.users.favourites(...)
    # await api.comments.show_one(...)
    # ...
    await api.close()


asyncio.run(main())

Сохранение токенов авторизации

По умолчанию клиент сохраняет токены авторизации в файле .env, но при инициализации можно выбрать другой вариант хранения токенов, либо создать свой вариант унаследовав базовый класс и переопределив его методы.

from shiki4py import Shikimori
from shiki4py.store import BaseTokenStore
from shiki4py.store.memory import MemoryTokenStore


class MyTokenStore(BaseTokenStore):
    ...


api = Shikimori("APP_NAME",
                "CLIENT_ID",
                "CLIENT_SECRET",
                # store=MyTokenStore()
                store=MemoryTokenStore())

Зависимости

  • aiohttp - для асинхронных http запросов
  • PyrateLimiter - для ограничения частоты запросов
  • attrs - для преобразования данных json в python классы
  • cattrs - дополнение к attrs для структурирования и деструктурирования данных
  • python-dotenv - для сохранения токенов авторизации в .env файл