|
@@ -18,10 +18,10 @@ api_key = '' # defined in settings.yml
|
18
|
18
|
|
19
|
19
|
# xpath variables
|
20
|
20
|
failure_xpath = '/queryresult[attribute::success="false"]'
|
21
|
|
-answer_xpath = '//pod[attribute::primary="true"]/subpod/plaintext'
|
22
|
21
|
input_xpath = '//pod[starts-with(attribute::id, "Input")]/subpod/plaintext'
|
23
|
22
|
pods_xpath = '//pod'
|
24
|
23
|
subpods_xpath = './subpod'
|
|
24
|
+pod_primary_xpath = './@primary'
|
25
|
25
|
pod_id_xpath = './@id'
|
26
|
26
|
pod_title_xpath = './@title'
|
27
|
27
|
plaintext_xpath = './plaintext'
|
|
@@ -75,13 +75,15 @@ def response(resp):
|
75
|
75
|
try:
|
76
|
76
|
infobox_title = search_results.xpath(input_xpath)[0].text
|
77
|
77
|
except:
|
78
|
|
- infobox_title = None
|
|
78
|
+ infobox_title = ""
|
79
|
79
|
|
80
|
80
|
pods = search_results.xpath(pods_xpath)
|
81
|
81
|
result_chunks = []
|
|
82
|
+ result_content = ""
|
82
|
83
|
for pod in pods:
|
83
|
84
|
pod_id = pod.xpath(pod_id_xpath)[0]
|
84
|
85
|
pod_title = pod.xpath(pod_title_xpath)[0]
|
|
86
|
+ pod_is_result = pod.xpath(pod_primary_xpath)
|
85
|
87
|
|
86
|
88
|
subpods = pod.xpath(subpods_xpath)
|
87
|
89
|
if not subpods:
|
|
@@ -94,6 +96,10 @@ def response(resp):
|
94
|
96
|
|
95
|
97
|
if content and pod_id not in image_pods:
|
96
|
98
|
|
|
99
|
+ if pod_is_result or not result_content:
|
|
100
|
+ if pod_id != "Input":
|
|
101
|
+ result_content = "%s: %s" % (pod_title, content)
|
|
102
|
+
|
97
|
103
|
# if no input pod was found, title is first plaintext pod
|
98
|
104
|
if not infobox_title:
|
99
|
105
|
infobox_title = content
|
|
@@ -109,6 +115,8 @@ def response(resp):
|
109
|
115
|
if not result_chunks:
|
110
|
116
|
return []
|
111
|
117
|
|
|
118
|
+ title = "Wolfram|Alpha (%s)" % infobox_title
|
|
119
|
+
|
112
|
120
|
# append infobox
|
113
|
121
|
results.append({'infobox': infobox_title,
|
114
|
122
|
'attributes': result_chunks,
|
|
@@ -116,7 +124,7 @@ def response(resp):
|
116
|
124
|
|
117
|
125
|
# append link to site
|
118
|
126
|
results.append({'url': resp.request.headers['Referer'].decode('utf8'),
|
119
|
|
- 'title': 'Wolfram|Alpha',
|
120
|
|
- 'content': infobox_title})
|
|
127
|
+ 'title': title,
|
|
128
|
+ 'content': result_content})
|
121
|
129
|
|
122
|
130
|
return results
|