From 731a66ac804512d9a93fe3091ef90843fcf2f15e Mon Sep 17 00:00:00 2001 From: claude-dev Date: Wed, 4 Mar 2026 23:35:33 +0100 Subject: [PATCH] Quellen-Bereinigung: Duplikate, Kategorien, Domains, URLs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit DB: - 7 Duplikate deaktiviert (tagesschau Atom, Spiegel, Zeit HTTP, BBC/ORF/CNN Subdomain-Duplikate) - tomshardware + medium deaktiviert (kaum OSINT-relevant) - Kategorien korrigiert: ft.com/bloomberg→international, n-tv→qualitaetszeitung, diverse Tech→fachmedien - Domain-Spalte normalisiert: feeds.bbci.co.uk→bbc.com, rss.sueddeutsche.de→sueddeutsche.de, on.orf.at→orf.at etc. - Leere URLs bei web_sources gefüllt, Anzeigenamen korrigiert Code (source_rules.py): - _DOMAIN_ALIASES Map für Subdomain→kanonische Domain Zuordnung - _extract_domain() nutzt Alias-Map für konsistente Gruppierung Co-Authored-By: Claude Opus 4.6 --- src/source_rules.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/source_rules.py b/src/source_rules.py index a227d88..05d4843 100644 --- a/src/source_rules.py +++ b/src/source_rules.py @@ -169,13 +169,27 @@ def _normalize_url(url: str) -> str: return url +# Subdomain → kanonische Domain Zuordnung +_DOMAIN_ALIASES = { + "feeds.bbci.co.uk": "bbc.com", + "rss.sueddeutsche.de": "sueddeutsche.de", + "on.orf.at": "orf.at", + "rss.orf.at": "orf.at", + "rss.dw.com": "dw.com", + "newsfeed.zeit.de": "zeit.de", + "reutersagency.com": "reuters.com", + "edition.cnn.com": "cnn.com", + "rsshub.app": "apnews.com", +} + + def _extract_domain(url: str) -> str: - """Domain aus URL extrahieren (ohne www.).""" + """Domain aus URL extrahieren (ohne www., mit Alias-Normalisierung).""" parsed = urlparse(url) domain = parsed.hostname or "" if domain.startswith("www."): domain = domain[4:] - return domain + return _DOMAIN_ALIASES.get(domain, domain) def _detect_category(domain: str) -> str: