openstreetmap.py 1.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. from json import loads
  11. # engine dependent config
  12. categories = ['map']
  13. paging = False
  14. # search-url
  15. url = 'https://nominatim.openstreetmap.org/search/{query}?format=json'
  16. result_base_url = 'https://openstreetmap.org/{osm_type}/{osm_id}'
  17. # do search-request
  18. def request(query, params):
  19. params['url'] = url.format(query=query)
  20. return params
  21. # get response from search-request
  22. def response(resp):
  23. results = []
  24. json = loads(resp.text)
  25. # parse results
  26. for r in json:
  27. title = r['display_name']
  28. osm_type = r.get('osm_type', r.get('type'))
  29. url = result_base_url.format(osm_type=osm_type,
  30. osm_id=r['osm_id'])
  31. # append result
  32. results.append({'title': title,
  33. 'content': '',
  34. 'url': url})
  35. # return results
  36. return results