summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorasciimoo <asciimoo@gmail.com>2013-10-15 23:20:26 +0200
committerasciimoo <asciimoo@gmail.com>2013-10-15 23:20:26 +0200
commita346327c6fa96d6e79e0f1636547615b3a4a5a33 (patch)
treeb898eb2f177c309ddd9b28faf02f6e58b0552d00
parentc4dfd416ad1ffab0ea76a87a2c8dcce07b59e512 (diff)
[enh] result ordering
-rw-r--r--searx/engines/__init__.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/searx/engines/__init__.py b/searx/engines/__init__.py
index 1b47a9f5f..1dc1ea34f 100644
--- a/searx/engines/__init__.py
+++ b/searx/engines/__init__.py
@@ -3,6 +3,7 @@ from os.path import realpath, dirname, splitext, join
from os import listdir
from imp import load_source
import grequests
+from itertools import izip_longest, chain
engine_dir = dirname(realpath(__file__))
@@ -23,15 +24,17 @@ def default_request_params():
def make_callback(engine_name, results, callback):
def process_callback(response, **kwargs):
+ cb_res = []
for result in callback(response):
result['engine'] = engine_name
- results.append(result)
+ cb_res.append(result)
+ results[engine_name] = cb_res
return process_callback
def search(query, request, selected_engines):
global engines
requests = []
- results = []
+ results = {}
user_agent = request.headers.get('User-Agent', '')
for ename, engine in engines.items():
if ename not in selected_engines:
@@ -53,4 +56,4 @@ def search(query, request, selected_engines):
)
requests.append(req)
grequests.map(requests)
- return results
+ return list(filter(None, chain(*izip_longest(*results.values()))))