# Portabilität: UNIVERSAL
# Version: 1.0.0
# Zuletzt validiert: 2026-03-04

NEWS HANDLER
============

BESCHREIBUNG
============

Aggregiert News aus RSS-Feeds, Web-Seiten und YouTube-Kanälen. Speichert Quellen
und Artikel in der bach.db, unterstützt Kategorisierung und Read-Status-Tracking.
Automatische Typ-Erkennung (RSS/Web/YouTube) basierend auf URL-Struktur.

OPERATIONEN
===========

add <url> [--type TYPE] [--category CAT] [--name NAME]
  Neue Quelle hinzufügen.
  TYPE: rss, web, youtube (auto-erkannt wenn nicht angegeben)
  CATEGORY: Organisationskategorie (default: "allgemein")
  NAME: Angezeigter Name (default: aus URL extrahiert)
  YouTube URLs: /channel/UC... wird zu RSS-Feed konvertiert

list
  Alle registrierten Quellen mit Status anzeigen.
  Zeigt: ID, Name, Typ, URL, Kategorie, aktiv/inaktiv Status,
         letzte Abrufe, Fehlercount

fetch [--source ID]
  Neue Artikel abrufen.
  --source ID: Nur spezifische Quelle (default: alle aktiven)
  Unterstützt: RSS-Parsing (mit feedparser), einfache Web-Seiten

items [--unread] [--category CAT] [--limit N]
  Gespeicherte News-Artikel anzeigen.
  --unread: Nur ungelesene Items (default: alle)
  --category CAT: Filtern nach Kategorie
  --limit N: Max. Anzahl anzeigen (default: 20)
  Markierung: * = ungelesen, Leerzeichen = gelesen

read <ID|all>
  Artikel als gelesen markieren.
  ID: Spezifische Item-ID
  all: Alle ungelesenen Items

remove <ID>
  Quelle und alle zugehörigen Artikel löschen.
  Kaskadierendes Löschen via FOREIGN KEY

categories
  Übersicht aller Kategorien mit Quellen-/Status-Counts.

stats
  Statistiken: Quellen, Kategorien, Artikel, ungelesene,
  letzte 3 Abrufe mit Zeitstempel.

help
  Diese Hilfe anzeigen.

BEISPIELE
=========

RSS-Quelle hinzufügen:
  bach news add https://example.com/feed.xml --category technik --name "Beispiel Tech"

YouTube-Kanal abonnieren:
  bach news add https://youtube.com/channel/UCxxxxxx --name "Mein Lieblingskanal"

Web-Seite überwachen:
  bach news add https://example.com --type web --category news

News abrufen und anzeigen:
  bach news fetch
  bach news items --unread --limit 10

Kategorien durchsuchen:
  bach news categories
  bach news items --category technik

Alle ungelesenen als gelesen markieren:
  bach news read all

DATEIEN
=======

Datenbank:           data/bach.db
  - news_sources:   Quellen mit Metadaten (ID, Name, URL, Typ, Kategorie, Status)
  - news_items:     Artikel mit Read-Flag, Veröffentlichungs- und Abrufdatum

Abhängigkeiten:
  - feedparser:      Für RSS-Parsing (optional, wird ggf. angefordert)
  - urllib:          Für Web-Seiten (stdlib)

SIEHE AUCH
==========

hub/base.py         BaseHandler für Operation-Dispatch
data/bach.db        SQLite-Datenbank mit Quellen und Items
