Parcourir la source

Removed the keywords from the settings in qwant engine

Cqoicebordel il y a 10 ans
Parent
révision
e0774c849c
3 fichiers modifiés avec 26 ajouts et 16 suppressions
  1. 17
    7
      searx/engines/qwant.py
  2. 0
    4
      searx/settings.yml
  3. 9
    5
      searx/tests/engines/test_qwant.py

+ 17
- 7
searx/engines/qwant.py Voir le fichier

@@ -19,7 +19,10 @@ categories = None
19 19
 paging = True
20 20
 language_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 27
 # search-url
25 28
 url = '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
29 32
 def request(query, params):
30 33
     offset = (params['pageno'] - 1) * 10
31 34
 
32
-    params['url'] = url.format(keyword=search_url_keyword,
33
-                               query=urlencode({'q': query}),
34
-                               offset=offset)
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:
41
+        params['url'] = url.format(keyword='web',
42
+                                   query=urlencode({'q': query}),
43
+                                   offset=offset)
35 44
 
36 45
     # add language tag if specified
37 46
     if params['language'] != 'all':
@@ -61,12 +70,12 @@ def response(resp):
61 70
         res_url = result['url']
62 71
         content = result['desc']
63 72
 
64
-        if search_url_keyword == 'web':
73
+        if category_to_keyword.get(categories[0], '') == 'web':
65 74
             results.append({'title': title,
66 75
                             'content': content,
67 76
                             'url': res_url})
68 77
 
69
-        elif search_url_keyword == 'images':
78
+        elif category_to_keyword.get(categories[0], '') == 'images':
70 79
             thumbnail_src = result['thumbnail']
71 80
             img_src = result['media']
72 81
             results.append({'template': 'images.html',
@@ -76,7 +85,8 @@ def response(resp):
76 85
                             'thumbnail_src': thumbnail_src,
77 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 90
             published_date = datetime.fromtimestamp(result['date'], None)
81 91
 
82 92
             results.append({'url': res_url,

+ 0
- 4
searx/settings.yml Voir le fichier

@@ -171,25 +171,21 @@ engines:
171 171
   - name : qwant
172 172
     engine : qwant
173 173
     shortcut : qw
174
-    search_url_keyword : web
175 174
     categories : general
176 175
 
177 176
   - name : qwant images
178 177
     engine : qwant
179 178
     shortcut : qwi
180
-    search_url_keyword : images
181 179
     categories : images
182 180
 
183 181
   - name : qwant news
184 182
     engine : qwant
185 183
     shortcut : qwn
186
-    search_url_keyword : news
187 184
     categories : news
188 185
 
189 186
   - name : qwant social
190 187
     engine : qwant
191 188
     shortcut : qws
192
-    search_url_keyword : social
193 189
     categories : social media
194 190
 
195 191
   - name : kickass

+ 9
- 5
searx/tests/engines/test_qwant.py Voir le fichier

@@ -11,15 +11,19 @@ class TestQwantEngine(SearxTestCase):
11 11
         dicto = defaultdict(dict)
12 12
         dicto['pageno'] = 0
13 13
         dicto['language'] = 'fr_FR'
14
+        qwant.categories = ['']
14 15
         params = qwant.request(query, dicto)
15 16
         self.assertIn('url', params)
16 17
         self.assertIn(query, params['url'])
18
+        self.assertIn('web', params['url'])
17 19
         self.assertIn('qwant.com', params['url'])
18 20
         self.assertIn('fr_fr', params['url'])
19 21
 
20 22
         dicto['language'] = 'all'
23
+        qwant.categories = ['news']
21 24
         params = qwant.request(query, dicto)
22 25
         self.assertFalse('fr' in params['url'])
26
+        self.assertIn('news', params['url'])
23 27
 
24 28
     def test_response(self):
25 29
         self.assertRaises(AttributeError, qwant.response, None)
@@ -68,7 +72,7 @@ class TestQwantEngine(SearxTestCase):
68 72
         }
69 73
         """
70 74
         response = mock.Mock(text=json)
71
-        qwant.search_url_keyword = 'web'
75
+        qwant.categories = ['general']
72 76
         results = qwant.response(response)
73 77
         self.assertEqual(type(results), list)
74 78
         self.assertEqual(len(results), 1)
@@ -113,7 +117,7 @@ class TestQwantEngine(SearxTestCase):
113 117
         }
114 118
         """
115 119
         response = mock.Mock(text=json)
116
-        qwant.search_url_keyword = 'images'
120
+        qwant.categories = ['images']
117 121
         results = qwant.response(response)
118 122
         self.assertEqual(type(results), list)
119 123
         self.assertEqual(len(results), 1)
@@ -158,7 +162,7 @@ class TestQwantEngine(SearxTestCase):
158 162
         }
159 163
         """
160 164
         response = mock.Mock(text=json)
161
-        qwant.search_url_keyword = 'news'
165
+        qwant.categories = ['news']
162 166
         results = qwant.response(response)
163 167
         self.assertEqual(type(results), list)
164 168
         self.assertEqual(len(results), 1)
@@ -202,7 +206,7 @@ class TestQwantEngine(SearxTestCase):
202 206
         }
203 207
         """
204 208
         response = mock.Mock(text=json)
205
-        qwant.search_url_keyword = 'social'
209
+        qwant.categories = ['social media']
206 210
         results = qwant.response(response)
207 211
         self.assertEqual(type(results), list)
208 212
         self.assertEqual(len(results), 1)
@@ -246,7 +250,7 @@ class TestQwantEngine(SearxTestCase):
246 250
         }
247 251
         """
248 252
         response = mock.Mock(text=json)
249
-        qwant.search_url_keyword = ''
253
+        qwant.categories = ['']
250 254
         results = qwant.response(response)
251 255
         self.assertEqual(type(results), list)
252 256
         self.assertEqual(len(results), 0)