python-scripts/scripts/GeoCode API/code.py

62 lines
1.6 KiB
Python
Raw Normal View History

2022-10-09 18:28:15 +00:00
import urllib.request
import urllib.parse
import urllib.error
import json
import os
import webbrowser
import ssl
import configparser
config = configparser.ConfigParser()
config.read('config.ini')
api_key = config['keys']['api_key']
service_url = config['keys']['service_url']
# Ignore SSL certificate errors
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
with open("where.txt") as fh, open("where.js", "w", encoding="utf-8") as where:
adrs = []
parms = {}
for line in fh:
address = line.strip()
parms["address"] = address
parms['key'] = api_key
url = service_url + urllib.parse.urlencode(parms)
if url.lower().startswith('http'):
req = urllib.request.Request(url)
else:
raise ValueError from None
with urllib.request.urlopen(req, context=ctx) as resp:
data = resp.read().decode()
try:
js = json.loads(data)
except Exception as e:
print(f"{e}: {data}")
continue
try:
adrs.append([js['results'][0]['geometry']['lat'],
js['results'][0]['geometry']['lng'],
js['results'][0]['formatted']])
print('Retrieved ', url)
except Exception as e:
print(f"Not Found: {e}: {line.strip()}")
print("\nOpening Webpage")
where.write("myData = [\n")
for item in adrs:
where.write(f"[{str(item[0])}, {str(item[1])}, '{str(item[2])}' ], \n")
where.write("];\n")
webbrowser.open('file://' + os.path.realpath("index.html"))