mirror of
https://gitverse.ru/kpa39l/vesti.git
synced 2026-09-29 18:05:03 +00:00
27 lines
1.9 KiB
Markdown
27 lines
1.9 KiB
Markdown
# rss-formatting-preserve
|
|
|
|
Сохранять форматирование RSS-новостей (абзацы, разметка) при скачивании и в предпросмотре.
|
|
|
|
## Why
|
|
|
|
Пользователь: в RSS omarchy внутри текста новости есть HTML-символы, мы их выкидываем
|
|
из текста, поэтому вся новость в предпросмотре — сплошной текст, ничего не понять.
|
|
Нужно при скачивании из RSS сохранять заложенное форматирование.
|
|
|
|
## What Changes
|
|
|
|
- **crawler/rss_crawler.py**: html_to_text() вставляет переносы вокруг блочных тегов
|
|
(p/li/h1-6/blockquote/pre), чтобы абзацы и списки сохранялись; parse_entries() больше
|
|
не схлопывает все пробелы в один — нормализует: 3+ переноса → 2, пробелы по краям
|
|
строк убираются, внутренние сохраняются.
|
|
- **web/app.py**: новый фильтр `safe_html` (bleach.clean allowlist + linkify) для
|
|
безопасного рендера HTML-разметки исходных RSS-текстов в предпросмотре.
|
|
- **web/templates/candidates.html / selected.html**: `| safe_html` для `selected.text`.
|
|
- **requirements.txt**: +bleach.
|
|
|
|
## Impact
|
|
|
|
- Тексты в БД: появляются абзацы (\n\n), форматирование сохраняется читаемым.
|
|
- Предпросмотр кандидатов/отобранных: разметка (b/i/a/списки) рендерится безопасно.
|
|
- Markdown-пересказы (rewritten_text) и комментарии не задеваются — md_filter без изменений.
|
|
- Публикация (card.py) — plain text, абзацы \n\n дойдут в Telegram. |