on master help sign in
[fix] faroo json api and image layout fixed
commit0607b167f85acc6c0ab4c641f14b53cb4190e445 authormisnyo <misnyo@misnyo.eu> dateWed 30 Aug 2017, 18:53 (9 years ago) parent489bf0f
3 files changed+21−44
searx/engines/faroo.py+15−34 searx/settings.yml+4−5 tests/unit/engines/test_faroo.py+2−5
searx/engines/faroo.py+15−34
@@ -4,7 +4,7 @@
44 @website http://www.faroo.com
55 @provide-api yes (http://www.faroo.com/hp/api/api.html), require API-key
66
7− @using-api yes
7+ @using-api no
88 @results JSON
99 @stable yes
1010 @parse url, title, content, publishedDate, img_src
@@ -20,18 +20,16 @@ categories = ['general', 'news']
2020paging = True
2121language_support = True
2222number_of_results = 10
23−api_key = None
2423
2524# search-url
2625url = 'http://www.faroo.com/'
27−search_url = url + 'api?{query}'\
26+search_url = url + 'instant.json?{query}'\
2827 '&start={offset}'\
2928 '&length={number_of_results}'\
3029 '&l={language}'\
3130 '&src={categorie}'\
3231 '&i=false'\
33− '&f=json'\
34− '&key={api_key}' # noqa
32+ '&c=false'
3533
3634search_category = {'general': 'web',
3735 'news': 'news'}
@@ -57,21 +55,15 @@ def request(query, params):
5755 number_of_results=number_of_results,
5856 query=urlencode({'q': query}),
5957 language=language,
60− categorie=categorie,
61− api_key=api_key)
58+ categorie=categorie)
6259
63− # using searx User-Agent
64− params['headers']['User-Agent'] = searx_useragent()
60+ params['headers']['Referer'] = url
6561
6662 return params
6763
6864
6965# get response from search-request
7066def response(resp):
71− # HTTP-Code 401: api-key is not valide
72− if resp.status_code == 401:
73− raise Exception("API key is not valide")
74−
7567 # HTTP-Code 429: rate limit exceeded
7668 if resp.status_code == 429:
7769 raise Exception("rate limit has been exceeded!")
@@ -86,31 +78,20 @@ def response(resp):
8678
8779 # parse results
8880 for result in search_res['results']:
81+ publishedDate = None
82+ result_json = {'url': result['url'],
83+ 'title': result['title'],
84+ 'content': result['kwic']}
8985 if result['news']:
90− # timestamp (milliseconds since 1970)
91− publishedDate = datetime.datetime.fromtimestamp(result['date'] / 1000.0) # noqa
92−
93− # append news result
94− results.append({'url': result['url'],
95− 'title': result['title'],
96− 'publishedDate': publishedDate,
97− 'content': result['kwic']})
98−
99− else:
100− # append general result
101− # TODO, publishedDate correct?
102− results.append({'url': result['url'],
103− 'title': result['title'],
104− 'content': result['kwic']})
86+ result_json['publishedDate'] = \
87+ datetime.datetime.fromtimestamp(result['date'] / 1000.0)
10588
10689 # append image result if image url is set
107− # TODO, show results with an image like in faroo
10890 if result['iurl']:
109− results.append({'template': 'images.html',
110− 'url': result['url'],
111− 'title': result['title'],
112− 'content': result['kwic'],
113− 'img_src': result['iurl']})
91+ result_json['template'] ='videos.html'
92+ result_json['thumbnail'] = result['iurl']
93+
94+ results.append(result_json)
11495
11596 # return results
11697 return results
searx/settings.yml+4−5
@@ -189,11 +189,10 @@ engines:
189189 shortcut : et
190190 disabled : True
191191
192−# api-key required: http://www.faroo.com/hp/api/api.html#key
193−# - name : faroo
194−# engine : faroo
195−# shortcut : fa
196−# api_key : 'apikey' # required!
192+ - name : faroo
193+ engine : faroo
194+ shortcut : fa
195+ disabled : True
197196
198197 - name : 500px
199198 engine : www500px
tests/unit/engines/test_faroo.py+2−5
@@ -40,9 +40,6 @@ class TestFarooEngine(SearxTestCase):
4040 response = mock.Mock(text='{"data": []}')
4141 self.assertEqual(faroo.response(response), [])
4242
43− response = mock.Mock(text='{"data": []}', status_code=401)
44− self.assertRaises(Exception, faroo.response, response)
45−
4643 response = mock.Mock(text='{"data": []}', status_code=429)
4744 self.assertRaises(Exception, faroo.response, response)
4845
@@ -98,14 +95,14 @@ class TestFarooEngine(SearxTestCase):
9895 response = mock.Mock(text=json)
9996 results = faroo.response(response)
10097 self.assertEqual(type(results), list)
101− self.assertEqual(len(results), 4)
98+ self.assertEqual(len(results), 3)
10299 self.assertEqual(results[0]['title'], 'This is the title')
103100 self.assertEqual(results[0]['url'], 'http://this.is.the.url/')
104101 self.assertEqual(results[0]['content'], 'This is the content')
105102 self.assertEqual(results[1]['title'], 'This is the title2')
106103 self.assertEqual(results[1]['url'], 'http://this.is.the.url2/')
107104 self.assertEqual(results[1]['content'], 'This is the content2')
108− self.assertEqual(results[3]['img_src'], 'http://upload.wikimedia.org/optimized.jpg')
105+ self.assertEqual(results[2]['thumbnail'], 'http://upload.wikimedia.org/optimized.jpg')
109106
110107 json = """
111108 {}