asciimoo пре 11 година
родитељ
комит
a346327c6f
1 измењених фајлова са 6 додато и 3 уклоњено
  1. 6
    3
      searx/engines/__init__.py

+ 6
- 3
searx/engines/__init__.py Прегледај датотеку

3
 from os import listdir
3
 from os import listdir
4
 from imp import load_source
4
 from imp import load_source
5
 import grequests
5
 import grequests
6
+from itertools import izip_longest, chain
6
 
7
 
7
 engine_dir = dirname(realpath(__file__))
8
 engine_dir = dirname(realpath(__file__))
8
 
9
 
23
 
24
 
24
 def make_callback(engine_name, results, callback):
25
 def make_callback(engine_name, results, callback):
25
     def process_callback(response, **kwargs):
26
     def process_callback(response, **kwargs):
27
+        cb_res = []
26
         for result in callback(response):
28
         for result in callback(response):
27
             result['engine'] = engine_name
29
             result['engine'] = engine_name
28
-            results.append(result)
30
+            cb_res.append(result)
31
+        results[engine_name] = cb_res
29
     return process_callback
32
     return process_callback
30
 
33
 
31
 def search(query, request, selected_engines):
34
 def search(query, request, selected_engines):
32
     global engines
35
     global engines
33
     requests = []
36
     requests = []
34
-    results = []
37
+    results = {}
35
     user_agent = request.headers.get('User-Agent', '')
38
     user_agent = request.headers.get('User-Agent', '')
36
     for ename, engine in engines.items():
39
     for ename, engine in engines.items():
37
         if ename not in selected_engines:
40
         if ename not in selected_engines:
53
                                 )
56
                                 )
54
         requests.append(req)
57
         requests.append(req)
55
     grequests.map(requests)
58
     grequests.map(requests)
56
-    return results
59
+    return list(filter(None, chain(*izip_longest(*results.values()))))