This repository was archived by the owner on Sep 25, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Мигрирование с v1 на v2
Uladzislau Hramyka edited this page Mar 6, 2023
·
6 revisions
Данный гайд по миграции более неактуален для версии 2.2.0 и выше. Узнать о том, как пользоваться обновленной библиотекой можно из примера кода в README
Для миграции с версии 1.x.x на версию 2.x.x нужно выполнить несколько действий:
- Добавить импорт
asyncio
и создать функциюasync def main(): ...
для запуска асинхронного кода
import asyncio
async def main():
...
asyncio.run(main())
- Переименовать класс
API
вShikimoriAPI
from shikithon import ShikimoriAPI
...
shikimori = ShikimoriAPI(config)
- Выбрать режим использования API:
from shikithon import ShikimoriAPI
app_name = "..."
config = {"app_name": ..., ...}
# "Ограниченный" режим (без кода авторизации):
async def main():
async with ShikimoriAPI(app_name) as shikimori:
# вызов методов...
# Обычный режим
async def main():
# Инициализация объекта API
shikimori = ShikimoriAPI(config)
# Запуск сессии (новое в 2.x.x)
await shikimori.open()
# вызов методов...
# Закрытие сессии (новое в 2.x.x)
await shikimori.close()
asyncio.run(main())
- Изменить формат вызовов методов
# Теперь у объекта ShikimoriAPI есть объекты API ресурсов, которые хранят в себе конкретные методы для каждого ресурса
# Названия взяты с https://shikimori.one/api/doc и https://shikimori.one/api/doc/1.0
# Структура: await [название объекта API].[название API ресурса].[название метода API ресурса]()
# Пример:
# Получение данных текущего пользователя через /users/whoami (Версия 1.x.x)
user = shikimori.current_user()
# Получение данных текущего пользователя через /users/whoami (Версия 2.x.x)
user = await shikimori.users.current()
---
# Получение достижений пользователя через /achievements (Версия 1.x.x)
user_achievements = shikimori.achievements(user.id)
# Получение достижений пользователя через /achievements (Версия 2.x.x)
user_achievements = await shikimori.achievements.get(user.id)
Новые функции, в версии 2.x.x:
- Отключение логгирования
shikithon = ShikimoriAPI(config, logging=False)
# или
async with ShikimoriAPI(app_name, logging=False) as shikimori:
- Вызов нескольких методов сразу
chainsaw, lycoris_chisato, lycoris_ranobe = await shikimori.multiple_requests([
shikimori.animes.get_all(search="Бензопила"),
shikimori.characters.search("Тисато Нисикиги"),
shikimori.ranobes.get_all(search="Ликорис"),
])
print(chainsaw)
print(lycoris_chisato[:1])
print(lycoris_ranobe)
# вывод...
async with ShikimoriAPI(app_name) as shikimori:
lycoris_ranobe, = await shikimori.multiple_requests([
shikimori.ranobes.get_all(search="Ликорис")
])
print(lycoris_ranobe)
# вывод...