summaryrefslogtreecommitdiff
path: root/searx/engines/wolframalpha_noapi.py
diff options
context:
space:
mode:
Diffstat (limited to 'searx/engines/wolframalpha_noapi.py')
-rw-r--r--searx/engines/wolframalpha_noapi.py26
1 files changed, 19 insertions, 7 deletions
diff --git a/searx/engines/wolframalpha_noapi.py b/searx/engines/wolframalpha_noapi.py
index 9d3afe658..89a3c45b5 100644
--- a/searx/engines/wolframalpha_noapi.py
+++ b/searx/engines/wolframalpha_noapi.py
@@ -1,6 +1,7 @@
# WolframAlpha (Maths)
#
# @website http://www.wolframalpha.com/
+# @provide-api yes (http://api.wolframalpha.com/v2/)
#
# @using-api no
# @results HTML
@@ -14,12 +15,17 @@ from urllib import urlencode
# search-url
url = 'http://www.wolframalpha.com/'
search_url = url+'input/?{query}'
+search_query = ''
# do search-request
def request(query, params):
params['url'] = search_url.format(query=urlencode({'i': query}))
+ # used in response
+ global search_query
+ search_query = query
+
return params
@@ -42,14 +48,20 @@ def response(resp):
except AttributeError:
continue
- if not line:
- return results
+ if line:
+ # extract answer from json
+ answer = line[line.find('{'):line.rfind('}')+1]
+ answer = loads(answer.encode('unicode-escape'))
+ answer = answer['stringified'].decode('unicode-escape')
+
+ results.append({'answer': answer})
- # extract answer from json
- answer = line[line.find('{'):line.rfind('}')+1]
- answer = loads(answer.encode('unicode-escape'))
- answer = answer['stringified'].decode('unicode-escape')
+ # failed result
+ elif search('pfail', webpage):
+ return results
- results.append({'answer': answer})
+ # append result
+ results.append({'url': request(search_query, {})['url'],
+ 'title': search_query + ' - Wolfram|Alpha'})
return results