@@ -4,7 +4,7 @@
4 @website http://www.faroo.com
4 @website http://www.faroo.com
5 @provide-api yes (http://www.faroo.com/hp/api/api.html), require API-key
5 @provide-api yes (http://www.faroo.com/hp/api/api.html), require API-key
7− @using-api yes
7+ @using-api no
8 @results JSON
8 @results JSON
9 @stable yes
9 @stable yes
10 @parse url, title, content, publishedDate, img_src
10 @parse url, title, content, publishedDate, img_src
@@ -20,18 +20,16 @@ categories = ['general', 'news']
20paging = True
20paging = True
21language_support = True
21language_support = True
22number_of_results = 10
22number_of_results = 10
25# search-url
24# search-url
26url = 'http://www.faroo.com/'
25url = 'http://www.faroo.com/'
27−search_url = url + 'api?{query}'\
26+search_url = url + 'instant.json?{query}'\
28 '&start={offset}'\
27 '&start={offset}'\
29 '&length={number_of_results}'\
28 '&length={number_of_results}'\
30 '&l={language}'\
29 '&l={language}'\
31 '&src={categorie}'\
30 '&src={categorie}'\
32 '&i=false'\
31 '&i=false'\
33− '&f=json'\
32+ '&c=false'
34− '&key={api_key}' # noqa
36search_category = {'general': 'web',
34search_category = {'general': 'web',
37 'news': 'news'}
35 'news': 'news'}
@@ -57,21 +55,15 @@ def request(query, params):
57 number_of_results=number_of_results,
55 number_of_results=number_of_results,
58 query=urlencode({'q': query}),
56 query=urlencode({'q': query}),
59 language=language,
57 language=language,
60− categorie=categorie,
58+ categorie=categorie)
63− # using searx User-Agent
64− params['headers']['User-Agent'] = searx_useragent()
60+ params['headers']['Referer'] = url
66 return params
62 return params
69# get response from search-request
65# get response from search-request
70def response(resp):
66def 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")
75 # HTTP-Code 429: rate limit exceeded
67 # HTTP-Code 429: rate limit exceeded
76 if resp.status_code == 429:
68 if resp.status_code == 429:
77 raise Exception("rate limit has been exceeded!")
69 raise Exception("rate limit has been exceeded!")
@@ -86,31 +78,20 @@ def response(resp):
87 # parse results
79 # parse results
88 for result in search_res['results']:
80 for result in search_res['results']:
82+ result_json = {'url': result['url'],
83+ 'title': result['title'],
84+ 'content': result['kwic']}
89 if result['news']:
85 if result['news']:
90− # timestamp (milliseconds since 1970)
86+ result_json['publishedDate'] = \
91− publishedDate = datetime.datetime.fromtimestamp(result['date'] / 1000.0) # noqa
87+ datetime.datetime.fromtimestamp(result['date'] / 1000.0)
94− results.append({'url': result['url'],
95− 'title': result['title'],
96− 'publishedDate': publishedDate,
97− 'content': result['kwic']})
100− # append general result
101− # TODO, publishedDate correct?
102− results.append({'url': result['url'],
103− 'title': result['title'],
104− 'content': result['kwic']})
106 # append image result if image url is set
89 # append image result if image url is set
107− # TODO, show results with an image like in faroo
108 if result['iurl']:
90 if result['iurl']:
109− results.append({'template': 'images.html',
91+ result_json['template'] ='videos.html'
110− 'url': result['url'],
111− 'title': result['title'],
112− 'content': result['kwic'],
113− 'img_src': result['iurl']})
92+ result_json['thumbnail'] = result['iurl']
94+ results.append(result_json)
115 # return results
96 # return results
116 return results
97 return results