Preserve publication windows through news-provider fallbacks

This commit is contained in:
pewdiepie-archdaemon
2026-09-17 21:00:47 +00:00
parent 492dffa811
commit 2713b44463
2 changed files with 21 additions and 8 deletions
+2 -8
View File
@@ -263,17 +263,11 @@ def searxng_search_api(query: str, count: Optional[int] = None, categories: str
active_params = params
parsed, data = _run(active_params)
if not parsed and is_news and categories == "general":
if not parsed and active_params.get("categories") == "news":
# Some self-hosted SearXNG configs have no working news engines.
# Fall back to the known-good general engines before reporting an
# empty search, otherwise common queries like "Canada news" fail.
fallback = {
"q": query,
"format": "json",
"language": "en",
"categories": "general",
"safesearch": _safesearch_for("searxng"),
}
fallback = {**active_params, "categories": "general"}
if _GENERAL_ENGINES:
fallback["engines"] = _GENERAL_ENGINES
logger.info(
+19
View File
@@ -60,6 +60,25 @@ def test_provider_does_not_silently_widen_news_window(monkeypatch):
assert seen['time_range'] == 'day'
def test_provider_keeps_news_date_window_across_empty_fallbacks(monkeypatch):
from services.search import providers
calls = []
class Response:
def raise_for_status(self): pass
def json(self): return {'results': []}
def get(url, **kwargs):
calls.append(dict(kwargs['params']))
return Response()
monkeypatch.setattr(providers, '_get_search_instance', lambda: 'http://searx.test')
monkeypatch.setattr(providers, '_get_search_settings', lambda: {})
monkeypatch.setattr(providers.httpx, 'get', get)
providers.searxng_search_api('AI news today', time_filter='day')
assert len(calls) >= 2
assert calls[0]['categories'] == 'news'
assert calls[1]['categories'] == 'general'
assert all(call['time_range'] == 'day' for call in calls)
@pytest.mark.parametrize('arguments,expected', [
({'query': 'latest browser documentation'}, None),
({'query': 'browser documentation', 'time_filter': 'month'}, 'month'),