Cqoicebordel пре 10 година
родитељ
комит
f05087b93a

+ 30
- 8
searx/engines/qwant.py Прегледај датотеку

@@ -1,5 +1,5 @@
1 1
 """
2
- Qwant (Web)
2
+ Qwant (Web, Images, News, Social)
3 3
 
4 4
  @website     https://qwant.com/
5 5
  @provide-api not officially (https://api.qwant.com/api/search/)
@@ -12,21 +12,25 @@
12 12
 
13 13
 from urllib import urlencode
14 14
 from json import loads
15
+from datetime import datetime
15 16
 
16 17
 # engine dependent config
17
-categories = ['general']
18
+categories = None
18 19
 paging = True
19 20
 language_support = True
20 21
 
22
+search_url_keyword = None
23
+
21 24
 # search-url
22
-url = 'https://api.qwant.com/api/search/web?count=10&offset={offset}&f=&{query}'
25
+url = 'https://api.qwant.com/api/search/{keyword}?count=10&offset={offset}&f=&{query}'
23 26
 
24 27
 
25 28
 # do search-request
26 29
 def request(query, params):
27 30
     offset = (params['pageno'] - 1) * 10
28 31
 
29
-    params['url'] = url.format(query=urlencode({'q': query}),
32
+    params['url'] = url.format(keyword=search_url_keyword,
33
+                               query=urlencode({'q': query}),
30 34
                                offset=offset)
31 35
 
32 36
     # add language tag if specified
@@ -57,10 +61,28 @@ def response(resp):
57 61
         res_url = result['url']
58 62
         content = result['desc']
59 63
 
60
-        # append result
61
-        results.append({'title': title,
62
-                        'content': content,
63
-                        'url': res_url})
64
+        if search_url_keyword == 'web':
65
+            results.append({'title': title,
66
+                            'content': content,
67
+                            'url': res_url})
68
+
69
+        elif search_url_keyword == 'images':
70
+            thumbnail_src = result['thumbnail']
71
+            img_src = result['media']
72
+            results.append({'template': 'images.html',
73
+                            'url': res_url,
74
+                            'title': title,
75
+                            'content': '',
76
+                            'thumbnail_src': thumbnail_src,
77
+                            'img_src': img_src})
78
+
79
+        elif search_url_keyword == 'news' or search_url_keyword == 'social':
80
+            published_date = datetime.fromtimestamp(result['date'], None)
81
+
82
+            results.append({'url': res_url,
83
+                            'title': title,
84
+                            'publishedDate': published_date,
85
+                            'content': content})
64 86
 
65 87
     # return results
66 88
     return results

+ 0
- 70
searx/engines/qwant_images.py Прегледај датотеку

@@ -1,70 +0,0 @@
1
-"""
2
- Qwant (Images)
3
-
4
- @website     https://qwant.com/
5
- @provide-api not officially (https://api.qwant.com/api/search/)
6
-
7
- @using-api   yes
8
- @results     JSON
9
- @stable      yes
10
- @parse       url, title, content
11
-"""
12
-
13
-from urllib import urlencode
14
-from json import loads
15
-
16
-# engine dependent config
17
-categories = ['images']
18
-paging = True
19
-language_support = True
20
-
21
-# search-url
22
-url = 'https://api.qwant.com/api/search/images?count=10&offset={offset}&f=&{query}'
23
-
24
-
25
-# do search-request
26
-def request(query, params):
27
-    offset = (params['pageno'] - 1) * 10
28
-
29
-    params['url'] = url.format(query=urlencode({'q': query}),
30
-                               offset=offset)
31
-
32
-    # add language tag if specified
33
-    if params['language'] != 'all':
34
-        params['url'] += '&locale=' + params['language'].lower()
35
-
36
-    return params
37
-
38
-
39
-# get response from search-request
40
-def response(resp):
41
-    results = []
42
-
43
-    search_results = loads(resp.text)
44
-
45
-    # return empty array if there are no results
46
-    if 'data' not in search_results:
47
-        return []
48
-
49
-    data = search_results.get('data', {})
50
-
51
-    res = data.get('result', {})
52
-
53
-    # parse results
54
-    for result in res.get('items', {}):
55
-
56
-        title = result['title']
57
-        res_url = result['url']
58
-        thumbnail_src = result['thumbnail']
59
-        img_src = result['media']
60
-
61
-        # append result
62
-        results.append({'template': 'images.html',
63
-                        'url': res_url,
64
-                        'title': title,
65
-                        'content': '',
66
-                        'thumbnail_src': thumbnail_src,
67
-                        'img_src': img_src})
68
-
69
-    # return results
70
-    return results

+ 0
- 69
searx/engines/qwant_news.py Прегледај датотеку

@@ -1,69 +0,0 @@
1
-"""
2
- Qwant (News)
3
-
4
- @website     https://qwant.com/
5
- @provide-api not officially (https://api.qwant.com/api/search/)
6
-
7
- @using-api   yes
8
- @results     JSON
9
- @stable      yes
10
- @parse       url, title, content
11
-"""
12
-
13
-from urllib import urlencode
14
-from json import loads
15
-from datetime import datetime
16
-
17
-# engine dependent config
18
-categories = ['news']
19
-paging = True
20
-language_support = True
21
-
22
-# search-url
23
-url = 'https://api.qwant.com/api/search/news?count=10&offset={offset}&f=&{query}'
24
-
25
-
26
-# do search-request
27
-def request(query, params):
28
-    offset = (params['pageno'] - 1) * 10
29
-
30
-    params['url'] = url.format(query=urlencode({'q': query}),
31
-                               offset=offset)
32
-
33
-    # add language tag if specified
34
-    if params['language'] != 'all':
35
-        params['url'] += '&locale=' + params['language'].lower()
36
-
37
-    return params
38
-
39
-
40
-# get response from search-request
41
-def response(resp):
42
-    results = []
43
-
44
-    search_results = loads(resp.text)
45
-
46
-    # return empty array if there are no results
47
-    if 'data' not in search_results:
48
-        return []
49
-
50
-    data = search_results.get('data', {})
51
-
52
-    res = data.get('result', {})
53
-
54
-    # parse results
55
-    for result in res.get('items', {}):
56
-
57
-        title = result['title']
58
-        res_url = result['url']
59
-        content = result['desc']
60
-        published_date = datetime.fromtimestamp(result['date'], None)
61
-
62
-        # append result
63
-        results.append({'url': res_url,
64
-                        'title': title,
65
-                        'publishedDate': published_date,
66
-                        'content': content})
67
-
68
-    # return results
69
-    return results

+ 0
- 69
searx/engines/qwant_social.py Прегледај датотеку

@@ -1,69 +0,0 @@
1
-"""
2
- Qwant (social media)
3
-
4
- @website     https://qwant.com/
5
- @provide-api not officially (https://api.qwant.com/api/search/)
6
-
7
- @using-api   yes
8
- @results     JSON
9
- @stable      yes
10
- @parse       url, title, content
11
-"""
12
-
13
-from urllib import urlencode
14
-from json import loads
15
-from datetime import datetime
16
-
17
-# engine dependent config
18
-categories = ['social media']
19
-paging = True
20
-language_support = True
21
-
22
-# search-url
23
-url = 'https://api.qwant.com/api/search/social?count=10&offset={offset}&f=&{query}'
24
-
25
-
26
-# do search-request
27
-def request(query, params):
28
-    offset = (params['pageno'] - 1) * 10
29
-
30
-    params['url'] = url.format(query=urlencode({'q': query}),
31
-                               offset=offset)
32
-
33
-    # add language tag if specified
34
-    if params['language'] != 'all':
35
-        params['url'] += '&locale=' + params['language'].lower()
36
-
37
-    return params
38
-
39
-
40
-# get response from search-request
41
-def response(resp):
42
-    results = []
43
-
44
-    search_results = loads(resp.text)
45
-
46
-    # return empty array if there are no results
47
-    if 'data' not in search_results:
48
-        return []
49
-
50
-    data = search_results.get('data', {})
51
-
52
-    res = data.get('result', {})
53
-
54
-    # parse results
55
-    for result in res.get('items', {}):
56
-
57
-        title = result['title']
58
-        res_url = result['url']
59
-        content = result['desc']
60
-        published_date = datetime.fromtimestamp(result['date'], None)
61
-
62
-        # append result
63
-        results.append({'url': res_url,
64
-                        'title': title,
65
-                        'content': content,
66
-                        'publishedDate': published_date})
67
-
68
-    # return results
69
-    return results

+ 11
- 3
searx/settings.yml Прегледај датотеку

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

+ 176
- 0
searx/tests/engines/test_qwant.py Прегледај датотеку

@@ -68,6 +68,7 @@ class TestQwantEngine(SearxTestCase):
68 68
         }
69 69
         """
70 70
         response = mock.Mock(text=json)
71
+        qwant.search_url_keyword = 'web'
71 72
         results = qwant.response(response)
72 73
         self.assertEqual(type(results), list)
73 74
         self.assertEqual(len(results), 1)
@@ -85,6 +86,181 @@ class TestQwantEngine(SearxTestCase):
85 86
               "offset": 10
86 87
             },
87 88
             "result": {
89
+              "items": [
90
+                {
91
+                  "title": "Title",
92
+                  "score": 9999,
93
+                  "url": "http://www.url.xyz",
94
+                  "source": "...",
95
+                  "media": "http://image.jpg",
96
+                  "desc": "",
97
+                  "thumbnail": "http://thumbnail.jpg",
98
+                  "date": "",
99
+                  "_id": "db0aadd62c2a8565567ffc382f5c61fa",
100
+                  "favicon": "https://s.qwant.com/fav.ico"
101
+                }
102
+              ],
103
+              "filters": []
104
+            },
105
+            "cache": {
106
+              "key": "e66aa864c00147a0e3a16ff7a5efafde",
107
+              "created": 1433092754,
108
+              "expiration": 259200,
109
+              "status": "miss",
110
+              "age": 0
111
+            }
112
+          }
113
+        }
114
+        """
115
+        response = mock.Mock(text=json)
116
+        qwant.search_url_keyword = 'images'
117
+        results = qwant.response(response)
118
+        self.assertEqual(type(results), list)
119
+        self.assertEqual(len(results), 1)
120
+        self.assertEqual(results[0]['title'], 'Title')
121
+        self.assertEqual(results[0]['url'], 'http://www.url.xyz')
122
+        self.assertEqual(results[0]['content'], '')
123
+        self.assertEqual(results[0]['thumbnail_src'], 'http://thumbnail.jpg')
124
+        self.assertEqual(results[0]['img_src'], 'http://image.jpg')
125
+
126
+        json = """
127
+        {
128
+          "status": "success",
129
+          "data": {
130
+            "query": {
131
+              "locale": "en_us",
132
+              "query": "Test",
133
+              "offset": 10
134
+            },
135
+            "result": {
136
+              "items": [
137
+                {
138
+                  "title": "Title",
139
+                  "score": 9999,
140
+                  "url": "http://www.url.xyz",
141
+                  "source": "...",
142
+                  "desc": "Description",
143
+                  "date": 1433260920,
144
+                  "_id": "db0aadd62c2a8565567ffc382f5c61fa",
145
+                  "favicon": "https://s.qwant.com/fav.ico"
146
+                }
147
+              ],
148
+              "filters": []
149
+            },
150
+            "cache": {
151
+              "key": "e66aa864c00147a0e3a16ff7a5efafde",
152
+              "created": 1433092754,
153
+              "expiration": 259200,
154
+              "status": "miss",
155
+              "age": 0
156
+            }
157
+          }
158
+        }
159
+        """
160
+        response = mock.Mock(text=json)
161
+        qwant.search_url_keyword = 'news'
162
+        results = qwant.response(response)
163
+        self.assertEqual(type(results), list)
164
+        self.assertEqual(len(results), 1)
165
+        self.assertEqual(results[0]['title'], 'Title')
166
+        self.assertEqual(results[0]['url'], 'http://www.url.xyz')
167
+        self.assertEqual(results[0]['content'], 'Description')
168
+        self.assertIn('publishedDate', results[0])
169
+
170
+        json = """
171
+        {
172
+          "status": "success",
173
+          "data": {
174
+            "query": {
175
+              "locale": "en_us",
176
+              "query": "Test",
177
+              "offset": 10
178
+            },
179
+            "result": {
180
+              "items": [
181
+                {
182
+                  "title": "Title",
183
+                  "score": 9999,
184
+                  "url": "http://www.url.xyz",
185
+                  "source": "...",
186
+                  "desc": "Description",
187
+                  "date": 1433260920,
188
+                  "_id": "db0aadd62c2a8565567ffc382f5c61fa",
189
+                  "favicon": "https://s.qwant.com/fav.ico"
190
+                }
191
+              ],
192
+              "filters": []
193
+            },
194
+            "cache": {
195
+              "key": "e66aa864c00147a0e3a16ff7a5efafde",
196
+              "created": 1433092754,
197
+              "expiration": 259200,
198
+              "status": "miss",
199
+              "age": 0
200
+            }
201
+          }
202
+        }
203
+        """
204
+        response = mock.Mock(text=json)
205
+        qwant.search_url_keyword = 'social'
206
+        results = qwant.response(response)
207
+        self.assertEqual(type(results), list)
208
+        self.assertEqual(len(results), 1)
209
+        self.assertEqual(results[0]['title'], 'Title')
210
+        self.assertEqual(results[0]['url'], 'http://www.url.xyz')
211
+        self.assertEqual(results[0]['content'], 'Description')
212
+        self.assertIn('publishedDate', results[0])
213
+
214
+        json = """
215
+        {
216
+          "status": "success",
217
+          "data": {
218
+            "query": {
219
+              "locale": "en_us",
220
+              "query": "Test",
221
+              "offset": 10
222
+            },
223
+            "result": {
224
+              "items": [
225
+                {
226
+                  "title": "Title",
227
+                  "score": 9999,
228
+                  "url": "http://www.url.xyz",
229
+                  "source": "...",
230
+                  "desc": "Description",
231
+                  "date": 1433260920,
232
+                  "_id": "db0aadd62c2a8565567ffc382f5c61fa",
233
+                  "favicon": "https://s.qwant.com/fav.ico"
234
+                }
235
+              ],
236
+              "filters": []
237
+            },
238
+            "cache": {
239
+              "key": "e66aa864c00147a0e3a16ff7a5efafde",
240
+              "created": 1433092754,
241
+              "expiration": 259200,
242
+              "status": "miss",
243
+              "age": 0
244
+            }
245
+          }
246
+        }
247
+        """
248
+        response = mock.Mock(text=json)
249
+        qwant.search_url_keyword = ''
250
+        results = qwant.response(response)
251
+        self.assertEqual(type(results), list)
252
+        self.assertEqual(len(results), 0)
253
+
254
+        json = """
255
+        {
256
+          "status": "success",
257
+          "data": {
258
+            "query": {
259
+              "locale": "en_us",
260
+              "query": "Test",
261
+              "offset": 10
262
+            },
263
+            "result": {
88 264
               "filters": []
89 265
             },
90 266
             "cache": {

+ 0
- 145
searx/tests/engines/test_qwant_images.py Прегледај датотеку

@@ -1,145 +0,0 @@
1
-from collections import defaultdict
2
-import mock
3
-from searx.engines import qwant_images
4
-from searx.testing import SearxTestCase
5
-
6
-
7
-class TestQwantImagesEngine(SearxTestCase):
8
-
9
-    def test_request(self):
10
-        query = 'test_query'
11
-        dicto = defaultdict(dict)
12
-        dicto['pageno'] = 0
13
-        dicto['language'] = 'fr_FR'
14
-        params = qwant_images.request(query, dicto)
15
-        self.assertIn('url', params)
16
-        self.assertIn(query, params['url'])
17
-        self.assertIn('qwant.com', params['url'])
18
-        self.assertIn('fr_fr', params['url'])
19
-
20
-        dicto['language'] = 'all'
21
-        params = qwant_images.request(query, dicto)
22
-        self.assertFalse('fr' in params['url'])
23
-
24
-    def test_response(self):
25
-        self.assertRaises(AttributeError, qwant_images.response, None)
26
-        self.assertRaises(AttributeError, qwant_images.response, [])
27
-        self.assertRaises(AttributeError, qwant_images.response, '')
28
-        self.assertRaises(AttributeError, qwant_images.response, '[]')
29
-
30
-        response = mock.Mock(text='{}')
31
-        self.assertEqual(qwant_images.response(response), [])
32
-
33
-        response = mock.Mock(text='{"data": {}}')
34
-        self.assertEqual(qwant_images.response(response), [])
35
-
36
-        json = """
37
-        {
38
-          "status": "success",
39
-          "data": {
40
-            "query": {
41
-              "locale": "en_us",
42
-              "query": "Test",
43
-              "offset": 10
44
-            },
45
-            "result": {
46
-              "items": [
47
-                {
48
-                  "title": "Title",
49
-                  "type": "image",
50
-                  "media": "http://www.url.xyz/fullimage.jpg",
51
-                  "desc": "",
52
-                  "thumbnail": "http://www.url.xyz/thumbnail.jpg",
53
-                  "thumb_width": 365,
54
-                  "thumb_height": 230,
55
-                  "width": "365",
56
-                  "height": "230",
57
-                  "size": "187.7KB",
58
-                  "url": "http://www.url.xyz",
59
-                  "_id": "0ffd93fb26f3e192a6020af8fc16fbb1",
60
-                  "media_fullsize": "http://www.proxy/fullimage.jpg",
61
-                  "count": 0
62
-                }
63
-              ],
64
-              "filters": []
65
-            },
66
-            "cache": {
67
-              "key": "e66aa864c00147a0e3a16ff7a5efafde",
68
-              "created": 1433092754,
69
-              "expiration": 259200,
70
-              "status": "miss",
71
-              "age": 0
72
-            }
73
-          }
74
-        }
75
-        """
76
-        response = mock.Mock(text=json)
77
-        results = qwant_images.response(response)
78
-        self.assertEqual(type(results), list)
79
-        self.assertEqual(len(results), 1)
80
-        self.assertEqual(results[0]['title'], 'Title')
81
-        self.assertEqual(results[0]['url'], 'http://www.url.xyz')
82
-        self.assertEqual(results[0]['content'], '')
83
-        self.assertEqual(results[0]['thumbnail_src'], 'http://www.url.xyz/thumbnail.jpg')
84
-        self.assertEqual(results[0]['img_src'], 'http://www.url.xyz/fullimage.jpg')
85
-
86
-        json = """
87
-        {
88
-          "status": "success",
89
-          "data": {
90
-            "query": {
91
-              "locale": "en_us",
92
-              "query": "Test",
93
-              "offset": 10
94
-            },
95
-            "result": {
96
-              "filters": []
97
-            },
98
-            "cache": {
99
-              "key": "e66aa864c00147a0e3a16ff7a5efafde",
100
-              "created": 1433092754,
101
-              "expiration": 259200,
102
-              "status": "miss",
103
-              "age": 0
104
-            }
105
-          }
106
-        }
107
-        """
108
-        response = mock.Mock(text=json)
109
-        results = qwant_images.response(response)
110
-        self.assertEqual(type(results), list)
111
-        self.assertEqual(len(results), 0)
112
-
113
-        json = """
114
-        {
115
-          "status": "success",
116
-          "data": {
117
-            "query": {
118
-              "locale": "en_us",
119
-              "query": "Test",
120
-              "offset": 10
121
-            },
122
-            "cache": {
123
-              "key": "e66aa864c00147a0e3a16ff7a5efafde",
124
-              "created": 1433092754,
125
-              "expiration": 259200,
126
-              "status": "miss",
127
-              "age": 0
128
-            }
129
-          }
130
-        }
131
-        """
132
-        response = mock.Mock(text=json)
133
-        results = qwant_images.response(response)
134
-        self.assertEqual(type(results), list)
135
-        self.assertEqual(len(results), 0)
136
-
137
-        json = """
138
-        {
139
-          "status": "success"
140
-        }
141
-        """
142
-        response = mock.Mock(text=json)
143
-        results = qwant_images.response(response)
144
-        self.assertEqual(type(results), list)
145
-        self.assertEqual(len(results), 0)

+ 0
- 137
searx/tests/engines/test_qwant_news.py Прегледај датотеку

@@ -1,137 +0,0 @@
1
-from collections import defaultdict
2
-import mock
3
-from searx.engines import qwant_news
4
-from searx.testing import SearxTestCase
5
-
6
-
7
-class TestQwantNewsEngine(SearxTestCase):
8
-
9
-    def test_request(self):
10
-        query = 'test_query'
11
-        dicto = defaultdict(dict)
12
-        dicto['pageno'] = 0
13
-        dicto['language'] = 'fr_FR'
14
-        params = qwant_news.request(query, dicto)
15
-        self.assertIn('url', params)
16
-        self.assertIn(query, params['url'])
17
-        self.assertIn('qwant.com', params['url'])
18
-        self.assertIn('fr_fr', params['url'])
19
-
20
-        dicto['language'] = 'all'
21
-        params = qwant_news.request(query, dicto)
22
-        self.assertFalse('fr' in params['url'])
23
-
24
-    def test_response(self):
25
-        self.assertRaises(AttributeError, qwant_news.response, None)
26
-        self.assertRaises(AttributeError, qwant_news.response, [])
27
-        self.assertRaises(AttributeError, qwant_news.response, '')
28
-        self.assertRaises(AttributeError, qwant_news.response, '[]')
29
-
30
-        response = mock.Mock(text='{}')
31
-        self.assertEqual(qwant_news.response(response), [])
32
-
33
-        response = mock.Mock(text='{"data": {}}')
34
-        self.assertEqual(qwant_news.response(response), [])
35
-
36
-        json = """
37
-        {
38
-          "status": "success",
39
-          "data": {
40
-            "query": {
41
-              "locale": "en_us",
42
-              "query": "Test",
43
-              "offset": 10
44
-            },
45
-            "result": {
46
-              "items": [
47
-                {
48
-                  "title": "Title",
49
-                  "score": 9999,
50
-                  "url": "http://www.url.xyz",
51
-                  "source": "...",
52
-                  "desc": "Description",
53
-                  "date": 1433065411,
54
-                  "_id": "db0aadd62c2a8565567ffc382f5c61fa",
55
-                  "favicon": "https://s.qwant.com/fav.ico"
56
-                }
57
-              ],
58
-              "filters": []
59
-            },
60
-            "cache": {
61
-              "key": "e66aa864c00147a0e3a16ff7a5efafde",
62
-              "created": 1433092754,
63
-              "expiration": 259200,
64
-              "status": "miss",
65
-              "age": 0
66
-            }
67
-          }
68
-        }
69
-        """
70
-        response = mock.Mock(text=json)
71
-        results = qwant_news.response(response)
72
-        self.assertEqual(type(results), list)
73
-        self.assertEqual(len(results), 1)
74
-        self.assertEqual(results[0]['title'], 'Title')
75
-        self.assertEqual(results[0]['url'], 'http://www.url.xyz')
76
-        self.assertEqual(results[0]['content'], 'Description')
77
-
78
-        json = """
79
-        {
80
-          "status": "success",
81
-          "data": {
82
-            "query": {
83
-              "locale": "en_us",
84
-              "query": "Test",
85
-              "offset": 10
86
-            },
87
-            "result": {
88
-              "filters": []
89
-            },
90
-            "cache": {
91
-              "key": "e66aa864c00147a0e3a16ff7a5efafde",
92
-              "created": 1433092754,
93
-              "expiration": 259200,
94
-              "status": "miss",
95
-              "age": 0
96
-            }
97
-          }
98
-        }
99
-        """
100
-        response = mock.Mock(text=json)
101
-        results = qwant_news.response(response)
102
-        self.assertEqual(type(results), list)
103
-        self.assertEqual(len(results), 0)
104
-
105
-        json = """
106
-        {
107
-          "status": "success",
108
-          "data": {
109
-            "query": {
110
-              "locale": "en_us",
111
-              "query": "Test",
112
-              "offset": 10
113
-            },
114
-            "cache": {
115
-              "key": "e66aa864c00147a0e3a16ff7a5efafde",
116
-              "created": 1433092754,
117
-              "expiration": 259200,
118
-              "status": "miss",
119
-              "age": 0
120
-            }
121
-          }
122
-        }
123
-        """
124
-        response = mock.Mock(text=json)
125
-        results = qwant_news.response(response)
126
-        self.assertEqual(type(results), list)
127
-        self.assertEqual(len(results), 0)
128
-
129
-        json = """
130
-        {
131
-          "status": "success"
132
-        }
133
-        """
134
-        response = mock.Mock(text=json)
135
-        results = qwant_news.response(response)
136
-        self.assertEqual(type(results), list)
137
-        self.assertEqual(len(results), 0)

+ 0
- 140
searx/tests/engines/test_qwant_social.py Прегледај датотеку

@@ -1,140 +0,0 @@
1
-from collections import defaultdict
2
-import mock
3
-from searx.engines import qwant_social
4
-from searx.testing import SearxTestCase
5
-
6
-
7
-class TestQwantSocialEngine(SearxTestCase):
8
-
9
-    def test_request(self):
10
-        query = 'test_query'
11
-        dicto = defaultdict(dict)
12
-        dicto['pageno'] = 0
13
-        dicto['language'] = 'fr_FR'
14
-        params = qwant_social.request(query, dicto)
15
-        self.assertIn('url', params)
16
-        self.assertIn(query, params['url'])
17
-        self.assertIn('qwant.com', params['url'])
18
-        self.assertIn('fr_fr', params['url'])
19
-
20
-        dicto['language'] = 'all'
21
-        params = qwant_social.request(query, dicto)
22
-        self.assertFalse('fr' in params['url'])
23
-
24
-    def test_response(self):
25
-        self.assertRaises(AttributeError, qwant_social.response, None)
26
-        self.assertRaises(AttributeError, qwant_social.response, [])
27
-        self.assertRaises(AttributeError, qwant_social.response, '')
28
-        self.assertRaises(AttributeError, qwant_social.response, '[]')
29
-
30
-        response = mock.Mock(text='{}')
31
-        self.assertEqual(qwant_social.response(response), [])
32
-
33
-        response = mock.Mock(text='{"data": {}}')
34
-        self.assertEqual(qwant_social.response(response), [])
35
-
36
-        json = """
37
-        {
38
-          "status": "success",
39
-          "data": {
40
-            "query": {
41
-              "locale": "en_us",
42
-              "query": "Test",
43
-              "offset": 10
44
-            },
45
-            "result": {
46
-              "items": [
47
-                {
48
-                  "_id": "dc0b3f24c93684c7d7f1b0a4c2d9f1b0",
49
-                  "__index": 32,
50
-                  "title": "Title",
51
-                  "img": "img",
52
-                  "desc": "Description",
53
-                  "date": 1432643480,
54
-                  "type": "twitter",
55
-                  "card": "XXX",
56
-                  "post": "603176590856556545",
57
-                  "url": "http://www.url.xyz",
58
-                  "userUrl": "https://twitter.com/XXX"
59
-                }
60
-              ],
61
-              "filters": []
62
-            },
63
-            "cache": {
64
-              "key": "e66aa864c00147a0e3a16ff7a5efafde",
65
-              "created": 1433092754,
66
-              "expiration": 259200,
67
-              "status": "miss",
68
-              "age": 0
69
-            }
70
-          }
71
-        }
72
-        """
73
-        response = mock.Mock(text=json)
74
-        results = qwant_social.response(response)
75
-        self.assertEqual(type(results), list)
76
-        self.assertEqual(len(results), 1)
77
-        self.assertEqual(results[0]['title'], 'Title')
78
-        self.assertEqual(results[0]['url'], 'http://www.url.xyz')
79
-        self.assertEqual(results[0]['content'], 'Description')
80
-
81
-        json = """
82
-        {
83
-          "status": "success",
84
-          "data": {
85
-            "query": {
86
-              "locale": "en_us",
87
-              "query": "Test",
88
-              "offset": 10
89
-            },
90
-            "result": {
91
-              "filters": []
92
-            },
93
-            "cache": {
94
-              "key": "e66aa864c00147a0e3a16ff7a5efafde",
95
-              "created": 1433092754,
96
-              "expiration": 259200,
97
-              "status": "miss",
98
-              "age": 0
99
-            }
100
-          }
101
-        }
102
-        """
103
-        response = mock.Mock(text=json)
104
-        results = qwant_social.response(response)
105
-        self.assertEqual(type(results), list)
106
-        self.assertEqual(len(results), 0)
107
-
108
-        json = """
109
-        {
110
-          "status": "success",
111
-          "data": {
112
-            "query": {
113
-              "locale": "en_us",
114
-              "query": "Test",
115
-              "offset": 10
116
-            },
117
-            "cache": {
118
-              "key": "e66aa864c00147a0e3a16ff7a5efafde",
119
-              "created": 1433092754,
120
-              "expiration": 259200,
121
-              "status": "miss",
122
-              "age": 0
123
-            }
124
-          }
125
-        }
126
-        """
127
-        response = mock.Mock(text=json)
128
-        results = qwant_social.response(response)
129
-        self.assertEqual(type(results), list)
130
-        self.assertEqual(len(results), 0)
131
-
132
-        json = """
133
-        {
134
-          "status": "success"
135
-        }
136
-        """
137
-        response = mock.Mock(text=json)
138
-        results = qwant_social.response(response)
139
-        self.assertEqual(type(results), list)
140
-        self.assertEqual(len(results), 0)

+ 0
- 3
searx/tests/test_engines.py Прегледај датотеку

@@ -26,9 +26,6 @@ from searx.tests.engines.test_openstreetmap import *  # noqa
26 26
 from searx.tests.engines.test_photon import *  # noqa
27 27
 from searx.tests.engines.test_piratebay import *  # noqa
28 28
 from searx.tests.engines.test_qwant import *  # noqa
29
-from searx.tests.engines.test_qwant_images import *  # noqa
30
-from searx.tests.engines.test_qwant_news import *  # noqa
31
-from searx.tests.engines.test_qwant_social import *  # noqa
32 29
 from searx.tests.engines.test_searchcode_code import *  # noqa
33 30
 from searx.tests.engines.test_searchcode_doc import *  # noqa
34 31
 from searx.tests.engines.test_soundcloud import *  # noqa