Парсер Годвилля на предмет профилей героев
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
Vladimir Hodakov 22df4f8281
Remove license duplicate
1 month ago
api Updated mogrus, new remote on source.wtfteam.pro 1 year ago
cmd/wind8_fetcher Updated mogrus, new remote on source.wtfteam.pro 1 year ago
example Initial commit 2 years ago
lib Updated mogrus, new remote on source.wtfteam.pro 1 year ago
.gitignore Initial commit 2 years ago
Gopkg.lock Updated mogrus, new remote on source.wtfteam.pro 1 year ago
Gopkg.toml Updated mogrus, new remote on source.wtfteam.pro 1 year ago
LICENSE Add LICENSE 1 year ago
README.md README.md: chronicle mention 2 years ago

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

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