Thomas Pointhuber 10 anos atrás
pai
commit
672f1c674c
2 arquivos alterados com 34 adições e 24 exclusões
  1. 5
    4
      searx/engines/openstreetmap.py
  2. 29
    20
      searx/engines/photon.py

+ 5
- 4
searx/engines/openstreetmap.py Ver arquivo

@@ -16,13 +16,14 @@ categories = ['map']
16 16
 paging = False
17 17
 
18 18
 # search-url
19
-base_url = 'https://nominatim.openstreetmap.org/search/{query}?format=json&polygon_geojson=1&addressdetails=1'
19
+base_url = 'https://nominatim.openstreetmap.org/'
20
+search_string = 'search/{query}?format=json&polygon_geojson=1&addressdetails=1'
20 21
 result_base_url = 'https://openstreetmap.org/{osm_type}/{osm_id}'
21 22
 
22 23
 
23 24
 # do search-request
24 25
 def request(query, params):
25
-    params['url'] = base_url.format(query=query)
26
+    params['url'] = base_url + search_string.format(query=query)
26 27
 
27 28
     # using searx User-Agent
28 29
     params['headers']['User-Agent'] = searx_useragent()
@@ -71,8 +72,8 @@ def response(resp):
71 72
             address.update({'house_number': address_raw.get('house_number'),
72 73
                            'road': address_raw.get('road'),
73 74
                            'locality': address_raw.get('city',
74
-                                       address_raw.get('town',
75
-                                       address_raw.get('village'))),
75
+                                       address_raw.get('town',          # noqa
76
+                                       address_raw.get('village'))),    # noqa
76 77
                            'postcode': address_raw.get('postcode'),
77 78
                            'country': address_raw.get('country'),
78 79
                            'country_code': address_raw.get('country_code')})

+ 29
- 20
searx/engines/photon.py Ver arquivo

@@ -19,22 +19,25 @@ language_support = True
19 19
 number_of_results = 10
20 20
 
21 21
 # search-url
22
-search_url = 'https://photon.komoot.de/api/?{query}&limit={limit}'
22
+base_url = 'https://photon.komoot.de/'
23
+search_string = 'api/?{query}&limit={limit}'
23 24
 result_base_url = 'https://openstreetmap.org/{osm_type}/{osm_id}'
24 25
 
25 26
 
26 27
 # do search-request
27 28
 def request(query, params):
28
-    params['url'] = search_url.format(query=urlencode({'q': query}),
29
-                                      limit=number_of_results)
29
+    params['url'] = base_url +\
30
+        search_string.format(query=urlencode({'q': query}),
31
+                             limit=number_of_results)
30 32
 
31 33
     if params['language'] != 'all':
32
-        params['url'] = params['url'] + "&lang=" + params['language'].replace('_', '-')
34
+        params['url'] = params['url'] +\
35
+            "&lang=" + params['language'].replace('_', '-')
33 36
 
34 37
     # using searx User-Agent
35 38
     params['headers']['User-Agent'] = searx_useragent()
36
-    
37
-    # FIX: SSLError: [Errno 1] _ssl.c:510: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
39
+
40
+    # FIX: SSLError: SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
38 41
     params['verify'] = False
39 42
 
40 43
     return params
@@ -47,15 +50,15 @@ def response(resp):
47 50
 
48 51
     # parse results
49 52
     for r in json.get('features', {}):
50
-    
53
+
51 54
         properties = r.get('properties')
52
-        
55
+
53 56
         if not properties:
54 57
             continue
55
-        
58
+
56 59
         # get title
57 60
         title = properties['name']
58
-        
61
+
59 62
         # get osm-type
60 63
         if properties.get('osm_type') == 'N':
61 64
             osm_type = 'node'
@@ -66,7 +69,7 @@ def response(resp):
66 69
         else:
67 70
             # continue if invalide osm-type
68 71
             continue
69
-            
72
+
70 73
         url = result_base_url.format(osm_type=osm_type,
71 74
                                      osm_id=properties.get('osm_id'))
72 75
 
@@ -74,14 +77,20 @@ def response(resp):
74 77
                'id': properties.get('osm_id')}
75 78
 
76 79
         geojson = r.get('geometry')
77
-        
78
-        if  properties.get('extent'):
79
-            boundingbox = [properties.get('extent')[3], properties.get('extent')[1], properties.get('extent')[0], properties.get('extent')[2]]
80
+
81
+        if properties.get('extent'):
82
+            boundingbox = [properties.get('extent')[3],
83
+                           properties.get('extent')[1],
84
+                           properties.get('extent')[0],
85
+                           properties.get('extent')[2]]
80 86
         else:
81 87
             # TODO: better boundingbox calculation
82
-            boundingbox = [geojson['coordinates'][1], geojson['coordinates'][1], geojson['coordinates'][0], geojson['coordinates'][0]]
83
-        
84
-        # TODO: address calculation
88
+            boundingbox = [geojson['coordinates'][1],
89
+                           geojson['coordinates'][1],
90
+                           geojson['coordinates'][0],
91
+                           geojson['coordinates'][0]]
92
+
93
+        # address calculation
85 94
         address = {}
86 95
 
87 96
         # get name
@@ -90,14 +99,14 @@ def response(resp):
90 99
            properties.get('osm_key') == 'tourism' or\
91 100
            properties.get('osm_key') == 'leisure':
92 101
             address = {'name': properties.get('name')}
93
-                
102
+
94 103
         # add rest of adressdata, if something is already found
95 104
         if address.get('name'):
96 105
             address.update({'house_number': properties.get('housenumber'),
97 106
                            'road': properties.get('street'),
98 107
                            'locality': properties.get('city',
99
-                                       properties.get('town',
100
-                                       properties.get('village'))),
108
+                                       properties.get('town',           # noqa
109
+                                       properties.get('village'))),     # noqa
101 110
                            'postcode': properties.get('postcode'),
102 111
                            'country': properties.get('country')})
103 112
         else: