Асинхронный клиент для взаимодействия с 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файл
Metadata
Release files for shiki4py 2.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| Shiki4py-2.2.0.tar.gz | 14.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| Shiki4py-2.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 35.0 kB
Release files / Shiki4py-2.2.0.tar.gz
| Download URL | Shiki4py-2.2.0.tar.gz |
|---|---|
| Size | 14.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f8a2d6f9796f60f797595ffec078889a71ec44c7bb233e08ee12bd2950844c14
|
|
BLAKE2b-256 checksum How to use checksums |
2d81f0862f854d47594e0fbcd2baab53b2883e3ef9f6da8bd1d7020a4354dd7e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.1.14 CPython/3.8.12 Darwin/18.7.0
|
Release files / Shiki4py-2.2.0-py3-none-any.whl
| Download URL | Shiki4py-2.2.0-py3-none-any.whl |
|---|---|
| Size | 21.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6ed38c818adfa7f22f59dc7feb64eb20bd1fdae56ed9be6a0f033f9067067436
|
|
BLAKE2b-256 checksum How to use checksums |
df1b1d0d28ff061d4b39da2ca4379f4d7f4e573224f7100e6794f7936a7ee9e9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.1.14 CPython/3.8.12 Darwin/18.7.0
|