Achims Usenet-App

NNTP-Reader und Binär-Client mit SABnzbd-Integration

  • Python
  • PySide6
  • NNTP
  • SQLite
  • FTS5

Desktop-Client für Usenet: liest Text-Newsgroups, indexiert deren Header in einer lokalen SQLite-Datenbank mit FTS5-Volltextsuche und schickt markierte Binär-Releases als selbstgebaute NZB an ein lokales SABnzbd. Hybride Architektur — direkt am NNTP-Server für Reader-Funktionen, Indexer-API später optional.

Features

  • Verbindung zum Newshosting via pynntp (TLS:563), 8 parallele Reader-Connections im Default
  • Inkrementeller Header-Sync mit Chunk-basiertem XOVER, abbrechbar, parallelisierbar (gemessen 1,7× Speedup bei 4 Workern)
  • Lokaler Cache: SQLite + FTS5 auf subject und from, chronologisch über date_unix-Spalte sortierbar
  • Group-Browser: alle ~111 k Newshosting-Gruppen filterbar, Multi-Select-Abo
  • Header-View mit Release-Grouping: yEnc-Segmente werden zu Releases zusammengefasst statt 1 Zeile pro Segment
  • Bild-Vorschau (yEnc-Decode mit sabyenc3)
  • NZB-Builder aus markierten Releases, direkt-Übergabe an SABnzbd
  • Sync-Modi: inkrementell, letzte N Artikel, seit Datum (per Bisection), Vollsync — mit Pro-Lauf-Cap

Großgruppen-Härtung

Für Gruppen mit Millionen Headern wurde mehrfach optimiert: asynchrone Dialoge (warn_later/info_later via QTimer), Bulk-Delete ohne FTS-Trigger, abbrechbarer Parallel-Sync mit monotonem Präfix-Tracking, FTS-Suche per JOIN statt N+1, chunk- bounded INSERT-Counts statt Full-Group-Scans.

Stack

Python 3.13, PySide6, qasync (asyncio↔Qt), pynntp, httpx, lxml, sabyenc3, SQLite mit FTS5.