mirror of
https://gitverse.ru/kpa39l/vesti.git
synced 2026-09-29 18:05:03 +00:00
2.5 KiB
2.5 KiB
extract-post-sources
Извлечение источников новостей из текста постов (TG-каналы/сайты) и быстрое добавление в реестр.
Why
Пользователь: нужно извлекать источники новостей из полученных постов (каналы/сайты, откуда пришли новости), чтобы в следующий раз забирать новости напрямую из источника. Сейчас ссылки в тексте постов никак не используются: всё приходит из sources.yaml, а репосты/упоминания других каналов и сайтов теряются.
What Changes
- sources/extract.py (новый):
extract_sources_from_text(text) -> list[dict]— находит в тексте ссылки на TG-каналы (t.me/handle, @handle, t.me/s/handle) и внешние сайты (https://domain), исключает ссылки на сам пост (t.me/channel/postid), дедуплицирует. Ограничение: не более 5 найденных на пост (шум). - web/app.py:
- helper
_post_sources(post)→ список {kind, address, slug_hint, known} для карточки (known = slug_hint уже есть в sources). - В render candidates/selected передаёт
post_sources. - POST
/sources/add-from-post: {address} → parse_address + add_or_update_source (переиспользует существующий CRUD). Возвращает redirect на ту же страницу с did-сообщением.
- helper
- web/templates/candidates.html / selected.html: блок «🌐 Источники из поста» под бейджами:
для каждого найденного —
@handle/domain, бейдж «в реестре» или кнопка «➕».
Impact
- В карточках кандидатов/отобранных видны ссылки на внешние каналы/сайты из текста.
- Один клик — добавить источник в реестр (yaml + БД, как ручное добавление).
- Никаких LLM-вызовов — regex-извлечение, бесплатно. Дообогащение модели для одобренных — отдельная задача (по кнопке, экономия токенов).