feat: add declarative site parser engine

This commit is contained in:
Your Name
2026-08-11 00:46:11 +05:00
parent 01eea99c88
commit 2d6fa3c99a
13 changed files with 1202 additions and 244 deletions
+10 -6
View File
@@ -586,7 +586,13 @@ Retention: записи старше 30 дней удаляются при ст
Записи без достаточного текста, включая video-only, не сохраняются и не
попадают в media uploader.
`access='cloudflare'` включает Playwright и RuCaptcha для конкретного
Конфиг v1 описывает `discovery` (`rss` или `html`), точные `detail.fields`,
`detail.media`, транспорт detail-страниц и ограниченные ретраи. Каждый field
может иметь ordered `candidates`: CSS/attribute/JSON/date fallback. Ошибка
одного detail возвращает `partial`, сохраняет успешных соседей и показывает
диагностику в статусе источника.
`access.type='cloudflare'` включает Playwright и RuCaptcha для конкретного
источника; обычные RSS и сайты идут без браузера. Полученные `cf_clearance` и
точный User-Agent браузера сохраняются в runtime state источника и повторно
используются media uploader при скачивании защищённых картинок.
@@ -1136,11 +1142,9 @@ Worker учитывает:
- active
- обязательный JSON-конфиг конкретного источника
Пример рабочего PopularAirsoft:
```json
{"format":"rss","access":"cloudflare","max_items":10,"min_text_length":50}
```
Полный проверенный конфиг PopularAirsoft находится в
`site_parser_worker/README.md`. Для него используется HTML discovery главной
страницы, потому что RSS смешивает короткие video pages и полные новости.
Ошибки конфигурации, внешнего worker или сайта показываются в статусе
источника. После загрузки защищённые изображения отображаются в raw/editor по