Archived
1
Парсер Годвилля на предмет профилей героев
This repository has been archived on 2022-11-04. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
2018-02-14 03:22:16 +04:00
api Updated mogrus, new remote on source.wtfteam.pro 2018-02-14 03:22:16 +04:00
cmd/wind8_fetcher Updated mogrus, new remote on source.wtfteam.pro 2018-02-14 03:22:16 +04:00
example Initial commit 2017-10-27 07:45:21 +04:00
lib Updated mogrus, new remote on source.wtfteam.pro 2018-02-14 03:22:16 +04:00
.gitignore Initial commit 2017-10-27 07:45:21 +04:00
Gopkg.lock Updated mogrus, new remote on source.wtfteam.pro 2018-02-14 03:22:16 +04:00
Gopkg.toml Updated mogrus, new remote on source.wtfteam.pro 2018-02-14 03:22:16 +04:00
MIT-LICENSE Initial commit 2017-10-27 07:45:21 +04:00
README.md README.md: chronicle mention 2017-10-27 08:40:27 +04:00

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 на конце — его уровень.

На этом, кажется, всё. Хэппи хакинга, и да не забанят тебя демиурги!