on master help sign in
Removed the keywords from the settings in qwant engine
e0774c8Cqoicebordel
searx/engines/qwant.py+17−7
@@ -19,7 +19,10 @@ categories = None
19paging = True
19paging = True
20language_support = True
20language_support = True
21
21
22−search_url_keyword = None
22+category_to_keyword = {'general': 'web',
23+ 'images': 'images',
24+ 'news': 'news',
25+ 'social media': 'social'}
23
26
24# search-url
27# search-url
25url = 'https://api.qwant.com/api/search/{keyword}?count=10&offset={offset}&f=&{query}'
28url = 'https://api.qwant.com/api/search/{keyword}?count=10&offset={offset}&f=&{query}'
@@ -29,9 +32,15 @@ url = 'https://api.qwant.com/api/search/{keyword}?count=10&offset={offset}&f=&{q
29def request(query, params):
32def request(query, params):
30 offset = (params['pageno'] - 1) * 10
33 offset = (params['pageno'] - 1) * 10
31
34
35+ if categories[0] and categories[0] in category_to_keyword:
36+
37+ params['url'] = url.format(keyword=category_to_keyword[categories[0]],
38+ query=urlencode({'q': query}),
39+ offset=offset)
40+ else:
32− params['url'] = url.format(keyword=search_url_keyword,
41+ params['url'] = url.format(keyword='web',
33− query=urlencode({'q': query}),
42+ query=urlencode({'q': query}),
34− offset=offset)
43+ offset=offset)
35
44
36 # add language tag if specified
45 # add language tag if specified
37 if params['language'] != 'all':
46 if params['language'] != 'all':
@@ -61,12 +70,12 @@ def response(resp):
61 res_url = result['url']
70 res_url = result['url']
62 content = result['desc']
71 content = result['desc']
63
72
64− if search_url_keyword == 'web':
73+ if category_to_keyword.get(categories[0], '') == 'web':
65 results.append({'title': title,
74 results.append({'title': title,
66 'content': content,
75 'content': content,
67 'url': res_url})
76 'url': res_url})
68
77
69− elif search_url_keyword == 'images':
78+ elif category_to_keyword.get(categories[0], '') == 'images':
70 thumbnail_src = result['thumbnail']
79 thumbnail_src = result['thumbnail']
71 img_src = result['media']
80 img_src = result['media']
72 results.append({'template': 'images.html',
81 results.append({'template': 'images.html',
@@ -76,7 +85,8 @@ def response(resp):
76 'thumbnail_src': thumbnail_src,
85 'thumbnail_src': thumbnail_src,
77 'img_src': img_src})
86 'img_src': img_src})
78
87
79− elif search_url_keyword == 'news' or search_url_keyword == 'social':
88+ elif (category_to_keyword.get(categories[0], '') == 'news' or
89+ category_to_keyword.get(categories[0], '') == 'social'):
80 published_date = datetime.fromtimestamp(result['date'], None)
90 published_date = datetime.fromtimestamp(result['date'], None)
81
91
82 results.append({'url': res_url,
92 results.append({'url': res_url,
searx/settings.yml−4
@@ -171,25 +171,21 @@ engines:
171 - name : qwant
171 - name : qwant
172 engine : qwant
172 engine : qwant
173 shortcut : qw
173 shortcut : qw
174− search_url_keyword : web
175 categories : general
174 categories : general
176
175
177 - name : qwant images
176 - name : qwant images
178 engine : qwant
177 engine : qwant
179 shortcut : qwi
178 shortcut : qwi
180− search_url_keyword : images
181 categories : images
179 categories : images
182
180
183 - name : qwant news
181 - name : qwant news
184 engine : qwant
182 engine : qwant
185 shortcut : qwn
183 shortcut : qwn
186− search_url_keyword : news
187 categories : news
184 categories : news
188
185
189 - name : qwant social
186 - name : qwant social
190 engine : qwant
187 engine : qwant
191 shortcut : qws
188 shortcut : qws
192− search_url_keyword : social
193 categories : social media
189 categories : social media
194
190
195 - name : kickass
191 - name : kickass
searx/tests/engines/test_qwant.py+9−5
@@ -11,15 +11,19 @@ class TestQwantEngine(SearxTestCase):
11 dicto = defaultdict(dict)
11 dicto = defaultdict(dict)
12 dicto['pageno'] = 0
12 dicto['pageno'] = 0
13 dicto['language'] = 'fr_FR'
13 dicto['language'] = 'fr_FR'
14+ qwant.categories = ['']
14 params = qwant.request(query, dicto)
15 params = qwant.request(query, dicto)
15 self.assertIn('url', params)
16 self.assertIn('url', params)
16 self.assertIn(query, params['url'])
17 self.assertIn(query, params['url'])
18+ self.assertIn('web', params['url'])
17 self.assertIn('qwant.com', params['url'])
19 self.assertIn('qwant.com', params['url'])
18 self.assertIn('fr_fr', params['url'])
20 self.assertIn('fr_fr', params['url'])
19
21
20 dicto['language'] = 'all'
22 dicto['language'] = 'all'
23+ qwant.categories = ['news']
21 params = qwant.request(query, dicto)
24 params = qwant.request(query, dicto)
22 self.assertFalse('fr' in params['url'])
25 self.assertFalse('fr' in params['url'])
26+ self.assertIn('news', params['url'])
23
27
24 def test_response(self):
28 def test_response(self):
25 self.assertRaises(AttributeError, qwant.response, None)
29 self.assertRaises(AttributeError, qwant.response, None)
@@ -68,7 +72,7 @@ class TestQwantEngine(SearxTestCase):
68 }
72 }
69 """
73 """
70 response = mock.Mock(text=json)
74 response = mock.Mock(text=json)
71− qwant.search_url_keyword = 'web'
75+ qwant.categories = ['general']
72 results = qwant.response(response)
76 results = qwant.response(response)
73 self.assertEqual(type(results), list)
77 self.assertEqual(type(results), list)
74 self.assertEqual(len(results), 1)
78 self.assertEqual(len(results), 1)
@@ -113,7 +117,7 @@ class TestQwantEngine(SearxTestCase):
113 }
117 }
114 """
118 """
115 response = mock.Mock(text=json)
119 response = mock.Mock(text=json)
116− qwant.search_url_keyword = 'images'
120+ qwant.categories = ['images']
117 results = qwant.response(response)
121 results = qwant.response(response)
118 self.assertEqual(type(results), list)
122 self.assertEqual(type(results), list)
119 self.assertEqual(len(results), 1)
123 self.assertEqual(len(results), 1)
@@ -158,7 +162,7 @@ class TestQwantEngine(SearxTestCase):
158 }
162 }
159 """
163 """
160 response = mock.Mock(text=json)
164 response = mock.Mock(text=json)
161− qwant.search_url_keyword = 'news'
165+ qwant.categories = ['news']
162 results = qwant.response(response)
166 results = qwant.response(response)
163 self.assertEqual(type(results), list)
167 self.assertEqual(type(results), list)
164 self.assertEqual(len(results), 1)
168 self.assertEqual(len(results), 1)
@@ -202,7 +206,7 @@ class TestQwantEngine(SearxTestCase):
202 }
206 }
203 """
207 """
204 response = mock.Mock(text=json)
208 response = mock.Mock(text=json)
205− qwant.search_url_keyword = 'social'
209+ qwant.categories = ['social media']
206 results = qwant.response(response)
210 results = qwant.response(response)
207 self.assertEqual(type(results), list)
211 self.assertEqual(type(results), list)
208 self.assertEqual(len(results), 1)
212 self.assertEqual(len(results), 1)
@@ -246,7 +250,7 @@ class TestQwantEngine(SearxTestCase):
246 }
250 }
247 """
251 """
248 response = mock.Mock(text=json)
252 response = mock.Mock(text=json)
249− qwant.search_url_keyword = ''
253+ qwant.categories = ['']
250 results = qwant.response(response)
254 results = qwant.response(response)
251 self.assertEqual(type(results), list)
255 self.assertEqual(type(results), list)
252 self.assertEqual(len(results), 0)
256 self.assertEqual(len(results), 0)