Skip to main content

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 файл

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Shiki4py-2.2.0.tar.gz (14.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

Shiki4py-2.2.0-py3-none-any.whl (21.1 kB view details)

Uploaded Python 3

File details

Details for the file Shiki4py-2.2.0.tar.gz.

File metadata

  • Download URL: Shiki4py-2.2.0.tar.gz
  • Upload date:
  • Size: 14.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.14 CPython/3.8.12 Darwin/18.7.0

File hashes

Hashes for Shiki4py-2.2.0.tar.gz
Algorithm Hash digest
SHA256 f8a2d6f9796f60f797595ffec078889a71ec44c7bb233e08ee12bd2950844c14
MD5 1547489bbdb369f7203dc873c2136b0e
BLAKE2b-256 2d81f0862f854d47594e0fbcd2baab53b2883e3ef9f6da8bd1d7020a4354dd7e

See more details on using hashes here.

File details

Details for the file Shiki4py-2.2.0-py3-none-any.whl.

File metadata

  • Download URL: Shiki4py-2.2.0-py3-none-any.whl
  • Upload date:
  • Size: 21.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.14 CPython/3.8.12 Darwin/18.7.0

File hashes

Hashes for Shiki4py-2.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6ed38c818adfa7f22f59dc7feb64eb20bd1fdae56ed9be6a0f033f9067067436
MD5 6f4364821c26ae98c2c4f9e3cd69153e
BLAKE2b-256 df1b1d0d28ff061d4b39da2ca4379f4d7f4e573224f7100e6794f7936a7ee9e9

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

2.2.0 This release

2 files

2.1.0

2 files

2.0.1

2 files

2.0.0

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.2

2 files

0.1.0

2 files

0.0.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page