on master help sign in
Merge pull request #474 from pointhi/gigablast-improvements
91c850cAdam Tauber
searx/engines/gigablast.py+30−9
@@ -19,11 +19,21 @@ from time import time
19# engine dependent config
19# engine dependent config
20categories = ['general']
20categories = ['general']
21paging = True
21paging = True
22−number_of_results = 5
22+number_of_results = 10
23+language_support = True
24+safesearch = True
23
25
24−# search-url, invalid HTTPS certificate
26+# search-url
25base_url = 'https://gigablast.com/'
27base_url = 'https://gigablast.com/'
26−search_string = 'search?{query}&n={number_of_results}&s={offset}&format=xml&qh=0&rxiyd={rxiyd}&rand={rand}'
28+search_string = 'search?{query}'\
29+ '&n={number_of_results}'\
30+ '&s={offset}'\
31+ '&format=xml'\
32+ '&qh=0'\
33+ '&rxiyd={rxiyd}'\
34+ '&rand={rand}'\
35+ '&qlang={lang}'\
36+ '&ff={safesearch}'
27
37
28# specific xpath variables
38# specific xpath variables
29results_xpath = '//response//result'
39results_xpath = '//response//result'
@@ -36,12 +46,23 @@ content_xpath = './/sum'
36def request(query, params):
46def request(query, params):
37 offset = (params['pageno'] - 1) * number_of_results
47 offset = (params['pageno'] - 1) * number_of_results
38
48
49+ if params['language'] == 'all':
50+ language = 'xx'
51+ else:
52+ language = params['language'][0:2]
53+
54+ if params['safesearch'] >= 1:
55+ safesearch = 1
56+ else:
57+ safesearch = 0
58+
39− search_path = search_string.format(
59+ search_path = search_string.format(query=urlencode({'q': query}),
40− query=urlencode({'q': query}),
41− offset=offset,
60+ offset=offset,
42− number_of_results=number_of_results,
61+ number_of_results=number_of_results,
43− rxiyd=randint(10000, 10000000),
62+ rxiyd=randint(10000, 10000000),
44− rand=int(time()))
63+ rand=int(time()),
64+ lang=language,
65+ safesearch=safesearch)
45
66
46 params['url'] = base_url + search_path
67 params['url'] = base_url + search_path
47
68
searx/tests/engines/test_gigablast.py+1
@@ -10,6 +10,7 @@ class TestGigablastEngine(SearxTestCase):
10 query = 'test_query'
10 query = 'test_query'
11 dicto = defaultdict(dict)
11 dicto = defaultdict(dict)
12 dicto['pageno'] = 0
12 dicto['pageno'] = 0
13+ dicto['language'] = 'all'
13 params = gigablast.request(query, dicto)
14 params = gigablast.request(query, dicto)
14 self.assertTrue('url' in params)
15 self.assertTrue('url' in params)
15 self.assertTrue(query in params['url'])
16 self.assertTrue(query in params['url'])