[enh] improve gigablast engine
add language and safesearch support
This commit is contained in:
		
							parent
							
								
									371fc09b6f
								
							
						
					
					
						commit
						b9a9abe10d
					
				@ -19,11 +19,21 @@ from time import time
 | 
				
			|||||||
# engine dependent config
 | 
					# engine dependent config
 | 
				
			||||||
categories = ['general']
 | 
					categories = ['general']
 | 
				
			||||||
paging = True
 | 
					paging = True
 | 
				
			||||||
number_of_results = 5
 | 
					number_of_results = 10
 | 
				
			||||||
 | 
					language_support = True
 | 
				
			||||||
 | 
					safesearch = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# search-url, invalid HTTPS certificate
 | 
					# search-url
 | 
				
			||||||
base_url = 'https://gigablast.com/'
 | 
					base_url = 'https://gigablast.com/'
 | 
				
			||||||
search_string = 'search?{query}&n={number_of_results}&s={offset}&format=xml&qh=0&rxiyd={rxiyd}&rand={rand}'
 | 
					search_string = 'search?{query}'\
 | 
				
			||||||
 | 
					    '&n={number_of_results}'\
 | 
				
			||||||
 | 
					    '&s={offset}'\
 | 
				
			||||||
 | 
					    '&format=xml'\
 | 
				
			||||||
 | 
					    '&qh=0'\
 | 
				
			||||||
 | 
					    '&rxiyd={rxiyd}'\
 | 
				
			||||||
 | 
					    '&rand={rand}'\
 | 
				
			||||||
 | 
					    '&qlang={lang}'\
 | 
				
			||||||
 | 
					    '&ff={safesearch}'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# specific xpath variables
 | 
					# specific xpath variables
 | 
				
			||||||
results_xpath = '//response//result'
 | 
					results_xpath = '//response//result'
 | 
				
			||||||
@ -36,12 +46,23 @@ content_xpath = './/sum'
 | 
				
			|||||||
def request(query, params):
 | 
					def request(query, params):
 | 
				
			||||||
    offset = (params['pageno'] - 1) * number_of_results
 | 
					    offset = (params['pageno'] - 1) * number_of_results
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    search_path = search_string.format(
 | 
					    if params['language'] == 'all':
 | 
				
			||||||
        query=urlencode({'q': query}),
 | 
					        language = 'xx'
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        language = params['language'][0:2]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if params['safesearch'] >= 1:
 | 
				
			||||||
 | 
					        safesearch = 1
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        safesearch = 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    search_path = search_string.format(query=urlencode({'q': query}),
 | 
				
			||||||
                                       offset=offset,
 | 
					                                       offset=offset,
 | 
				
			||||||
                                       number_of_results=number_of_results,
 | 
					                                       number_of_results=number_of_results,
 | 
				
			||||||
                                       rxiyd=randint(10000, 10000000),
 | 
					                                       rxiyd=randint(10000, 10000000),
 | 
				
			||||||
        rand=int(time()))
 | 
					                                       rand=int(time()),
 | 
				
			||||||
 | 
					                                       lang=language,
 | 
				
			||||||
 | 
					                                       safesearch=safesearch)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    params['url'] = base_url + search_path
 | 
					    params['url'] = base_url + search_path
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -10,6 +10,7 @@ class TestGigablastEngine(SearxTestCase):
 | 
				
			|||||||
        query = 'test_query'
 | 
					        query = 'test_query'
 | 
				
			||||||
        dicto = defaultdict(dict)
 | 
					        dicto = defaultdict(dict)
 | 
				
			||||||
        dicto['pageno'] = 0
 | 
					        dicto['pageno'] = 0
 | 
				
			||||||
 | 
					        dicto['language'] = 'all'
 | 
				
			||||||
        params = gigablast.request(query, dicto)
 | 
					        params = gigablast.request(query, dicto)
 | 
				
			||||||
        self.assertTrue('url' in params)
 | 
					        self.assertTrue('url' in params)
 | 
				
			||||||
        self.assertTrue(query in params['url'])
 | 
					        self.assertTrue(query in params['url'])
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user