diff options
author | Alexandre Flament <alex@al-f.net> | 2020-12-04 20:42:45 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-04 20:42:45 +0100 |
commit | cdceec1cbb2ca894572396e0a68c2d09b0769231 (patch) | |
tree | 3205b87615421c6f725a984567da1cd821e770f1 | |
parent | d9494283ccf122ea9791a5afeedb09890c908493 (diff) | |
parent | f0054d67f11bf954cd137684950b6aea2a3956b6 (diff) | |
download | searxng-cdceec1cbb2ca894572396e0a68c2d09b0769231.tar.gz searxng-cdceec1cbb2ca894572396e0a68c2d09b0769231.zip |
Merge pull request #2354 from dalf/fix-wikipedia
[fix] wikipedia engine: don't raise an error when the query is not found
-rw-r--r-- | docs/dev/engine_overview.rst | 7 | ||||
-rw-r--r-- | searx/engines/wikipedia.py | 4 | ||||
-rw-r--r-- | searx/search.py | 6 |
3 files changed, 11 insertions, 6 deletions
diff --git a/docs/dev/engine_overview.rst b/docs/dev/engine_overview.rst index 0f58af765..0b5f9857f 100644 --- a/docs/dev/engine_overview.rst +++ b/docs/dev/engine_overview.rst @@ -134,9 +134,9 @@ The function ``def request(query, params):`` always returns the ``params`` variable. Inside searx, the following paramters can be used to specify a search request: -================== =========== ======================================================================== +================== =========== ========================================================================== argument type information -================== =========== ======================================================================== +================== =========== ========================================================================== url string requested url method string HTTP request method headers set HTTP header information @@ -145,7 +145,8 @@ cookies set HTTP cookies verify boolean Performing SSL-Validity check max_redirects int maximum redirects, hard limit soft_max_redirects int maximum redirects, soft limit. Record an error but don't stop the engine -================== =========== ======================================================================== +raise_for_status bool True by default: raise an exception if the HTTP code of response is >= 300 +================== =========== ========================================================================== example code 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 } |