From 3725aef6f3de3f647643ce5bd0676cf95631b844 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Fri, 17 Oct 2025 17:22:19 +0200 Subject: [PATCH] [fix] reuters: crash on empty results pages & date parsing 1. On empty result list, return empty EngineResults (#5330) 2. Use ``dateutil.parser`` to avoid ``ValueError``: ERROR searx.engines.reuters : exception : Invalid isoformat string: '2022-06-08T16:07:54Z' File "searx/engines/reuters.py", line 91, in response publishedDate=datetime.fromisoformat(result["display_time"]), ValueError: Invalid isoformat string: '2022-06-08T16:07:54Z' Closes: https://github.com/searxng/searxng/issues/5330 Co-authored-by: Markus Heiser --- searx/engines/reuters.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/searx/engines/reuters.py b/searx/engines/reuters.py index c8281c7bf..4c0f1765f 100644 --- a/searx/engines/reuters.py +++ b/searx/engines/reuters.py @@ -17,7 +17,6 @@ The engine has the following additional settings: shortcut: reu sort_order: "relevance" - Implementations =============== @@ -26,6 +25,7 @@ Implementations from json import dumps from urllib.parse import quote_plus from datetime import datetime, timedelta +from dateutil import parser from searx.result_types import EngineResults @@ -76,7 +76,11 @@ def request(query, params): def response(resp) -> EngineResults: res = EngineResults() - for result in resp.json().get("result", {}).get("articles", []): + resp_json = resp.json() + if not resp_json.get("result"): + return res + + for result in resp_json["result"].get("articles", []): res.add( res.types.MainResult( url=base_url + result["canonical_url"], @@ -84,7 +88,7 @@ def response(resp) -> EngineResults: content=result["description"], thumbnail=result.get("thumbnail", {}).get("url", ""), metadata=result.get("kicker", {}).get("name"), - publishedDate=datetime.fromisoformat(result["display_time"]), + publishedDate=parser.isoparse(result["display_time"]), ) ) return res