docs: document external site parser
This commit is contained in:
+56
-1
@@ -196,7 +196,8 @@
|
||||
|
||||
Источники для парсинга.
|
||||
|
||||
Сейчас реально используется только `platform='vk'`, но схема заложена под другие площадки.
|
||||
Используются `platform='vk'` и `platform='site'`. Для сайта конфигурация
|
||||
конкретного адаптера хранится вместе с источником в `settings_json`.
|
||||
|
||||
Важные поля:
|
||||
|
||||
@@ -215,9 +216,14 @@
|
||||
- `parse_from`
|
||||
- `priority`
|
||||
- `archived_at`
|
||||
- `settings_json` для `platform='site'`
|
||||
|
||||
`tag` нужен для будущих хэштегов и финального оформления.
|
||||
|
||||
Для сайта отсутствие или ошибка JSON-конфига блокирует запуск с видимой
|
||||
ошибкой источника. Конфиг задаёт способ получения именно этого сайта; общее
|
||||
расписание и секреты остаются в `app_settings`.
|
||||
|
||||
### 5.4. `raw_posts`
|
||||
|
||||
Главная таблица жизненного цикла поста.
|
||||
@@ -558,6 +564,37 @@ Retention: записи старше 30 дней удаляются при ст
|
||||
8. Сохраняет raw post и media.
|
||||
9. Создаёт job `media.storage.copy`.
|
||||
|
||||
### 7.1.1. Источники сайтов
|
||||
|
||||
Тот же scheduling loop обрабатывает `platform='site'`, но сетевую работу
|
||||
делегирует внешнему stateless-модулю Site Parser. Основная коробка хранит БД,
|
||||
источники, конфиги, расписание, статусы и очередь. Внешний модуль получает один
|
||||
запрос и возвращает унифицированный JSON с текстом, исходной ссылкой, датой и
|
||||
медиа. Готовые источники запускаются строго последовательно.
|
||||
|
||||
Настройки основной коробки:
|
||||
|
||||
- `site_parser_url`
|
||||
- `site_parser_token`
|
||||
- `site_parser_rucaptcha_token`
|
||||
- `site_parser_timeout_sec`
|
||||
- `site_parser_interval_minutes`
|
||||
- `site_parser_min_text_length`
|
||||
|
||||
Персональный `min_text_length` в JSON источника переопределяет общий порог.
|
||||
Проверяется только тело материала: заголовок не помогает пройти фильтр.
|
||||
Записи без достаточного текста, включая video-only, не сохраняются и не
|
||||
попадают в media uploader.
|
||||
|
||||
`access='cloudflare'` включает Playwright и RuCaptcha для конкретного
|
||||
источника; обычные RSS и сайты идут без браузера. Полученные `cf_clearance` и
|
||||
точный User-Agent браузера сохраняются в runtime state источника и повторно
|
||||
используются media uploader при скачивании защищённых картинок.
|
||||
|
||||
Внешний модуль работает в LXC `108` (`192.168.1.113:8080`) через Docker
|
||||
Compose `/opt/site-parser/docker-compose.yml`. Репозиторный compose находится
|
||||
в `site_parser_worker/docker-compose.yml`.
|
||||
|
||||
### 7.2. Политика мусорных постов
|
||||
|
||||
Настройки:
|
||||
@@ -1091,6 +1128,24 @@ Worker учитывает:
|
||||
- active
|
||||
- parse_from
|
||||
|
||||
Для сайта важны:
|
||||
|
||||
- platform `site`
|
||||
- name
|
||||
- url
|
||||
- active
|
||||
- обязательный JSON-конфиг конкретного источника
|
||||
|
||||
Пример рабочего PopularAirsoft:
|
||||
|
||||
```json
|
||||
{"format":"rss","access":"cloudflare","max_items":10,"min_text_length":50}
|
||||
```
|
||||
|
||||
Ошибки конфигурации, внешнего worker или сайта показываются в статусе
|
||||
источника. После загрузки защищённые изображения отображаются в raw/editor по
|
||||
авторизованному маршруту `/raw/media/{media_id}` из Telegram storage.
|
||||
|
||||
### 12.3. Raw
|
||||
|
||||
Raw-страница показывает:
|
||||
|
||||
Reference in New Issue
Block a user