Browse Source

Merge pull request #1681 from return42/fix-woxikon

[fix] engine woxikon.de - don't raise exception on empty result list
Markus Heiser 2 years ago
parent
commit
9ab8438132
2 changed files with 18 additions and 1 deletions
  1. 17 1
      searx/engines/xpath.py
  2. 1 0
      searx/settings.yml

+ 17 - 1
searx/engines/xpath.py

@@ -22,6 +22,7 @@ from urllib.parse import urlencode
 
 from lxml import html
 from searx.utils import extract_text, extract_url, eval_xpath, eval_xpath_list
+from searx.network import raise_for_httperror
 
 search_url = None
 """
@@ -61,6 +62,14 @@ lang_all = 'en'
 selected.
 '''
 
+no_result_for_http_status = []
+'''Return empty result for these HTTP status codes instead of throwing an error.
+
+.. code:: yaml
+
+    no_result_for_http_status: []
+'''
+
 soft_max_redirects = 0
 '''Maximum redirects, soft limit. Record an error but don't stop the engine'''
 
@@ -177,11 +186,18 @@ def request(query, params):
     params['url'] = search_url.format(**fargs)
     params['soft_max_redirects'] = soft_max_redirects
 
+    params['raise_for_httperror'] = False
+
     return params
 
 
-def response(resp):
+def response(resp):  # pylint: disable=too-many-branches
     '''Scrap *results* from the response (see :ref:`engine results`).'''
+    if no_result_for_http_status and resp.status_code in no_result_for_http_status:
+        return []
+
+    raise_for_httperror(resp)
+
     results = []
     dom = html.fromstring(resp.text)
     is_onion = 'onions' in categories

+ 1 - 0
searx/settings.yml

@@ -1808,6 +1808,7 @@ engines:
     url_xpath: //div[@class="upper-synonyms"]/a/@href
     content_xpath: //div[@class="synonyms-list-group"]
     title_xpath: //div[@class="upper-synonyms"]/a
+    no_result_for_http_status: [404]
     about:
       website: https://www.woxikon.de/
       wikidata_id:  # No Wikidata ID