on master help sign in
[fix] bing paging and language support
16ff8d0Adam Tauber
searx/engines/bing.py+3−8
@@ -32,18 +32,13 @@ search_string = 'search?{query}&first={offset}'
32def request(query, params):
32def request(query, params):
33 offset = (params['pageno'] - 1) * 10 + 1
33 offset = (params['pageno'] - 1) * 10 + 1
34
34
35− if params['language'] == 'all':
35+ if params['language'] != 'all':
36− language = 'en-US'
37− else:
38− language = params['language'].replace('_', '-')
36+ query = 'language:{} {}'.format(params['language'].split('_')[0].upper(), query)
39
37
40 search_path = search_string.format(
38 search_path = search_string.format(
41− query=urlencode({'q': query, 'setmkt': language}),
39+ query=urlencode({'q': query}),
42 offset=offset)
40 offset=offset)
43
41
44− params['cookies']['SRCHHPGUSR'] = \
45− 'NEWWND=0&NRSLT=-1&SRCHLANG=' + language.split('-')[0]
46−
47 params['url'] = base_url + search_path
42 params['url'] = base_url + search_path
48 return params
43 return params
49
44
tests/unit/engines/test_bing.py+2−4
@@ -14,14 +14,12 @@ class TestBingEngine(SearxTestCase):
14 params = bing.request(query, dicto)
14 params = bing.request(query, dicto)
15 self.assertTrue('url' in params)
15 self.assertTrue('url' in params)
16 self.assertTrue(query in params['url'])
16 self.assertTrue(query in params['url'])
17+ self.assertTrue('language%3AFR' in params['url'])
17 self.assertTrue('bing.com' in params['url'])
18 self.assertTrue('bing.com' in params['url'])
18− self.assertTrue('SRCHHPGUSR' in params['cookies'])
19− self.assertTrue('fr' in params['cookies']['SRCHHPGUSR'])
20
19
21 dicto['language'] = 'all'
20 dicto['language'] = 'all'
22 params = bing.request(query, dicto)
21 params = bing.request(query, dicto)
23− self.assertTrue('SRCHHPGUSR' in params['cookies'])
22+ self.assertTrue('language' not in params['url'])
24− self.assertTrue('en' in params['cookies']['SRCHHPGUSR'])
25
23
26 def test_response(self):
24 def test_response(self):
27 self.assertRaises(AttributeError, bing.response, None)
25 self.assertRaises(AttributeError, bing.response, None)