| 
														
															@@ -20,10 +20,12 @@ from searx.engines.xpath import extract_text, extract_url 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 categories = ['general'] 
														 | 
														
														 | 
														
															 categories = ['general'] 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 paging = True 
														 | 
														
														 | 
														
															 paging = True 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 language_support = True 
														 | 
														
														 | 
														
															 language_support = True 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+time_range_support = True 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # search-url 
														 | 
														
														 | 
														
															 # search-url 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 base_url = 'https://search.yahoo.com/' 
														 | 
														
														 | 
														
															 base_url = 'https://search.yahoo.com/' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 search_url = 'search?{query}&b={offset}&fl=1&vl=lang_{lang}' 
														 | 
														
														 | 
														
															 search_url = 'search?{query}&b={offset}&fl=1&vl=lang_{lang}' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+search_url_with_time = 'search?{query}&b={offset}&fl=1&vl=lang_{lang}&age={age}&btf={btf}&fr2=time' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # specific xpath variables 
														 | 
														
														 | 
														
															 # specific xpath variables 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 results_xpath = "//div[contains(concat(' ', normalize-space(@class), ' '), ' Sr ')]" 
														 | 
														
														 | 
														
															 results_xpath = "//div[contains(concat(' ', normalize-space(@class), ' '), ' Sr ')]" 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -32,6 +34,9 @@ title_xpath = './/h3/a' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 content_xpath = './/div[@class="compText aAbs"]' 
														 | 
														
														 | 
														
															 content_xpath = './/div[@class="compText aAbs"]' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 suggestion_xpath = "//div[contains(concat(' ', normalize-space(@class), ' '), ' AlsoTry ')]//a" 
														 | 
														
														 | 
														
															 suggestion_xpath = "//div[contains(concat(' ', normalize-space(@class), ' '), ' AlsoTry ')]//a" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+time_range_dict = {'day': ['1d', 'd'], 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                   'week': ['1w', 'w'], 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                   'month': ['1m', 'm']} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # remove yahoo-specific tracking-url 
														 | 
														
														 | 
														
															 # remove yahoo-specific tracking-url 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 def parse_url(url_string): 
														 | 
														
														 | 
														
															 def parse_url(url_string): 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -51,18 +56,30 @@ def parse_url(url_string): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         return unquote(url_string[start:end]) 
														 | 
														
														 | 
														
															         return unquote(url_string[start:end]) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+def _get_url(query, offset, language, time_range): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if time_range: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        return base_url + search_url_with_time.format(offset=offset, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                                      query=urlencode({'p': query}), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                                      lang=language, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                                      age=time_range_dict[time_range][0], 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                                      btf=time_range_dict[time_range][1]) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    return base_url + search_url.format(offset=offset, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                        query=urlencode({'p': query}), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                        lang=language) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+def _get_language(params): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if params['language'] == 'all': 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        return 'en' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    return params['language'].split('_')[0] 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 # do search-request 
														 | 
														
														 | 
														
															 # do search-request 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 def request(query, params): 
														 | 
														
														 | 
														
															 def request(query, params): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     offset = (params['pageno'] - 1) * 10 + 1 
														 | 
														
														 | 
														
															     offset = (params['pageno'] - 1) * 10 + 1 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    language = _get_language(params) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    if params['language'] == 'all': 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        language = 'en' 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    else: 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        language = params['language'].split('_')[0] 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    params['url'] = base_url + search_url.format(offset=offset, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                                                 query=urlencode({'p': query}), 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                                                 lang=language) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    params['url'] = _get_url(query, offset, language, params['time_range']) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     # TODO required? 
														 | 
														
														 | 
														
															     # TODO required? 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     params['cookies']['sB'] = 'fl=1&vl=lang_{lang}&sh=1&rw=new&v=1'\ 
														 | 
														
														 | 
														
															     params['cookies']['sB'] = 'fl=1&vl=lang_{lang}&sh=1&rw=new&v=1'\ 
														 |