Документация пакета gvapi¶
Пакет gvapi это неофициальный враппер для API игры Годвилль.
Фичи:
- Создание объекта героя с соответствующими атрибутами
- Автоматическое обновление данных внутри объекта
- Отслеживание ошибок с соответствующими исключениями
- Возможность использоваться расширенного доступа с использованием токена
- Простая CLI утилита для использования данного пакета
Полезные ссылки:
Оглавление¶
Быстрый старт¶
Установка¶
Данный пакет доступен для установки из PyPi:
python3 -m pip install gvapi
Также можно установить самую последнюю версию из репозитория:
git clone https://github.com/TitaniumHocker/gvapi.git
cd gvapi
python3 -m pip install .
Пример использования¶
Простейший пример использования будет выглядеть следующим образом.
from gvapi import Hero
hero = Hero('Mars', token='awudhawiudh')
print('ЗЛ: ~{}k, КП: {:.1f}%'.format(hero.goldf, hero.bricks_percent))
Данный скрипт выведет примерное количество золота героя и количество кирпичей.
python3 simple.py
ЗЛ: 8.0k, КП: 43.0%
CLI-утилита¶
После установки данного пакета становится доступна CLI-утилита с одноименным с пакетом названием. Данная утилита предоставляет простейший интерфейс для доступа к атрибутам героя.
Описание флагов и аргументов данной утилиты доступно при вызове утилиты с флагом –help.
Пример использования¶
Самый простой пример использования выглядит следующим образом
$ gvapi --god "Some god" name
Some Hero
В данном примере name - это имя атрибута класса Hero.
Конфигурация¶
Утилита позволяет задавать конфигурацию по умолчанию за счет переменных окружения.
Для установки имени божества по умолчанию необходимо передать переменную окружения GVAPI_GOD.
Установить токен по умолчанию можно через переменную окружения GVAPI_TOKEN.
Данные переменные окружения могут быть заданы в конфигурационном файле используемой оболочки. Для BASH это будет ~/.bashrc, а для ZSH - ~/.zshrc. Пример установки переменных окружения в конфигурационном файле оболочки BASH представлен ниже:
export GVAPI_GOD="Some god"
export GVAPI_TOKEN="awdoja"
Особенности¶
Данная утилита при каждом своем вызове кэширует состояние объекта героя для предотвращения чрезмерного количества обращений к API. Согласно документации API Годвилля, фактически данные обновляются не чаще, чем раз в минуту, поэтому не имеет смысла обращаться к API чаще чем раз в минуту. Так же в документации можно найти предупреждение, что при слишком частом обращении к API можно получить бан.
Если кэш по какой-либо причине был поврежден, это может привести к непредвиденному поведению утилиты. Для сброса кэша достаточно вызвать утилиту с соответствующим флагом –drop-cache.
API пакета gvapi¶
Модуль gvapi.hero¶
Основной модуль пакета, в котором описан класс Hero
-
class
gvapi.hero.
Hero
(god: str, token: str = None, api_url: str = 'https://godville.net/gods/api', threshold: int = 300)¶ - Базовые классы:
object
Герой игры Годвилль
Через данный класс осуществляется доступ к данным героя.
Параметры: - god – Имя божества героя
- token – Токен для доступа к API, optional
- api_url – URL для доступа к API, optional
- threshold – Задержка обновления данных о герое в секундах, optional
-
activatables
¶ Список активируемых предметов.
Type: list
-
alignment
¶ Характер героя.
Type: str
-
arena
¶ число побед и поражений на арене.
Type: tuple
-
ark
¶ Число тварей(ж, м)
Type: tuple
-
ark_completed_at
¶ Дата постройки ковчега.
Type: str
-
aura
¶ Аура, если отсутствует - пустая строка
Type: str
-
boss_name
¶ Имя собранного в лаборатории босса.
Type: str
-
boss_power
¶ Мощь собранного в лаборатории босса.
Type: str
-
bricks
¶ Число кирпичей для храма.
Type: int
-
bricks_percent
¶ Число кирпичей для храма в процентах.
Type: float
-
clan
¶ Название гильдии героя.
Type: str
-
clan_pos
¶ Ранг героя в гильдии.
Type: str
-
diary_last
¶ Последняя запись в дневнике.
Type: str
-
distance
¶ Дистанция до столицы, при нахождении в любом городе - 0.
Type: int
-
exp
¶ Прогресс опыта.
Type: int
-
expired
¶ Флаг актуальности данных, True в случае, когда данные неакутальны.
Type: bool
-
fight_type
¶ Тип боя
Type: str
-
from_last_updated
¶ Количество секунд, прошедших с последнего обновления данных.
Type: int
-
gender
¶ Пол героя.
Type: str
-
godpower
¶ Количество праны.
Type: int
-
godpower_percent
¶ Количество праны в процентах.
Type: int
-
gold
¶ Примерное количество золота.
Type: str
-
goldf
¶ Приверное количество золота, отформатированное в тысячи.
Type: float
-
health
¶ Количество очков здоровья героя.
Type: int
-
health_percent
¶ Количество очков здоровья героя в процентах.
Type: float
-
inventory
¶ Корнеж из количества предметов в инвентаре, максимального количества предметов и количества активируемых предметов.
Type: tuple
-
inventory_max_num
¶ Максимальное количество предметов в инвентаре.
Type: int
-
inventory_num
¶ Количество предметов в инвентаре.
Type: int
-
is_alive
¶ Жив ли герой.
Type: bool
-
is_fighting
¶ Находится ли герой в бою(арена, босс, заплыв, подземка).
Type: bool
-
last_upd
¶ Время последнего обновления данных.
Type: datetime
-
level
¶ Уровень героя.
Type: int
-
lock
¶ Заблокированы ли запросы к API.
Type: bool
-
max_godpower
¶ Максимальное количество праны.
Type: int
-
max_health
¶ Максимальное количество очков здоровья героя.
Type: int
-
motto
¶ Девиз героя.
Type: str
-
name
¶ Имя героя.
Type: str
-
quest
¶ Текст текущего задания.
Type: str
-
quest_progress
¶ Процесс выполнения задания в процентах.
Type: float
-
savings
¶ Примерное число сбережений.
Type: str
-
savings_completed_at
¶ Дата окончания сбора пенсии.
Type: str
-
savingsf
¶ Отформатированное в миллионы число сбережений
Type: float
-
shop_name
¶ Название лавки, только у пенсионеров.
Type: str
-
sync
() → None¶ Синхронизировать данные
Произвести синхронизацию данных. Синхронизация производится только в случае если прошла задержка обновления данных(threshold).
-
t_level
¶ Троговый уровень.
Type: int
-
temple_completed_at
¶ Когда был достроен храм.
Type: str
-
threshold
¶ Задержка обновления данных о герое в секундах.
Type: int
-
token
¶ Токен в защищенном формате(не скрыты только последние 4 символа). Если токен не используется, то возвращает None
Type: str
-
town_name
¶ Имя города, пустая строка если в поле или в бою.
Type: str
-
wood_count
¶ Количество поленьев.
Type: int
-
words
¶ Количество слов в книге.
Type: int
Модуль gvapi.pet¶
-
class
gvapi.pet.
Pet
(hero)¶ - Базовые классы:
object
Класс питомца
Питомец героя, может существовать только как один из атрибутов героя.
Параметры: hero ( Hero
) – экземпляр класса героя, которому принадлежит данный питомец-
class_name
¶ Вид питомца.
Type: str
-
level
¶ Уровень питомца.
Type: int
-
name
¶ Имя питомца.
Type: str
-
wounded
¶ Контужен ли питомец.
Type: bool
-
Модуль gvapi.util¶
В данном модуле расположены всякие штучки, в часности декораторы необходимые
для корректной работы классов Hero
и Pet
-
gvapi.util.
syncing
(func: Callable[[Any], Any]) → Callable[[Any], Any]¶ Декоратор для принудительной синхронизации при вызове метода.
При вызове метода, обернутого в данный декоратор, произойдет принудительный вызов метода sync класса переданного метода.
Параметры: func – декорируемый метод Результат: метод, обернутый в декоратор
-
gvapi.util.
tokenized
(func: Callable[[Any], Any]) → Callable[[Any], Any]¶ Декоратор для метода, требующего использования токена.
При вызове метода, обернутого в данный декоратор, произойдет проверка на наличие токена в классе переданного метода.
Параметры: func – декорируемый метод
Результат: метод, обернутый в декоратор
Исключение: - NeedToken – в случае, если производится обращение к атрибуту, доступному только при использовании токена, без использования токена.
- InvalidToken – в случае, если токен невалиден или был сброшен.
Модуль gvapi.errors¶
Модуль с исключениями.
В данном модуле описаны исключения, использующиеся в пакете.
- Базовые классы:
gvapi.errors.GVAPIException
API недоступно.
-
exception
gvapi.errors.
GVAPIException
¶ - Базовые классы:
Exception
Общее исключение пакета. От данного исключения наследуются остальные исключения пакета.
-
exception
gvapi.errors.
InvalidToken
(token: str, message: str = 'Токен {} невалиден или был сброшен')¶ - Базовые классы:
gvapi.errors.GVAPIException
Токен невалилен или был сброшен.
-
exception
gvapi.errors.
MinThresholdException
¶ - Базовые классы:
gvapi.errors.GVAPIException
Порог обновления меньше минимального значения.
-
exception
gvapi.errors.
NeedToken
(message: str = 'Для доступа к данному атрибуту необходим токен')¶ - Базовые классы:
gvapi.errors.GVAPIException
Для доступа необходим токен.
-
exception
gvapi.errors.
TheArkIsUndone
¶ - Базовые классы:
gvapi.errors.GVAPIException
Ковчег еще не построен.
-
exception
gvapi.errors.
TheSavingsInUndone
¶ - Базовые классы:
gvapi.errors.GVAPIException
Сбережения(пенсия) еще не собраны.
-
exception
gvapi.errors.
TheTempleIsUndone
¶ - Базовые классы:
gvapi.errors.GVAPIException
Храм еще не построен.
-
exception
gvapi.errors.
UnexpectedAPIResponse
(resp: requests.models.Response, message: str = 'Непредвиденный ответ API {}: {}')¶ - Базовые классы:
gvapi.errors.GVAPIException
Непредвиденный ответ API.
-
exception
gvapi.errors.
UnknownGod
(god: str, message: str = 'Божество {} не было найдено.')¶ - Базовые классы:
gvapi.errors.GVAPIException
Бог не был найден.
Лицензия исходного кода¶
MIT License
Copyright (c) 2020 Ivan Fedorov
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the «Software»), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED «AS IS», WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.