Files
Pf2eDataScrapper/README.md
T

195 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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-данных и создание схемы данных для использовании при формировании обработчиков данных.
Использование:
```csharp
SchemaNode schema = new(); // Создание схемы данных
data = JObject.Parse(reader.ReadToEnd()); // Загрузка данных
schema.AddValue(data); // Добавление данных
```
#### `Importers`
Классы загрузки и обработки данных.
# Прогресс
## Aonprd (Архивы Нефиса)
### Общее (15 из 36)
- [x] action.yaml
- [x] ancestry.yaml
- [x] archetype.yaml
- [x] background.yaml
- [x] class.yaml
- [ ] creature-ability.yaml
- [ ] deviant-ability-classification.yaml
- [x] heritage.yaml
- [ ] kingdom-event.yaml
- [ ] kingdom-structure.yaml
- [x] language.yaml
- [ ] mythic-calling.yaml
- [ ] plane.yaml
- [ ] relic.yaml
- [x] ritual.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
- [ ] weather-hazard.yaml
**Состояния**
- [ ] condition.yaml
- [ ] curse.yaml
- [ ] disease.yaml
**Тексты**
- [ ] article.yaml
- [ ] category-page.yaml
- [x] rules.yaml
- [ ] sidebar.yaml
**Боги**
- [ ] deity.yaml
- [ ] deity-category.yaml
- [ ] domain.yaml
**Фиты**
- [x] feat.yaml
- [ ] class-feature.yaml
### Подклассы (1 из 29)
- [ ] 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
- [ ] weapon-sub.yaml
- [ ] hazard.yaml
### Под вопросом (0 из 2)
- [ ] class-kit.yaml
- [ ] class-sample.yaml
### Что не дополучено с Архивов
- Ссылка наследий (`heritage`) на родословные (`ancestry`).
# TODO
- Добавление экипировки
- Добавление бестиария