forked from zaclys/searxng
		
	add poi's website and phone number, doesn't crash when there is no displayMapRegion, query the token on the first request
				
					
				
			This commit is contained in:
		
							parent
							
								
									5dce299b22
								
							
						
					
					
						commit
						525946d7dd
					
				
					 1 changed files with 35 additions and 11 deletions
				
			
		| 
						 | 
				
			
			@ -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'),
 | 
			
		||||
                },
 | 
			
		||||
            }
 | 
			
		||||
        )
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue