scanner/README.md
2026-07-29 21:03:59 +03:00

86 lines
3.0 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.

# 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` больше не создаётся.