summaryrefslogtreecommitdiff
path: root/searx/engines/yacy.py
diff options
context:
space:
mode:
authorBnyro <bnyro@tutanota.com>2023-10-08 19:27:48 +0200
committerMarkus Heiser <markus.heiser@darmarIT.de>2023-10-09 20:50:24 +0200
commitfa5b2a7948044522c0fa6d763f436e55c7600b95 (patch)
treec0504fd8c60b367e2de9f85f6b927fe9fa040075 /searx/engines/yacy.py
parent5d53aac20f0cb0737bb475d51ce429e8547d3e33 (diff)
downloadsearxng-fa5b2a7948044522c0fa6d763f436e55c7600b95.tar.gz
searxng-fa5b2a7948044522c0fa6d763f436e55c7600b95.zip
[mod] yacy: use official instance by default and fix crashes
Diffstat (limited to 'searx/engines/yacy.py')
-rw-r--r--searx/engines/yacy.py62
1 files changed, 44 insertions, 18 deletions
diff --git a/searx/engines/yacy.py b/searx/engines/yacy.py
index 0603a4564..50c7886c0 100644
--- a/searx/engines/yacy.py
+++ b/searx/engines/yacy.py
@@ -18,17 +18,27 @@ Configuration
The engine has the following (additional) settings:
+- :py:obj:`http_digest_auth_user`
+- :py:obj:`http_digest_auth_pass`
+- :py:obj:`search_mode`
+- :py:obj:`search_type`
+
.. code:: yaml
- - name: yacy
- engine: yacy
- shortcut: ya
- base_url: http://localhost:8090
- # Yacy search mode. 'global' or 'local'.
- search_mode: 'global'
- number_of_results: 5
- http_digest_auth_user: ""
- http_digest_auth_pass: ""
+ - name: yacy
+ engine: yacy
+ categories: general
+ search_type: text
+ base_url: https://yacy.searchlab.eu
+ shortcut: ya
+
+ - name: yacy images
+ engine: yacy
+ categories: images
+ search_type: image
+ base_url: https://yacy.searchlab.eu
+ shortcut: yai
+ disabled: true
Implementations
@@ -55,11 +65,14 @@ about = {
}
# engine dependent config
-categories = ['general', 'images'] # TODO , 'music', 'videos', 'files'
+categories = ['general']
paging = True
-number_of_results = 5
+number_of_results = 10
http_digest_auth_user = ""
+"""HTTP digest user for the local YACY instance"""
http_digest_auth_pass = ""
+"""HTTP digest password for the local YACY instance"""
+
search_mode = 'global'
"""Yacy search mode ``global`` or ``local``. By default, Yacy operates in ``global``
mode.
@@ -70,8 +83,13 @@ mode.
``local``
Privacy or Stealth mode, restricts the search to local yacy instance.
"""
+search_type = 'text'
+"""One of ``text``, ``image`` / The search-types ``app``, ``audio`` and
+``video`` are not yet implemented (Pull-Requests are welcome).
+"""
+
# search-url
-base_url = 'http://localhost:8090'
+base_url = 'https://yacy.searchlab.eu'
search_url = (
'/yacysearch.json?{query}'
'&startRecord={offset}'
@@ -80,13 +98,19 @@ search_url = (
'&resource={resource}'
)
-# yacy specific type-definitions
-search_types = {'general': 'text', 'images': 'image', 'files': 'app', 'music': 'audio', 'videos': 'video'}
+
+def init(_):
+ valid_types = [
+ 'text',
+ 'image',
+ # 'app', 'audio', 'video',
+ ]
+ if search_type not in valid_types:
+ raise ValueError('search_type "%s" is not one of %s' % (search_type, valid_types))
def request(query, params):
offset = (params['pageno'] - 1) * number_of_results
- search_type = search_types.get(params.get('category'), '0')
params['url'] = base_url + search_url.format(
query=urlencode({'query': query}),
@@ -122,7 +146,7 @@ def response(resp):
for result in search_results[0].get('items', []):
# parse image results
- if resp.search_params.get('category') == 'images':
+ if search_type == 'image':
result_url = ''
if 'url' in result:
result_url = result['url']
@@ -144,12 +168,14 @@ def response(resp):
# parse general results
else:
- publishedDate = parser.parse(result['pubDate'])
+ publishedDate = None
+ if 'pubDate' in result:
+ publishedDate = parser.parse(result['pubDate'])
# append result
results.append(
{
- 'url': result['link'],
+ 'url': result['link'] or '',
'title': result['title'],
'content': html_to_text(result['description']),
'publishedDate': publishedDate,