瀏覽代碼

Removed the keywords from the settings in qwant engine

Cqoicebordel 10 年之前
父節點
當前提交
e0774c849c
共有 3 個檔案被更改,包括 26 行新增16 行删除
  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 查看文件

19
 paging = True
19
 paging = True
20
 language_support = True
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
 # search-url
27
 # search-url
25
 url = 'https://api.qwant.com/api/search/{keyword}?count=10&offset={offset}&f=&{query}'
28
 url = 'https://api.qwant.com/api/search/{keyword}?count=10&offset={offset}&f=&{query}'
29
 def request(query, params):
32
 def request(query, params):
30
     offset = (params['pageno'] - 1) * 10
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
     # add language tag if specified
45
     # add language tag if specified
37
     if params['language'] != 'all':
46
     if params['language'] != 'all':
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
                             '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,

+ 0
- 4
searx/settings.yml 查看文件

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

+ 9
- 5
searx/tests/engines/test_qwant.py 查看文件

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
         }
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
         }
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
         }
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
         }
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
         }
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)