Документация пакета gvapi

Пакет gvapi это неофициальный враппер для API игры Годвилль.

Фичи:

  • Создание объекта героя с соответствующими атрибутами
  • Автоматическое обновление данных внутри объекта
  • Отслеживание ошибок с соответствующими исключениями
  • Возможность использоваться расширенного доступа с использованием токена

Полезные ссылки:

Оглавление

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

Установка

Данный пакет доступен для установки из 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%

API пакета gvapi

Модуль gvapi.hero

class gvapi.hero.Hero(god: str, token: str = None, api_url: str = 'https://godville.net/gods/api', threshold: int = 300)
Базовые классы: object

Основной класс пакета.

Через данный класс осуществляется доступ к данным героя.

god

Имя бога.

Type:str
base_url

URL для доступа к API.

Type:str
data

Словарь с последними полученными данными.

Type:dict
pet

Экземпляр класса Pet, описывающий питомца.

Type:Pet
Параметры:
  • god (str) – Имя бога.
  • token (str, optional) – Токен для доступа к API. Если не указан, то обращение производится к открытому API.
  • api_url (str, optional) – URL для доступа к API. Если не указан, то используется https://godville.net/gods/api.
  • threshold (int, optional) – Задержка обновления данных о герое в секундах, по умолчанию 300 секунд или 5 минут. Данный параметр не может быть меньше 60(1 минута).
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

gvapi.util.syncing(func: Callable[[Any], Any]) → Callable[[Any], Any]

Декоратор для принудительной синхронизации при вызове метода.

Параметры:func (func) – Декорируемая функция.
Результат:Функция, обернутая в декоратор.
Тип результата:func
gvapi.util.tokenized(func: Callable[[Any], Any]) → Callable[[Any], Any]

Декоратор для метода, требующего использования токена.

Параметры:

func (func) – Декорируемая функция.

Результат:

Функция, обернутая в декоратор.

Тип результата:

func

Raises:
  • NeedToken – в случае, если производится обращение к атрибуту, доступнопу только при использовании токена, без использования токена.
  • InvalidToken – в случае, если токен был сброшен.

Модуль gvapi.errors

Модуль с исключениями.

В данном модуле описаны исключения, использующиеся в пакете.

exception gvapi.errors.APIUnavailable(exc: Exception, message: str = 'API Недоступно {}')
Базовые классы: 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.

Помощь

Нашел ошибку, есть вопрос или предложение? Открой issue на GitHub