# Portability: UNIVERSAL
# Last validated: 2026-05-17
# Next review: 2027-05-17

ОБРАБОТЧИК НОВОСТЕЙ
------------

ОПИСАНИЕ
------------

Агрегирует новости из RSS-каналов, веб-страниц и каналов YouTube. Сохраняет источники
и статей в bach.db, поддерживает категоризацию и отслеживание статуса чтения.
Автоматическое определение типа (RSS/Web/YouTube) на основе структуры URL.

ОПЕРАЦИИ
-----------

add <url> [--type TYPE] [--category CAT] [--name NAME]
  Добавить новый источник.
  ТИП: rss, web, youtube (определяется автоматически, если не указано)
  КАТЕГОРИЯ: Организационная категория (по умолчанию: «общая»)
  ИМЯ: отображаемое имя (по умолчанию: извлечено из URL-адреса).
  URL-адреса YouTube: /channel/UC... будут преобразованы в RSS-канал

list
  Просмотрите все зарегистрированные источники со статусом.
  Показывает: идентификатор, имя, тип, URL-адрес, категорию, активный/неактивный статус,
         последние вызовы, количество ошибок

fetch [--source ID]
  Получайте новые статьи.
  --source ID: только конкретный источник (по умолчанию: все активны)
  Поддерживает: анализ RSS (с помощью анализатора каналов), простые веб-страницы

элементы [--непрочитанные] [--категория CAT] [--предел N]
  Просмотр сохраненных новостных статей.
  --unread: только непрочитанные элементы (по умолчанию: все)
  --category CAT: фильтровать по категории
  --limit N: показать максимальное количество (по умолчанию: 20)
  Маркировка: * = непрочитано, пробел = прочитано

прочитано <ID|все>
  Отметить статью как прочитанную.
  Идентификатор: идентификатор конкретного предмета.
  all: Все непрочитанные элементы

удалить <ID>
  Удалить источник и все связанные статьи.
  Каскадное удаление через категории FOREIGN KEY


  Обзор всех категорий с количеством источников/статусов.

статистика
  Статистика: источники, категории, статьи, непрочитанные,
  последние 3 запроса с отметкой времени.

справка
  Показать эту справку.

ПРИМЕРЫ
---------

Добавить источник RSS:
  bach news add https://example.com/feed.xml --category technik --name "Beispiel Tech"

Подписаться на канал YouTube:
  bach news add https://youtube.com/channel/UCxxxxxx --name "Mein Lieblingskanal"

Мониторинг веб-страницы:
  bach news add https://example.com --type web --category news

Получение и отображение новостей:
  bach news fetch
  bach news items --unread --limit 10

Просмотр категорий:
  bach news categories
  bach news items --category technik

Отметить все непрочитанные как прочитанные:
  bach news read all

ФАЙЛЫ
-------

База данных: data/bach.db
  - news_sources: источники с метаданными (ID, имя, URL, тип, категория, статус)
  - news_items: статьи с флагом прочтения, датой публикации и получения

Зависимости:
  - Feedparser: для анализа RSS (необязательно, может быть запрошено)
  - urllib: для веб-страниц (stdlib)

СМОТРИ ТАКЖЕ
----------

hub/base.py BaseHandler для диспетчеризации операций
data/bach.db База данных SQLite с источниками и элементами
