summaryrefslogtreecommitdiff
path: root/searx/engines/apple_maps.py
diff options
context:
space:
mode:
authorta <alt3753.7@gmail.com>2022-08-27 06:17:58 +0700
committerta <alt3753.7@gmail.com>2022-08-27 06:17:58 +0700
commit525946d7dd89c4a8470d2bdcd5e68642c43fe2bb (patch)
tree1e400c1b0e66635e014c4470f654db8485abb936 /searx/engines/apple_maps.py
parent5dce299b2292f9b32a2c993f16a7fced827eb81b (diff)
downloadsearxng-525946d7dd89c4a8470d2bdcd5e68642c43fe2bb.tar.gz
searxng-525946d7dd89c4a8470d2bdcd5e68642c43fe2bb.zip
add poi's website and phone number, doesn't crash when there is no `displayMapRegion`, query the token on the first request
Diffstat (limited to 'searx/engines/apple_maps.py')
-rw-r--r--searx/engines/apple_maps.py46
1 files changed, 35 insertions, 11 deletions
diff --git a/searx/engines/apple_maps.py b/searx/engines/apple_maps.py
index 08dd15ac6..eb4af422e 100644
--- a/searx/engines/apple_maps.py
+++ b/searx/engines/apple_maps.py
@@ -7,6 +7,7 @@ from time import time
from urllib.parse import urlencode
from searx.network import get as http_get
+from searx.engines.openstreetmap import get_key_label
about = {
"website": 'https://www.apple.com/maps/',
@@ -43,10 +44,6 @@ def obtain_token():
return token
-def init(_engine_settings=None):
- obtain_token()
-
-
def request(query, params):
if time() - (token['last_updated'] or 0) > 1800:
obtain_token()
@@ -63,25 +60,52 @@ def response(resp):
resp_json = loads(resp.text)
+ user_language = resp.search_params['language']
+
for result in resp_json['results']:
- box = result['displayMapRegion']
+ boundingbox = None
+ if 'displayMapRegion' in result:
+ box = result['displayMapRegion']
+ boundingbox = [box['southLat'], box['northLat'], box['westLng'], box['eastLng']]
+
+ links = []
+ if 'telephone' in result:
+ telephone = result['telephone']
+ links.append(
+ {
+ 'label': get_key_label('phone', user_language),
+ 'url': 'tel:' + telephone,
+ 'url_label': telephone,
+ }
+ )
+ if result.get('urls'):
+ url = result['urls'][0]
+ links.append(
+ {
+ 'label': get_key_label('website', user_language),
+ 'url': url,
+ 'url_label': url,
+ }
+ )
results.append(
{
'template': 'map.html',
+ 'type': result.get('poiCategory'),
'title': result['name'],
+ 'links': links,
'latitude': result['center']['lat'],
'longitude': result['center']['lng'],
'url': result['placecardUrl'],
- 'boundingbox': [box['southLat'], box['northLat'], box['westLng'], box['eastLng']],
+ 'boundingbox': boundingbox,
'geojson': {'type': 'Point', 'coordinates': [result['center']['lng'], result['center']['lat']]},
'address': {
'name': result['name'],
- 'house_number': result.get('subThoroughfare', {}),
- 'road': result.get('thoroughfare', {}),
- 'locality': result.get('locality', {}),
- 'postcode': result.get('postCode', {}),
- 'country': result.get('country', {}),
+ 'house_number': result.get('subThoroughfare'),
+ 'road': result.get('thoroughfare'),
+ 'locality': result.get('locality'),
+ 'postcode': result.get('postCode'),
+ 'country': result.get('country'),
},
}
)