From a492ca6dedc477655f5cfcfb67b845779b825348 Mon Sep 17 00:00:00 2001 From: pw3t Date: Sun, 29 Dec 2013 21:39:23 +0100 Subject: [PATCH] [enh] add support for yacy engine (localhost) --- searx/engines/yacy.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 searx/engines/yacy.py diff --git a/searx/engines/yacy.py b/searx/engines/yacy.py new file mode 100644 index 000000000..e24edde56 --- /dev/null +++ b/searx/engines/yacy.py @@ -0,0 +1,38 @@ +from json import loads +from urllib import urlencode, quote + +url = 'http://localhost:8090' +search_url = '/yacysearch.json?{query}&maximumRecords=10' + +def request(query, params): + params['url'] = url + search_url.format(query=urlencode({'query':query})) + return params + +def response(resp): + raw_search_results = loads(resp.text) + + if not len(raw_search_results): + return [] + + search_results = raw_search_results.get('channels', {})[0].get('items', []) + + results = [] + + for result in search_results: + tmp_result = {} + tmp_result['title'] = result['title'] + tmp_result['url'] = result['link'] + tmp_result['content'] = '' + + if len(result['description']): + tmp_result['content'] += result['description'] +"
" + + if len(result['pubDate']): + tmp_result['content'] += result['pubDate'] + "
" + + if result['size'] != '-1': + tmp_result['content'] += result['sizename'] + + results.append(tmp_result) + + return results