diff options
author | marc <a01200356@itesm.mx> | 2016-07-06 17:29:40 -0500 |
---|---|---|
committer | firebovine <firebovine@gmail.com> | 2016-09-10 17:42:04 -0400 |
commit | 09ee2aa69dbd4815e0e1e1de53f3571972e04903 (patch) | |
tree | fbb9feb888d6b05f2fb10fba058b73e98e0adab9 /searx | |
parent | 390ad59bfcd256e9145d7ef539acaf3a83a73c8b (diff) | |
download | searxng-09ee2aa69dbd4815e0e1e1de53f3571972e04903.tar.gz searxng-09ee2aa69dbd4815e0e1e1de53f3571972e04903.zip |
[fix] Result text in Wolfram|Alpha (#607)
Diffstat (limited to 'searx')
-rw-r--r-- | searx/engines/wolframalpha_api.py | 10 | ||||
-rw-r--r-- | searx/engines/wolframalpha_noapi.py | 9 |
2 files changed, 15 insertions, 4 deletions
diff --git a/searx/engines/wolframalpha_api.py b/searx/engines/wolframalpha_api.py index 4526c825f..0e38051d1 100644 --- a/searx/engines/wolframalpha_api.py +++ b/searx/engines/wolframalpha_api.py @@ -22,6 +22,7 @@ answer_xpath = '//pod[attribute::primary="true"]/subpod/plaintext' input_xpath = '//pod[starts-with(attribute::id, "Input")]/subpod/plaintext' pods_xpath = '//pod' subpods_xpath = './subpod' +pod_primary_xpath = './@primary' pod_id_xpath = './@id' pod_title_xpath = './@title' plaintext_xpath = './plaintext' @@ -78,10 +79,12 @@ def response(resp): infobox_title = None pods = search_results.xpath(pods_xpath) + result = "" result_chunks = [] for pod in pods: pod_id = pod.xpath(pod_id_xpath)[0] pod_title = pod.xpath(pod_title_xpath)[0] + pod_is_result = pod.xpath(pod_primary_xpath) subpods = pod.xpath(subpods_xpath) if not subpods: @@ -94,6 +97,9 @@ def response(resp): if content and pod_id not in image_pods: + if pod_is_result: + result = content + # if no input pod was found, title is first plaintext pod if not infobox_title: infobox_title = content @@ -116,7 +122,7 @@ def response(resp): # append link to site results.append({'url': resp.request.headers['Referer'].decode('utf8'), - 'title': 'Wolfram|Alpha', - 'content': infobox_title}) + 'title': infobox_title + ' - Wolfram|Alpha', + 'content': result}) return results diff --git a/searx/engines/wolframalpha_noapi.py b/searx/engines/wolframalpha_noapi.py index 3a8180f04..80a510e3a 100644 --- a/searx/engines/wolframalpha_noapi.py +++ b/searx/engines/wolframalpha_noapi.py @@ -81,9 +81,11 @@ def response(resp): # TODO handle resp_json['queryresult']['assumptions'] result_chunks = [] infobox_title = None + result = "" for pod in resp_json['queryresult']['pods']: pod_id = pod.get('id', '') pod_title = pod.get('title', '') + pod_is_result = pod.get('primary', None) if 'subpods' not in pod: continue @@ -97,6 +99,9 @@ def response(resp): if subpod['plaintext'] != '(requires interactivity)': result_chunks.append({'label': pod_title, 'value': subpod['plaintext']}) + if pod_is_result: + result = subpod['plaintext'] + elif 'img' in subpod: result_chunks.append({'label': pod_title, 'image': subpod['img']}) @@ -108,7 +113,7 @@ def response(resp): 'urls': [{'title': 'Wolfram|Alpha', 'url': resp.request.headers['Referer'].decode('utf8')}]}) results.append({'url': resp.request.headers['Referer'].decode('utf8'), - 'title': 'Wolfram|Alpha', - 'content': infobox_title}) + 'title': infobox_title + ' - Wolfram|Alpha', + 'content': result}) return results |