mirror of
https://gitverse.ru/kpa39l/vesti.git
synced 2026-09-29 09:55:03 +00:00
3.1 KiB
3.1 KiB
address-field-enhancement
Улучшение формы добавления источника: одно поле Address вместо url/channel/feed_url, авто-подстановка названия и slug, direction с автодополнением из существующих значений.
Why
Пользователь: при добавлении telegram-источника хочется вставить адрес типа
https://t.me/mknewsru, а название канала получить из TG API автоматически
(«Мой компьютер»), slug — из адреса (mknewsru). Сейчас приходится вручную
заполнять 4 поля (url, channel, feed_url, название), часть из которых избыточна.
Также вместо жёсткого списка DIRECTIONS в datalist — подставлять реально существующие в БД направления + возможность ввода нового.
What Changes
- web/templates/sources.html: поле
channel/feed_url/urlзаменяются одним полемaddress; JS: при выборе crawler подсказка меняется; кнопка «Найти название» (для telegram) вызывает GET /sources/preview?address=... и заполняет slug/name; direction — datalist изDIRECTIONS+ свободный ввод. - web/app.py: новый route
GET /sources/preview— принимает address, определяет тип (telegram/rss), парсит slug, получает название (telegram: Telethon get_entity; rss: feedparser), возвращает JSON {slug, name, url, channel/feed_url}._form_source:address→ парсинг в зависимости от crawler (telegram: channel из address, url=t.me/...; rss: feed_url=address, url=address)._validate_source: rss проверяет address как URL (непустой), telegram — channel. - web/templates/sources.html: datalist direction строится из DIRECTION_OPTIONS (переменная из app.py: DIRECTIONS + уникальные из БД), input остаётся свободным.
Why Not
- Не изменяем БД/схему:
address— только UI-концепция, в БД по-прежнему url/channel/feed_url. - Не трогаем краулеры: они читают channel/feed_url из yaml — парсинг на этапе добавления в yaml.
Impact
- Форма проще: одно поле для адреса + crawler.
- Название и slug подставляются автоматически (для telegram — реальное имя канала; для rss — title фида).
- direction: реальные значения из БД, свободный ввод остаётся.
- Обратная совместимость: старые источники с заполненными url/channel/feed_url работают как раньше (адрес в форму можно не вводить при edit).