Tool/algroveon-parser-–-rss--und-atom-parser-ohne-externe-abhängigkeiten/

Algroveon-Parser – RSS- und Atom-Parser ohne externe Abhängigkeiten

Schlanker Feed-Parser in reinem Python für RSS 2.0, RSS 0.91 und Atom 1.0.

Diese Python-Library ist für das Parsen von RSS- und Atom-Feeds gedacht und setzt dabei bewusst nur auf die Python-Standardbibliothek. Sie verarbeitet rohe Feed-Daten ohne externe Abhängigkeiten und entstand als direkter Ersatz für eine externe Parser-Lösung, weil ich sehen wollte, wie viel ich alleine schaffe, und zugleich möglichst wenig externe Abhängigkeiten haben wollte.

Was der Parser leistet

  • Formate: RSS 2.0, RSS 0.91, Atom 1.0, RDF-basierte RSS-1.0-Feeds
  • Ergebnis: typisierte Feed- und Entry-Dataclasses, direkt verwendbar
  • HTML-Sanitizer: Allowlist-basiert, XSS-sicher, produziert bereinigtes HTML und Plain Text
  • Bildextraktion: media:thumbnailmedia:content → erstes <img> aus Content → Summary
  • Datumsnormalisierung: RFC 2822 und ISO 8601, immer timezone-aware
  • Encoding-Fallback: toleriert Feeds, die falsches Encoding deklarieren

Module

Modul Aufgabe
parser.py Format-Erkennung, Dispatcher, Encoding-Fallback
rss2.py RSS 2.0 / 0.91 Parser inkl. content:encoded, dc:creator, media:*
atom.py Atom 1.0 Parser inkl. <link rel="alternate">
sanitize.py HTML-Sanitizer + Plain-Text-Extraktion
images.py Bild-URL-Extraktion aus XML-Elementen und HTML-Inhalten
date.py RFC-2822- und ISO-8601-Datumsnormalisierung
models.py Feed und Entry Dataclasses

Namespaces und Realwelt-Feeds

Entwickelt und getestet gegen 16 echte Feeds (Stand März 2026): Tagesschau, Spiegel, Süddeutsche, Zeit, Heise, The Verge, Handelsblatt, WiWo, Postillon und weitere. Unterstützte Namespaces: content:encoded, dc:creator, dc:date, media:thumbnail, media:content. Der Umfang wird noch deutlich erweitert, ist aber schon jetzt ein gutes Training, damit der Parser langfristig möglichst universell mit verschiedenen Technologien und Feed-Varianten arbeiten kann.

Kein HTTP-Client enthalten – absichtlich. Der Parser nimmt rohe Bytes entgegen und bleibt dadurch unabhängig vom Transport.

Repository Status
sebmeisinger / algroveon-parser

Läuft eingebettet in der Algroveon-News-Infrastruktur. Packaging als eigenständiges, sauber verteilbares Modul noch nicht abgeschlossen.

[SYS] Extracting from monorepo
Awaiting Refactor