summaryrefslogtreecommitdiff
path: root/searx/engines/__init__.py
diff options
context:
space:
mode:
authorasciimoo <asciimoo@gmail.com>2013-10-15 19:11:43 +0200
committerasciimoo <asciimoo@gmail.com>2013-10-15 19:11:43 +0200
commitd793c2733c7aac3aacf40f3f5cf9fc0919305e76 (patch)
tree0a6f500a17f14d9da4921ad8fbeaf63f1ebccac1 /searx/engines/__init__.py
parentc3b7ed868783691d5678977779e91568cc2f2fec (diff)
[enh] engine types
Diffstat (limited to 'searx/engines/__init__.py')
-rw-r--r--searx/engines/__init__.py14
1 files changed, 8 insertions, 6 deletions
diff --git a/searx/engines/__init__.py b/searx/engines/__init__.py
index ced673bde..86fa50d2a 100644
--- a/searx/engines/__init__.py
+++ b/searx/engines/__init__.py
@@ -6,7 +6,7 @@ import grequests
engine_dir = dirname(realpath(__file__))
-engines = []
+engines = {}
for filename in listdir(engine_dir):
modname = splitext(filename)[0]
@@ -16,14 +16,16 @@ for filename in listdir(engine_dir):
engine = load_source(modname, filepath)
if not hasattr(engine, 'request') or not hasattr(engine, 'response'):
continue
- engines.append(engine)
+ engines[modname] = engine
def default_request_params():
return {'method': 'GET', 'headers': {}, 'data': {}, 'url': ''}
-def make_callback(results, callback):
+def make_callback(engine_name, results, callback):
def process_callback(response, **kwargs):
- results.extend(callback(response))
+ for result in callback(response):
+ result['engine'] = engine_name
+ results.append(result)
return process_callback
def search(query, request):
@@ -31,11 +33,11 @@ def search(query, request):
requests = []
results = []
user_agent = request.headers.get('User-Agent', '')
- for engine in engines:
+ for ename, engine in engines.items():
headers = default_request_params()
headers['User-Agent'] = user_agent
request_params = engine.request(query, headers)
- callback = make_callback(results, engine.response)
+ callback = make_callback(ename, results, engine.response)
if request_params['method'] == 'GET':
req = grequests.get(request_params['url']
,headers=headers