diff options
| author | Bnyro <bnyro@tutanota.com> | 2025-10-17 17:22:19 +0200 |
|---|---|---|
| committer | Bnyro <bnyro@tutanota.com> | 2025-10-18 14:43:35 +0200 |
| commit | 3725aef6f3de3f647643ce5bd0676cf95631b844 (patch) | |
| tree | 4b87e628a0c107ad6458702a537da2e15031e883 /searx/engines/reuters.py | |
| parent | e840e3f96025537edbcfa9a5c61a2a05934edfc7 (diff) | |
[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 <markus.heiser@darmarit.de>
Diffstat (limited to 'searx/engines/reuters.py')
| -rw-r--r-- | searx/engines/reuters.py | 10 |
1 files 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 |