From f0054d67f11bf954cd137684950b6aea2a3956b6 Mon Sep 17 00:00:00 2001 From: Alexandre Flament Date: Fri, 4 Dec 2020 20:04:39 +0100 Subject: [fix] wikipedia engine: don't raise an error when the query is not found Add a new parameter "raise_for_status", set by default to True. When True, any HTTP status code >= 300 raise an exception ( #2332 ) When False, the engine can manage the HTTP status code by itself. --- searx/engines/wikipedia.py | 4 +++- searx/search.py | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) (limited to 'searx') diff --git a/searx/engines/wikipedia.py b/searx/engines/wikipedia.py index 620ec3c14..9fce170eb 100644 --- a/searx/engines/wikipedia.py +++ b/searx/engines/wikipedia.py @@ -37,13 +37,15 @@ def request(query, params): language=url_lang(params['language'])) params['headers']['User-Agent'] = searx_useragent() + params['raise_for_status'] = False + params['soft_max_redirects'] = 2 return params # get response from search-request def response(resp): - if not resp.ok: + if resp.status_code == 404: return [] results = [] diff --git a/searx/search.py b/searx/search.py index 8898f1576..8c2ad8d72 100644 --- a/searx/search.py +++ b/searx/search.py @@ -143,7 +143,8 @@ def send_http_request(engine, request_params): response = req(request_params['url'], **request_args) # check HTTP status - response.raise_for_status() + if request_params.get('raise_for_status'): + response.raise_for_status() # check soft limit of the redirect count if len(response.history) > soft_max_redirects: @@ -340,7 +341,8 @@ def default_request_params(): 'url': '', 'cookies': {}, 'verify': True, - 'auth': None + 'auth': None, + 'raise_for_status': True } -- cgit v1.2.3