api | ||
cmd/wind8_fetcher | ||
example | ||
lib | ||
.gitignore | ||
Gopkg.lock | ||
Gopkg.toml | ||
LICENSE | ||
README.md |
8th Wind Fetcher — Парсер Восьмого ветра
Godville game profiles parser
Dependencies ruled by dep.
This parser designed to be companion of 8th Wind site engine. This program parses profiles and sends them to API endpoint of wind8 site engine.
You can use this parser for your own purposes, but you will do it at your own risk. I'm not responsible for anyone who violates Godville game rules using this software.
This software created for demonstation purposes only.
Парсер профилей игры Годвилль
Зависимости управляются при помощи dep.
Этот парсер создан для работы с сайтом Восьмой ветер. Приложение wind8_fetcher
парсит профили Годвилля и отдаёт данные по API движку сайта.
Вы можете использовать эту программу для своих личных задач, но делайте это на свой страх и риск. Я не несу ответственности за каждого, кто нарушит правиля Годвилля с помощью этой программы.
Данная программа создана исключительно в ознакомительных целях.
Параметры, возвращаемые парсером
Для начала, существуют ровно два состояния ответа: на правильный и неправильный запрос. В случае неправильного запроса ответ будет примерно таким:
{
"status": "error",
"error_code": "400",
"description": "Invalid data."
}
Попали на такой ответ — смотрим, что случилось. Особенно поможет поле "description" — обычно его текста достаточно, чтобы понять, что случилось.
Формат тела правильного HTTP-запроса, ожидаемого программой, такой:
{
"god_name": "Имя бога"
}
Дельный совет: делайте запросы не чаще одного раза в 20 секунд на один работающий инстанс программы.
Теперь поговорим об ответе на правильный запрос. В нём дофига полей, и ещё более дофига полей могут появляться от случая к случаю.
Вот так выглядит ответ на запрос о боге, у которого есть всё (и то не факт):
{
"pantheons": {
"duelers": "21",
"duelery": "3",
"gladiatorship": "69",
"gratitude": "953",
"mastery": "48",
"might": "30",
"pairs": "19",
"popularity": "6",
"savings": "26",
"storytelling": "50",
"survival": "151",
"taming": "148",
"templehood": "1371",
"unity": "2",
"wood": "12"
},
"profile": {
"age": "8 лет 5 месяцев",
"arena_loss": "245",
"arena_wins": "1263",
"beasts_done": "05.03.2017",
"beasts_female": "1000",
"beasts_male": "1000",
"beasts_pairs": "1000",
"boat_done": "24.04.2014",
"body": "костюм царицы полей",
"body_stat": "+143",
"bricks": "1000",
"chronicle": "Летопись удалена за ненадобностью",
"church_done": "17.04.2011",
"coat": "протежезл",
"coat_stat": "+146",
"deaths": "120",
"god_name": "Имя бога",
"guild": "дом семи ветров",
"guild_status": "домозавр",
"hands": "культя личности",
"hands_stat": "+145",
"head": "шотландские виски",
"head_stat": "+145",
"hero_name": "Имя геройса",
"legs": "доколье",
"legs_stat": "+142",
"level": "133",
"motto": "Расщеплю на молекулы",
"pension": "30000",
"personality": "нейтральный",
"pet_level": "16",
"pet_name": "Гипноз",
"pet_type": "медуз горгоныч",
"shop": "«Гробы Напрокат»",
"shop_level": "33",
"talisman": "охранная грамота",
"talisman_stat": "+144",
"weapon": "кофемолот",
"weapon_stat": "+144",
"woods": "5121"
},
"skills": {
"0": "руки-ножницы",
"1": "залом уха",
"2": "кувырок через пупок",
"3": "любительская хирургия",
"4": "слоновий сэйлз",
"5": "крылатые качели",
"6": "удушливое объятие",
"7": "паническая атака",
"8": "принуждение к миру",
"9": "покупательная способность",
"0_level": "129",
"1_level": "127",
"2_level": "127",
"3_level": "123",
"4_level": "121",
"5_level": "118",
"6_level": "115",
"7_level": "115",
"8_level": "109",
"9_level": "108"
},
"status": "success"
}
Ответ на правильный запрос всегда будет состоять из четырёх секций — profile
, pantheons
, skills
и status
. С последним полем всё понятно — success
он и в Африке success
. Разберём первые три.
В секции profile
нас будут ждать следующие обязательные параметры:
god_name
— имя бога в игре.hero_name
— имя героя.level
— уровеньmotto
— девизage
— возрастpersonality
— характер герояarena_wins
— количество побед на аренеarena_loss
— количество поражений на аренеbricks
— количество кирпичей. У храмовладельцев — 1000.church_done
— дата постройки храма, или же пустая строка.chronicle
— летопись. "Летопись не заполнена" — это тоже летопись! Сырой HTML.
Всё остальное может быть, а может и не быть. Необязательные данные таковы:
deaths
— количество смертейguild
— гильдияguild_status
— статус в гильдииwoods
— количество гоферовых брёвенboat_done
— дата постройки ковчега, ежели таковой построен, или же пустая строка, если он собираетсяbeasts_male
— количество самцовbeasts_female
— количество самокbeasts_pairs
— количество пар тварейbeasts_done
— дата получения 1000-й пары тварей.pension
— количество сбережений (в тысячах). У лавочников равно 30000.shop
— название лавкиshop_level
— уровень торговцаpet_name
— имя питомцаpet_level
— уровень питомцаpet_type
— порода питомца
Всякая экипировка тоже заносится в profile
, а именно:
weapon
— оружиеcoat
— щитhead
— головаbody
— телоhands
— рукиlegs
— ногиtalisman
— талисман.
Для каждого типа экипировки есть <имя_экипировки>_stat
, где указывается сила того или иного обмундирования. Внимание: это не integer, там есть знак + или -.
Самая сложная часть позади. Дальше — блок pantheons
. Пантеонов у нас много, иногда они даже размножаются. Здесь всё просто: идём в Годвилль, смотрим, каким словом заканчивается URL страницы с нужным пантеоном — и вуаля. Все имена данных в этом блоке совпадают с внутренними именами пантеонов в игре.
Ну и, наконец, последний блок skills
. Здесь у нас полный разброд и шатание, поэтому параметры называются 0
, 0_level
, 1
, 1_level
и так далее. Каждый параметр с именем-цифрой — название умения, а с _level
на конце — его уровень.
На этом, кажется, всё. Хэппи хакинга, и да не забанят тебя демиурги!