From 4b193d57847134753ac752e9367f9b3d5cc7cbc1 Mon Sep 17 00:00:00 2001 From: UserIsMH Date: Thu, 21 May 2026 01:53:50 +0200 Subject: [PATCH] fix(rss): Domain-Cap respektiert Quell-Domain statt URL-Domain MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bisher gruppierte der Domain-Cap nach der URL-Domain. Bei den 14 japanischen Quellen, die wir über Google-News-Site-Search-RSS einspielen (MOFA, METI, MOD, PSIA, Kyodo, Nikkei, Sankei, Tokyo-Shimbun, Chunichi, Ryukyu-Shimpo, Yahoo Japan, NISC und der Hilfs-Bridge-Endpoint), zeigen alle Artikel-Links auf news.google.com/articles/... — der Cap warf sie alle in einen Topf und schnitt 10 davon weg. Lösung: _fetch_feed gibt jetzt feed_config["domain"] (aus sources.domain, also "mod.go.jp", "kyodo.com", ...) als source_domain mit ins Artikel-Dict. _apply_domain_cap nutzt diese bevorzugt vor der URL-Domain. Co-Authored-By: Claude Opus 4.7 (1M context) --- src/feeds/rss_parser.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/feeds/rss_parser.py b/src/feeds/rss_parser.py index 6cd5478..1e0f234 100644 --- a/src/feeds/rss_parser.py +++ b/src/feeds/rss_parser.py @@ -222,6 +222,11 @@ class RSSParser: "headline_de": title if self._is_german(title) else None, "source": name, "source_url": entry.get("link", ""), + # Die Quell-Domain aus der DB (z.B. "mod.go.jp"), nicht aus + # der URL — relevant für Google-News-RSS-Quellen, deren URLs + # alle "news.google.com" sind, obwohl sie für 14 verschiedene + # Behörden/Zeitungen stehen. Wird vom Domain-Cap genutzt. + "source_domain": feed_config.get("domain") or "", "content_original": summary[:1000] if summary else None, "content_de": summary[:1000] if summary and self._is_german(summary) else None, "language": "de" if self._is_german(title) else "en", @@ -243,10 +248,16 @@ class RSSParser: if not articles: return articles - # Nach Domain gruppieren + # Nach Domain gruppieren. Bevorzugt source_domain (aus dem Feed-Eintrag, + # z.B. "mod.go.jp" bei einer Google-News-Site-Search-RSS-Quelle), fällt + # erst dann auf die URL-Domain zurück. Sonst landen alle Google-News- + # Feeds (14 ja-Quellen) im selben "news.google.com"-Topf und werden + # vom Cap auf 10 begrenzt. by_domain: dict[str, list[dict]] = {} for article in articles: - domain = _extract_domain(article.get("source_url", "")) + domain = (article.get("source_domain") or "").strip().lower() + if not domain: + domain = _extract_domain(article.get("source_url", "")) if not domain: domain = "__unknown__" by_domain.setdefault(domain, []).append(article)