浏览代码

[enh] new engine: openstreetmap

Adam Tauber 10 年前
父节点
当前提交
3319091496
共有 1 个文件被更改,包括 47 次插入0 次删除
  1. 47
    0
      searx/engines/openstreetmap.py

+ 47
- 0
searx/engines/openstreetmap.py 查看文件

1
+## OpenStreetMap (Map)
2
+#
3
+# @website     https://openstreetmap.org/
4
+# @provide-api yes (http://wiki.openstreetmap.org/wiki/Nominatim)
5
+#
6
+# @using-api   yes
7
+# @results     JSON
8
+# @stable      yes
9
+# @parse       url, title
10
+
11
+from json import loads
12
+
13
+# engine dependent config
14
+categories = ['map']
15
+paging = False
16
+
17
+# search-url
18
+url = 'https://nominatim.openstreetmap.org/search/{query}?format=json'
19
+
20
+result_base_url = 'https://openstreetmap.org/{osm_type}/{osm_id}'
21
+
22
+
23
+# do search-request
24
+def request(query, params):
25
+    params['url'] = url.format(query=query)
26
+
27
+    return params
28
+
29
+
30
+# get response from search-request
31
+def response(resp):
32
+    results = []
33
+    json = loads(resp.text)
34
+
35
+    # parse results
36
+    for r in json:
37
+        title = r['display_name']
38
+        osm_type = r.get('osm_type', r.get('type'))
39
+        url = result_base_url.format(osm_type=osm_type,
40
+                                     osm_id=r['osm_id'])
41
+        # append result
42
+        results.append({'title': title,
43
+                        'content': '',
44
+                        'url': url})
45
+
46
+    # return results
47
+    return results