| 
				
			 | 
			
			
				@@ -6,7 +6,7 @@ import grequests 
			 | 
		
	
		
			
			| 
				6
			 | 
			
				6
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				7
			 | 
			
				7
			 | 
			
			
				 engine_dir = dirname(realpath(__file__)) 
			 | 
		
	
		
			
			| 
				8
			 | 
			
				8
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				9
			 | 
			
				
			 | 
			
			
				-engines = [] 
			 | 
		
	
		
			
			| 
				
			 | 
			
				9
			 | 
			
			
				+engines = {} 
			 | 
		
	
		
			
			| 
				10
			 | 
			
				10
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				11
			 | 
			
				11
			 | 
			
			
				 for filename in listdir(engine_dir): 
			 | 
		
	
		
			
			| 
				12
			 | 
			
				12
			 | 
			
			
				     modname = splitext(filename)[0] 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -16,14 +16,16 @@ for filename in listdir(engine_dir): 
			 | 
		
	
		
			
			| 
				16
			 | 
			
				16
			 | 
			
			
				     engine = load_source(modname, filepath) 
			 | 
		
	
		
			
			| 
				17
			 | 
			
				17
			 | 
			
			
				     if not hasattr(engine, 'request') or not hasattr(engine, 'response'): 
			 | 
		
	
		
			
			| 
				18
			 | 
			
				18
			 | 
			
			
				         continue 
			 | 
		
	
		
			
			| 
				19
			 | 
			
				
			 | 
			
			
				-    engines.append(engine) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				19
			 | 
			
			
				+    engines[modname] = engine 
			 | 
		
	
		
			
			| 
				20
			 | 
			
				20
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				21
			 | 
			
				21
			 | 
			
			
				 def default_request_params(): 
			 | 
		
	
		
			
			| 
				22
			 | 
			
				22
			 | 
			
			
				     return {'method': 'GET', 'headers': {}, 'data': {}, 'url': ''} 
			 | 
		
	
		
			
			| 
				23
			 | 
			
				23
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				24
			 | 
			
				
			 | 
			
			
				-def make_callback(results, callback): 
			 | 
		
	
		
			
			| 
				
			 | 
			
				24
			 | 
			
			
				+def make_callback(engine_name, results, callback): 
			 | 
		
	
		
			
			| 
				25
			 | 
			
				25
			 | 
			
			
				     def process_callback(response, **kwargs): 
			 | 
		
	
		
			
			| 
				26
			 | 
			
				
			 | 
			
			
				-        results.extend(callback(response)) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				26
			 | 
			
			
				+        for result in callback(response): 
			 | 
		
	
		
			
			| 
				
			 | 
			
				27
			 | 
			
			
				+            result['engine'] = engine_name 
			 | 
		
	
		
			
			| 
				
			 | 
			
				28
			 | 
			
			
				+            results.append(result) 
			 | 
		
	
		
			
			| 
				27
			 | 
			
				29
			 | 
			
			
				     return process_callback 
			 | 
		
	
		
			
			| 
				28
			 | 
			
				30
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				29
			 | 
			
				31
			 | 
			
			
				 def search(query, request): 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -31,11 +33,11 @@ def search(query, request): 
			 | 
		
	
		
			
			| 
				31
			 | 
			
				33
			 | 
			
			
				     requests = [] 
			 | 
		
	
		
			
			| 
				32
			 | 
			
				34
			 | 
			
			
				     results = [] 
			 | 
		
	
		
			
			| 
				33
			 | 
			
				35
			 | 
			
			
				     user_agent = request.headers.get('User-Agent', '') 
			 | 
		
	
		
			
			| 
				34
			 | 
			
				
			 | 
			
			
				-    for engine in engines: 
			 | 
		
	
		
			
			| 
				
			 | 
			
				36
			 | 
			
			
				+    for ename, engine in engines.items(): 
			 | 
		
	
		
			
			| 
				35
			 | 
			
				37
			 | 
			
			
				         headers = default_request_params() 
			 | 
		
	
		
			
			| 
				36
			 | 
			
				38
			 | 
			
			
				         headers['User-Agent'] = user_agent 
			 | 
		
	
		
			
			| 
				37
			 | 
			
				39
			 | 
			
			
				         request_params = engine.request(query, headers) 
			 | 
		
	
		
			
			| 
				38
			 | 
			
				
			 | 
			
			
				-        callback = make_callback(results, engine.response) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				40
			 | 
			
			
				+        callback = make_callback(ename, results, engine.response) 
			 | 
		
	
		
			
			| 
				39
			 | 
			
				41
			 | 
			
			
				         if request_params['method'] == 'GET': 
			 | 
		
	
		
			
			| 
				40
			 | 
			
				42
			 | 
			
			
				             req = grequests.get(request_params['url'] 
			 | 
		
	
		
			
			| 
				41
			 | 
			
				43
			 | 
			
			
				                                 ,headers=headers 
			 |