Files
Pf2eDataScrapper/README.md
T

6.7 KiB
Raw Blame History

Pf2e Data Scrapper

Программа обработки данных для игры Pathfinder 2e для создания БД для дальнейшего использования на сайте локализации Pf2e.

Начало работы

  • Склонируйте репозиторий и войдите в папку Pf2eDataScrapper.
  • Создайте файл .env и добавьте в него содержимое из файла .env.example. Измените содержащиеся поля:
    • DATA_DIR - путь к папке для распаковки репозиториев обрабатываемых данных;
    • OUTPUT_DIR - путь к месту сохранения схем;
    • DATABASE_CONNECTION - строка подключения к БД (только PostreSQL);
    • MAX_THREADS - максимальное количество потоков при параллельной обработке.
  • Перейдите а папку Pf2eModel (cd ../Pf2eModel) и запустите dotnet ef database update для создания структуры БД в командной строке. Если необходимо обновить структуру после изменения модели - используйте скрипт RebuildDatabase.bat.
  • Запустите проект Pf2eDataScrapper для парсинга информации.

Роли проектов

  • Pf2eModel - общая ORM-структура модели.
  • Pf2eDataScrapper - загрузчик и обработчик данных.

Общая структура

Pf2eModel

Набор классов модели ORM EntityFramework.

Класс-контекст Pf2eDbContext разделён на 2 файла:

  • в Pf2eDbContext.cs находится набор таблиц и конфигурация БД,
  • в Pf2eDbContextModel.cs находится Fluent API описание связей в модели.

Для удобства модель разбита на несколько папок-пространст имён:

  • Base - здесь описан класс Entity, который является корнем всех связей и описаний. В этой таблице находятся общие характеристики объектов: название, описание, тип, а так же ссылки на общие элементы: указание источников и трейтов - всё это в пространстве имён
  • Common содержит общее классы на которые могут ссылаться разные типа.
  • Enum содержит описание всех перечислений, использующихся в модели.
  • Structure содержит все основные типы, которые связаны 1-к-1 с Entity (для указания этого используется интерфейс IEntity).

Migrations

Миграции БД, генерируются в автомотическом режиме.

Pf2eDataScrapper

Основной проект обработки и отображения данных.

Структура пространст имён:

  • Helpers - классы-помощники, которые используются в

SchemaBuilder

Классы обработки вводимых JSON-данных и создание схемы данных для использовании при формировании обработчиков данных.

Использование:

SchemaNode schema = new(); // Создание схемы данных

data = JObject.Parse(reader.ReadToEnd()); // Загрузка данных

schema.AddValue(data); // Добавление данных

Importers

Классы загрузки и обработки данных.

Прогресс

Aonprd (Архивы Нефиса)

Общее (15 из 36)

  • action.yaml
  • ancestry.yaml
  • archetype.yaml
  • background.yaml
  • class.yaml
  • creature-ability.yaml
  • deviant-ability-classification.yaml
  • heritage.yaml
  • kingdom-event.yaml
  • kingdom-structure.yaml
  • language.yaml
  • mythic-calling.yaml
  • plane.yaml
  • relic.yaml
  • ritual.yaml
  • skill-general-action.yaml
  • skill.yaml
  • source.yaml
  • spell.yaml
  • tradition.yaml
  • trait.yaml
  • warfare-army.yaml
  • warfare-tactic.yaml
  • weather-hazard.yaml

Состояния

  • condition.yaml
  • curse.yaml
  • disease.yaml

Тексты

  • article.yaml
  • category-page.yaml
  • rules.yaml
  • sidebar.yaml

Боги

  • deity.yaml
  • deity-category.yaml
  • domain.yaml

Фиты

  • feat.yaml
  • class-feature.yaml

Подклассы (1 из 29)

  • research-field.yaml (Alchemist)
  • apparition.yaml (Animist)
  • practice.yaml (Animist)
  • instinct.yaml (Barbarian)
  • muse.yaml (Bard)
  • cause.yaml (Champion)
  • tenet.yaml (Champion)
  • doctrine.yaml (Cleric)
  • druidic-order.yaml (Druid)
  • methodology.yaml (Investigator)
  • element.yaml (Kineticist)
  • hybrid-study.yaml (Magus)
  • mystery.yaml (Oracle)
  • conscious-mind.yaml (Psychic)
  • subconscious-mind.yaml (Psychic)
  • hunters-edge.yaml (Ranger)
  • racket.yaml (Rogue)
  • bloodline.yaml (Sorcerer)
  • style.yaml (Swashbuckler)
  • implement.yaml (Thaumaturge)
  • lesson.yaml (Witch)
  • patron.yaml (Witch)
  • arcane-school.yaml (Wizard)
  • arcane-thesis.yaml (Wizard)
  • way.yaml (Gunslinger)
  • innovation.yaml (Innovator)
  • ikon.yaml (Exemplar)
  • epithet.yaml (Exemplar)
  • hellknight-order.yaml
  • eidolon.yaml

Бестиарий (0 из 10)

  • animal-companion-advanced.yaml
  • animal-companion-specialization.yaml
  • animal-companion-unique.yaml
  • animal-companion.yaml
  • creature-adjustment.yaml
  • creature-family.yaml
  • creature-theme-template.yaml
  • creature.yaml
  • familiar-ability.yaml
  • familiar-specific.yaml

Экипировка (0 из 11)

  • armor-group.yaml
  • armor.yaml
  • campsite-meal.yaml
  • equipment-bonus.yaml
  • equipment-sub.yaml
  • equipment.yaml
  • set-relic.yaml
  • shield.yaml
  • siege-weapon.yaml
  • vehicle.yaml
  • weapon.yaml
  • weapon-sub.yaml
  • hazard.yaml

Под вопросом (0 из 2)

  • class-kit.yaml
  • class-sample.yaml

Что не дополучено с Архивов

  • Ссылка наследий (heritage) на родословные (ancestry).

TODO

  • Добавление экипировки
  • Добавление бестиария