summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--searx/engines/openstreetmap.py14
-rw-r--r--searx/plugins/self_info.py6
-rw-r--r--searx/results.py4
-rw-r--r--searx/templates/legacy/results.html8
-rw-r--r--searx/templates/oscar/results.html8
-rw-r--r--searx/templates/simple/results.html10
6 files changed, 38 insertions, 12 deletions
diff --git a/searx/engines/openstreetmap.py b/searx/engines/openstreetmap.py
index cec10a3c7..011523433 100644
--- a/searx/engines/openstreetmap.py
+++ b/searx/engines/openstreetmap.py
@@ -10,7 +10,9 @@
@parse url, title
"""
+import re
from json import loads
+from flask_babel import gettext
# engine dependent config
categories = ['map']
@@ -21,10 +23,15 @@ base_url = 'https://nominatim.openstreetmap.org/'
search_string = 'search/{query}?format=json&polygon_geojson=1&addressdetails=1'
result_base_url = 'https://openstreetmap.org/{osm_type}/{osm_id}'
+route_url = 'https://graphhopper.com/maps/?point={}&point={}&locale=en-US&vehicle=car&weighting=fastest&turn_costs=true&use_miles=false&layer=Omniscale'
+route_re = re.compile('(?:from )?(.+) to (.+)')
+
# do search-request
def request(query, params):
+
params['url'] = base_url + search_string.format(query=query.decode('utf-8'))
+ params['route'] = route_re.match(query.decode('utf-8'))
return params
@@ -34,6 +41,13 @@ def response(resp):
results = []
json = loads(resp.text)
+
+ if resp.search_params['route']:
+ results.append({
+ 'answer': gettext('Get directions'),
+ 'url': route_url.format(*resp.search_params['route'].groups()),
+ })
+
# parse results
for r in json:
if 'display_name' not in r:
diff --git a/searx/plugins/self_info.py b/searx/plugins/self_info.py
index 8d6c661ad..67e5e0e53 100644
--- a/searx/plugins/self_info.py
+++ b/searx/plugins/self_info.py
@@ -37,10 +37,8 @@ def post_search(request, search):
ip = x_forwarded_for[0]
else:
ip = request.remote_addr
- search.result_container.answers.clear()
- search.result_container.answers.add(ip)
+ search.result_container.answers['ip'] = {'answer': ip}
elif p.match(search.search_query.query):
ua = request.user_agent
- search.result_container.answers.clear()
- search.result_container.answers.add(ua)
+ search.result_container.answers['user-agent'] = {'answer': ua}
return True
diff --git a/searx/results.py b/searx/results.py
index 62a01a5bd..17db33aa4 100644
--- a/searx/results.py
+++ b/searx/results.py
@@ -131,7 +131,7 @@ class ResultContainer(object):
self._merged_results = []
self.infoboxes = []
self.suggestions = set()
- self.answers = set()
+ self.answers = {}
self.corrections = set()
self._number_of_results = []
self._ordered = False
@@ -146,7 +146,7 @@ class ResultContainer(object):
self.suggestions.add(result['suggestion'])
results.remove(result)
elif 'answer' in result:
- self.answers.add(result['answer'])
+ self.answers[result['answer']] = result
results.remove(result)
elif 'correction' in result:
self.corrections.add(result['correction'])
diff --git a/searx/templates/legacy/results.html b/searx/templates/legacy/results.html
index 2e28bc91f..fd95657a4 100644
--- a/searx/templates/legacy/results.html
+++ b/searx/templates/legacy/results.html
@@ -33,8 +33,12 @@
{% if answers %}
<div id="answers"><span>{{ _('Answers') }}</span>
- {% for answer in answers %}
- <span>{{ answer }}</span>
+ {% for answer in answers.values() %}
+ {% if answer.url %}
+ <a href="{{ answer.url }}">{{ answer.answer }}</a>
+ {% else %}
+ <span>{{ answer.answer }}</span>
+ {% endif %}
{% endfor %}
</div>
{% endif %}
diff --git a/searx/templates/oscar/results.html b/searx/templates/oscar/results.html
index fc4efadfa..7a444d19f 100644
--- a/searx/templates/oscar/results.html
+++ b/searx/templates/oscar/results.html
@@ -94,9 +94,13 @@
{%- endif %}
{% if answers -%}
- {%- for answer in answers %}
+ {%- for answer in answers.values() %}
<div class="result well">
- <span>{{ answer }}</span>
+ {% if answer.url %}
+ <a href="{{ answer.url }}">{{ answer.answer }}</a>
+ {% else %}
+ <span>{{ answer.answer }}</span>
+ {% endif %}
</div>
{%- endfor %}
{%- endif %}
diff --git a/searx/templates/simple/results.html b/searx/templates/simple/results.html
index 8885abc30..2e393193f 100644
--- a/searx/templates/simple/results.html
+++ b/searx/templates/simple/results.html
@@ -15,8 +15,14 @@
<div id="results" class="{{ only_template }}">
{% if answers -%}
<div id="answers"><h4 class="title">{{ _('Answers') }} : </h4>
- {%- for answer in answers -%}
- <div class="answer">{{- answer -}}</div>
+ {%- for answer in answers.values() -%}
+ <div class="answer">
+ {% if answer.url %}
+ <a href="{{ answer.url }}">{{ answer.answer }}</a>
+ {% else %}
+ <span>{{ answer.answer }}</span>
+ {% endif %}
+ </div>
{%- endfor -%}
</div>
{%- endif %}