195 lines
6.4 KiB
Markdown
195 lines
6.4 KiB
Markdown
# Pf2e Data Scrapper
|
||
|
||
Программа обработки данных для игры Pathfinder 2e для создания БД для дальнейшего использования на сайте локализации Pf2e.
|
||
|
||
## Начало работы
|
||
|
||
- Склонируйте репозиторий и войдите в папку `Pf2eDataScrapper`.
|
||
- Создайте файл `.env` и добавьте в него содержимое из файла `.env.example`. Измените содержащиеся поля:
|
||
- `DATA_DIR` - путь к папке для распаковки репозиториев обрабатываемых данных;
|
||
- `OUTPUT_DIR` - путь к месту сохранения схем;
|
||
- `DATABASE_CONNECTION` - строка подключения к БД (только PostreSQL).
|
||
- Перейдите а папку `Pf2eModel` (`cd ../Pf2eModel`) и запустите `dotnet ef database update` для создания структуры БД в командной строке.
|
||
- Запустите проект `Pf2eDataScrapper` для парсинга информации.
|
||
- Запустите проект `Pf2eViewer` для просмотра полученной инфомрации.
|
||
|
||
## Роли проектов
|
||
|
||
- `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 (Архивы Нефиса)
|
||
|
||
Готово: **15** из 70
|
||
|
||
### Общее
|
||
- [x] action.yaml
|
||
- [x] ancestry.yaml
|
||
- [x] archetype.yaml
|
||
- [x] background.yaml
|
||
- [ ] class-kit.yaml
|
||
- [ ] class-sample.yaml
|
||
- [x] class.yaml
|
||
- [ ] condition.yaml
|
||
- [ ] creature-ability.yaml
|
||
- [ ] curse.yaml
|
||
- [ ] deviant-ability-classification.yaml
|
||
- [ ] disease.yaml
|
||
- [x] heritage.yaml
|
||
- [ ] kingdom-event.yaml
|
||
- [ ] kingdom-structure.yaml
|
||
- [x] language.yaml
|
||
- [ ] mythic-calling.yaml
|
||
- [ ] plane.yaml
|
||
- [ ] relic.yaml
|
||
- [x] ritual.yaml
|
||
- [ ] sidebar.yaml
|
||
- [ ] skill-general-action.yaml
|
||
- [x] skill.yaml
|
||
- [x] source.yaml
|
||
- [x] spell.yaml
|
||
- [ ] tradition.yaml
|
||
- [x] trait.yaml
|
||
- [ ] warfare-army.yaml
|
||
- [ ] warfare-tactic.yaml
|
||
- [ ] weapon-sub.yaml
|
||
- [ ] weather-hazard.yaml
|
||
|
||
**Тексты**
|
||
- [ ] article.yaml
|
||
- [ ] category-page.yaml
|
||
- [x] rules.yaml
|
||
|
||
**Боги**
|
||
- [ ] deity.yaml
|
||
- [ ] deity-category.yaml
|
||
- [ ] domain.yaml
|
||
|
||
**Фиты**
|
||
- [x] feat.yaml
|
||
- [ ] class-feature.yaml
|
||
|
||
**Подклассы**
|
||
- [ ] research-field.yaml (Alchemist)
|
||
- [x] 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
|
||
- [ ] hazard.yaml
|
||
|
||
|
||
|
||
|
||
|
||
|
||
# TODO
|
||
|
||
- Добавление экипировки
|
||
- Добавление бестиария
|