86 lines
3.0 KiB
Markdown
86 lines
3.0 KiB
Markdown
# PoE 2 Scanner
|
||
|
||
Локальный сканер торговли Path of Exile 2. Поддерживает разовый поиск, консольный Live и Web UI с SSE-уведомлениями.
|
||
|
||
## Настройка
|
||
|
||
1. Скопируйте `config.example.json` в `config.json`.
|
||
2. Укажите лигу, предмет и максимальную цену.
|
||
3. Добавьте свежие `POESESSID` и `POETOKEN` в локальный `config.json` либо передайте их через переменные окружения.
|
||
|
||
`config.json` содержит секреты и исключён из Git. Не отправляйте его другим людям и не кладите в публичные архивы.
|
||
|
||
Пример безопасной структуры:
|
||
|
||
```json
|
||
{
|
||
"league": "Runes of Aldur",
|
||
"itemName": "The Desperate Alliance",
|
||
"itemType": "Vase Relic",
|
||
"maxPrice": 5,
|
||
"priceCurrency": "divine",
|
||
"maxResults": 500,
|
||
"poeSessionId": "",
|
||
"poeToken": ""
|
||
}
|
||
```
|
||
|
||
Переменные окружения `POESESSID` и `POETOKEN` имеют приоритет над значениями из файла.
|
||
|
||
## Запуск
|
||
|
||
```powershell
|
||
node scanner.mjs
|
||
node scanner.mjs --live
|
||
node scanner.mjs --serve
|
||
```
|
||
|
||
Web UI будет доступен только на этом компьютере:
|
||
|
||
```text
|
||
http://127.0.0.1:3999
|
||
```
|
||
|
||
Также доступны:
|
||
|
||
- `full-scan.bat` — разовый поиск.
|
||
- `live.bat` — консольный Live.
|
||
- `launch.vbs` — скрытый запуск Web UI.
|
||
- `run.bat` — меню режимов.
|
||
|
||
## Проверка
|
||
|
||
```powershell
|
||
npm test
|
||
npm run check
|
||
```
|
||
|
||
## Как устроен Live
|
||
|
||
1. Сканер создаёт поисковый запрос и запоминает уже существующие объявления.
|
||
2. Подключается к PoE Live WebSocket.
|
||
3. Новые ID последовательно загружаются через PoE API.
|
||
4. При разрыве WebSocket включается polling раз в 30 секунд.
|
||
5. При устаревшем search ID сканер получает новый и переподключается.
|
||
|
||
Все HTTP-запросы к PoE идут через одну очередь с минимальным интервалом 1,2 секунды. При HTTP 429 сканер читает указанное PoE время ожидания.
|
||
|
||
## Локальный API
|
||
|
||
Сервер слушает только `127.0.0.1`. Изменяющие состояние POST-запросы защищены случайным токеном, который получает Web UI.
|
||
|
||
- `GET /api/config`
|
||
- `POST /api/search`
|
||
- `POST /api/live/start`
|
||
- `POST /api/live/stop`
|
||
- `POST /api/secure`
|
||
- `GET /api/live/stream`
|
||
|
||
## Файлы состояния
|
||
|
||
- `config.json` — локальные настройки и авторизация.
|
||
- `seen.json` — кеш просмотренных объявлений.
|
||
- `sound.mp3` — звук уведомления.
|
||
|
||
`startup.json` больше не создаётся.
|