[enh] improve gigablast engine

add language and safesearch support
This commit is contained in:
Thomas Pointhuber 2015-12-23 18:43:35 +01:00
parent 371fc09b6f
commit b9a9abe10d
2 changed files with 31 additions and 9 deletions

View File

@ -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

View File

@ -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'])