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: