summaryrefslogtreecommitdiff
path: root/searx/engines/wolframalpha_api.py
diff options
context:
space:
mode:
authorLorenzo J. Lucchini <LuccoJ@users.noreply.github.com>2016-07-07 00:33:03 +0200
committerfirebovine <firebovine@gmail.com>2016-09-10 17:42:19 -0400
commita8907224a1c433b1227fd707e9bb2524dd405109 (patch)
treee9d3405c8757cbfab37f5f3854aeea2142ab9a52 /searx/engines/wolframalpha_api.py
parent09ee2aa69dbd4815e0e1e1de53f3571972e04903 (diff)
downloadsearxng-a8907224a1c433b1227fd707e9bb2524dd405109.tar.gz
searxng-a8907224a1c433b1227fd707e9bb2524dd405109.zip
Improving Wolfram Alpha search hit content
Making WA search hits contain - the (parsed) input inside the "title" instead of just "Wolfram|Alpha", to better match other hit titles and to confirm correct parsing of input to the user - the first output field that contains any text (skipping ones that are only pictures; this is usually the most meaningful "result" field) instead of the raw input as the "content", making it additionally possible to obtain WA computations from JSON API calls
Diffstat (limited to 'searx/engines/wolframalpha_api.py')
-rw-r--r--searx/engines/wolframalpha_api.py16
1 files changed, 9 insertions, 7 deletions
diff --git a/searx/engines/wolframalpha_api.py b/searx/engines/wolframalpha_api.py
index 0e38051d1..e743c8f56 100644
--- a/searx/engines/wolframalpha_api.py
+++ b/searx/engines/wolframalpha_api.py
@@ -18,7 +18,6 @@ api_key = '' # defined in settings.yml
# xpath variables
failure_xpath = '/queryresult[attribute::success="false"]'
-answer_xpath = '//pod[attribute::primary="true"]/subpod/plaintext'
input_xpath = '//pod[starts-with(attribute::id, "Input")]/subpod/plaintext'
pods_xpath = '//pod'
subpods_xpath = './subpod'
@@ -76,11 +75,11 @@ def response(resp):
try:
infobox_title = search_results.xpath(input_xpath)[0].text
except:
- infobox_title = None
+ infobox_title = ""
pods = search_results.xpath(pods_xpath)
- result = ""
result_chunks = []
+ result_content = ""
for pod in pods:
pod_id = pod.xpath(pod_id_xpath)[0]
pod_title = pod.xpath(pod_title_xpath)[0]
@@ -97,8 +96,9 @@ def response(resp):
if content and pod_id not in image_pods:
- if pod_is_result:
- result = content
+ if pod_is_result or not result_content:
+ if pod_id != "Input":
+ result_content = "%s: %s" % (pod_title, content)
# if no input pod was found, title is first plaintext pod
if not infobox_title:
@@ -115,6 +115,8 @@ def response(resp):
if not result_chunks:
return []
+ title = "Wolfram|Alpha (%s)" % infobox_title
+
# append infobox
results.append({'infobox': infobox_title,
'attributes': result_chunks,
@@ -122,7 +124,7 @@ def response(resp):
# append link to site
results.append({'url': resp.request.headers['Referer'].decode('utf8'),
- 'title': infobox_title + ' - Wolfram|Alpha',
- 'content': result})
+ 'title': title,
+ 'content': result_content})
return results