fix(rss): Domain-Cap respektiert Quell-Domain statt URL-Domain
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) <noreply@anthropic.com>
Dieser Commit ist enthalten in:
@@ -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)
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren