#!/usr/bin/python """ CGI interface to osmsearch.py """ __author__ = "fordprefect" __date__ = "2020-03-26" __version__ = "0.1" print("Content-type: text/html\n") # makes sure the http connection does not die - do nothing before this! import cgi import pathvalidate import osmsearch import datetime import random import os import sys assert sys.version_info >= (3, 6), "At least Python 3.8 required due to fStrings. Replace all f\"…\" and comment this line to enable running in lower versions (but really, you should just update your Python version…)." import base64 ##################################### ######## configuration ##################################### # default set of arguments args = { "q": "Camping", "format": "json", "limit": 50, "use_boundingbox": False, "boundingbox": [], "ignore_ids": [], "maxsearchnums": 10, "url": "https://nominatim.openstreetmap.org/search/", "output": "return", } immutable_args = ["format", "url", "ouput"] outputfolder = "downloads" DEBUG = False ##################################### ######## end of configuration ##################################### # get cgi args sanitize, and update default args rawargs = cgi.FieldStorage() cgi_args = {i: rawargs.getvalue(i) for i in rawargs} del(rawargs) parsed_args = {} try: cgi_args["q"] = pathvalidate.sanitize_filename(cgi_args["query"]) except KeyError: if DEBUG: # local testing cgi_args["q"] = "Camping" else: # we don't need to exit gracefully, whoever is arriving here has fiddled with the request manually exit() for arg in cgi_args: if arg not in immutable_args and arg in args: parsed_args[arg] = cgi_args[arg] if DEBUG: print("Parsed argument dict: ", parsed_args) args.update(cgi_args) searchresult = osmsearch.OSMSearch(args) gpxcontent = searchresult.gpxfile.to_xml() gpxcontent_base64 = base64.b64encode(gpxcontent.encode("utf-8")).decode("utf-8") print(""" OSM search to GPX

Export OSM search to GPX file

Success

""" + f""" Download GPX file here

Return to search page
OSMsearchToGPX - ein Service von dukun.de
""")