# Pf2e Data Screapper Программа обработки данных для игры Pathfinder 2e для создания БД для дальнейшего использования на сайте локализации Pf2e. ## Начало работы - Склонируйте репозиторий и войдите в папку `Pf2eDataScrapper`. - Создайте файл `.env` и добавьте в него содержимое из файла `.env.example`. Измените содержащиеся поля: - `DATA_DIR` - путь к папке для распаковки репозиториев обрабатываемых данных; - `OUTPUT_DIR` - путь к месту сохранения схем; - `DATABASE_CONNECTION` - строка подключения к БД (только PostreSQL). - Перейдите а папку `Pf2eModel` (`cd ../Pf2eModel`) и запустите `dotnet ef database update` для создания структуры БД в командной строке. ## Роли проектов - `Pf2eModel` - общая ORM-структура модели. - `Pf2eDataScrapper` - загрузчик и обработчик данных. - `Pf2eViewer` - программа отображения базы данных. ## Общая структура ### `Pf2eModel` Набор классов модели ORM EntityFramework. Класс-контекст `Pf2eDbContext` разделён на 2 файла: - в `Pf2eDbContext.cs` находится набор таблиц и конфигурация БД, - в `Pf2eDbContextModel.cs` находится Fluent API описание связей в модели. Для удобства модель разбита на несколько папок-пространст имён: - `Base` - здесь описан класс `Entity`, который является корнем всех связей и описаний. В этой таблице находятся общие характеристики объектов: название, описание, тип, а так же ссылки на общие элементы: указание источников и трейтов - всё это в пространстве имён - `Common` содержит общее классы на которые могут ссылаться разные типа. - `Enum` содержит описание всех перечислений, использующихся в модели. - `Structure` содержит все основные типы, которые связаны 1-к-1 с `Entity` (для указания этого используется интерфейс `IEntity`). #### `Migrations` Миграции БД, генерируются в автомотическом режиме. ### `Pf2eDataScrapper` #### `SchemaBuilder` Классы обработки вводимых JSON-данных и создание схемы данных для использовании при формировании обработчиков данных. Использование: ```csharp SchemaNode schema = new(); // Создание схемы данных data = JObject.Parse(reader.ReadToEnd()); // Загрузка данных schema.AddValue(data); // Добавление данных ``` #### `Importers` Классы загрузки и обработки данных. ### `Pf2eViewer` Программа для отображения данных. Не требует дополнительной настройки. # Прогресс ## Aonprd (Архивы Нефиса) Готово: **5** из 70 ### Общее - [x] action.yaml - [x] ancestry.yaml - [ ] apparition.yaml - [ ] arcane-school.yaml - [ ] arcane-thesis.yaml - [ ] archetype.yaml - [ ] article.yaml - [ ] background.yaml - [ ] bloodline.yaml - [ ] category-page.yaml - [ ] cause.yaml - [ ] class-feature.yaml - [ ] class-kit.yaml - [ ] class-sample.yaml - [ ] class.yaml - [ ] condition.yaml - [ ] conscious-mind.yaml - [ ] creature-ability.yaml - [ ] curse.yaml - [ ] deity-category.yaml - [ ] deity.yaml - [ ] deviant-ability-classification.yaml - [ ] disease.yaml - [ ] doctrine.yaml - [ ] domain.yaml - [ ] druidic-order.yaml - [ ] eidolon.yaml - [ ] element.yaml - [ ] epithet.yaml - [x] feat.yaml - [ ] hazard.yaml - [ ] hellknight-order.yaml - [ ] heritage.yaml - [ ] hunters-edge.yaml - [ ] hybrid-study.yaml - [ ] ikon.yaml - [ ] implement.yaml - [ ] innovation.yaml - [ ] instinct.yaml - [ ] kingdom-event.yaml - [ ] kingdom-structure.yaml - [x] language.yaml - [ ] lesson.yaml - [ ] methodology.yaml - [ ] muse.yaml - [ ] mystery.yaml - [ ] mythic-calling.yaml - [ ] patron.yaml - [ ] plane.yaml - [ ] practice.yaml - [ ] racket.yaml - [ ] relic.yaml - [ ] research-field.yaml - [ ] ritual.yaml - [ ] rules.yaml - [ ] sidebar.yaml - [ ] skill-general-action.yaml - [x] skill.yaml - [x] source.yaml - [ ] spell.yaml - [ ] style.yaml - [ ] subconscious-mind.yaml - [ ] tenet.yaml - [ ] tradition.yaml - [x] trait.yaml - [ ] warfare-army.yaml - [ ] warfare-tactic.yaml - [ ] way.yaml - [ ] weapon-sub.yaml - [ ] weather-hazard.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 # TODO - Добавление экипировки - Добавление бестиария