mirror of
https://github.com/metafy-social/python-scripts.git
synced 2024-11-27 14:01:12 +00:00
Merge pull request #286 from Mysterious-Owl/master
Added Geocoode API program
This commit is contained in:
commit
fda7e05751
16
scripts/GeoCode API/README.md
Normal file
16
scripts/GeoCode API/README.md
Normal file
|
@ -0,0 +1,16 @@
|
|||
# Google Maps API
|
||||
|
||||
This code will take the name of places from where.txt and then use *forward Geocode API* to get the coordinates of that location, then the coordinates are stored in javascript file and the webpage is opened automatically, to show the pin locations on map.<br>
|
||||
|
||||
### Prerequisites
|
||||
|
||||
To install configparser ```pip install configparser``` or check [here](https://pypi.org/project/configparser/)
|
||||
If you have [Google Geocode API](https://developers.google.com/maps/documentation/geocoding/overview), so use that, otherwise you can use
|
||||
[Open Cage API](https://opencagedata.com/api) (its free, 2500 requests/day).
|
||||
|
||||
### How to run the script
|
||||
|
||||
Enter the API key and service URL in config file (without qoutes) and the places to be marked in where.txt file, then run the script.
|
||||
|
||||
|
||||
|
61
scripts/GeoCode API/code.py
Normal file
61
scripts/GeoCode API/code.py
Normal file
|
@ -0,0 +1,61 @@
|
|||
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"))
|
3
scripts/GeoCode API/config.ini
Normal file
3
scripts/GeoCode API/config.ini
Normal file
|
@ -0,0 +1,3 @@
|
|||
[keys]
|
||||
service_url=https://api.opencagedata.com/geocode/v1/json?q=
|
||||
api_key=
|
48
scripts/GeoCode API/index.html
Normal file
48
scripts/GeoCode API/index.html
Normal file
|
@ -0,0 +1,48 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
|
||||
<meta charset="utf-8">
|
||||
<title>GOOGLE MAPS API</title>
|
||||
<link href="https://google-developers.appspot.com/maps/documentation/javascript/examples/default.css" rel="stylesheet">
|
||||
<script src="https://maps.googleapis.com/maps/api/js"></script>
|
||||
<script src="where.js"></script>
|
||||
<script>
|
||||
function initialize() {
|
||||
var myLatlng = new google.maps.LatLng(37.39361,-122.099263)
|
||||
var mapOptions = {
|
||||
zoom: 3,
|
||||
center: myLatlng,
|
||||
mapTypeId: google.maps.MapTypeId.ROADMAP
|
||||
}
|
||||
var map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);
|
||||
i = 0;
|
||||
var markers = [];
|
||||
for ( pos in myData ) {
|
||||
i = i + 1;
|
||||
var row = myData[pos];
|
||||
window.console && console.log(row);
|
||||
var newLatlng = new google.maps.LatLng(row[0], row[1]);
|
||||
var marker = new google.maps.Marker({
|
||||
position: newLatlng,
|
||||
map: map,
|
||||
title: row[2]
|
||||
});
|
||||
markers.push(marker);
|
||||
var options = {
|
||||
imagePath: 'http://rawgit.com/googlemaps/js-marker-clusterer/gh-pages/images/m'
|
||||
}
|
||||
}
|
||||
var markerCluster = new MarkerClusterer(map, markers, options);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="initialize()">
|
||||
<div id="map_canvas" style="height: 500px"></div>
|
||||
<p><b>About this Map</b></p>
|
||||
<p>
|
||||
This is a cool script by
|
||||
<a href="https://github.com/Mysterious-Owl">Mysterious-Owl</a> with the use of API.<br>
|
||||
To see the details of a marker, hover over the marker.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
2
scripts/GeoCode API/requirements.txt
Normal file
2
scripts/GeoCode API/requirements.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
configparser
|
||||
ssl
|
24
scripts/GeoCode API/where.js
Normal file
24
scripts/GeoCode API/where.js
Normal file
|
@ -0,0 +1,24 @@
|
|||
myData = [
|
||||
[41.89193, 12.51133, 'Rome, Italy' ],
|
||||
[12.937243, 77.6925796, 'The Address, Outer Ring Road, Kaadubeesanahalli, Bengaluru - 530103, Karnataka, India' ],
|
||||
[51.575646, -0.0986474, 'Address, Endymion Road, London, N4 1EQ, United Kingdom' ],
|
||||
[-33.86785, 151.20732, 'Sydney, Australia' ],
|
||||
[35.6718484, 139.7419907, 'Address Building, Sotobori-dori, Akasaka 2-chome, Minato, 100-8968, Japan' ],
|
||||
[55.75222, 37.61556, 'Moscow, Russia' ],
|
||||
[34.05223, -118.24368, 'Los Angeles, California, United States of America' ],
|
||||
[-23.582841, -46.6847335, 'Hotel Intercity Adress Faria Lima, Rua Amauri 513, Vila Olímpia, São Paulo - SP, 01453-020, Brazil' ],
|
||||
[-33.92584, 18.42322, 'Cape Town, City of Cape Town, South Africa' ],
|
||||
[22.28552, 114.15769, 'Hong Kong' ],
|
||||
[30.0439192, 30.9812426, 'District 12, Sheikh Zayed, Giza, Egypt' ],
|
||||
[43.6557254, -79.456573, 'The Address at High Park, 1638 Bloor Street West, Toronto, ON M6P 0A6, Canada' ],
|
||||
[-20.0, 47.0, 'Madagascar' ],
|
||||
[1.114186, 103.9852544, 'Manisee Syariah Homestay (actual address), Tiban Mc Dermoth, Batam City 29427, Riau Islands, Indonesia' ],
|
||||
[64.00028, -150.00028, 'Alaska, United States of America' ],
|
||||
[18.0, -2.0, 'Mali' ],
|
||||
[60.0, 100.0, 'Russia' ],
|
||||
[62.0, 10.0, 'Norway' ],
|
||||
[-23.2029627, -65.3474844, 'La Nueva Puerta Verde good (good address), Avenida General Belgrano, Humahuaca, Municipio de Humahuaca, Argentina' ],
|
||||
[20.75028, -156.50028, 'Hawaii, United States of America' ],
|
||||
[46.0, 105.0, 'Mongolia' ],
|
||||
[-37.9032307, 144.7585649, 'The Address, Point Cook VIC 3030, Australia' ],
|
||||
];
|
22
scripts/GeoCode API/where.txt
Normal file
22
scripts/GeoCode API/where.txt
Normal file
|
@ -0,0 +1,22 @@
|
|||
rome
|
||||
delhi
|
||||
london
|
||||
sydney
|
||||
japan
|
||||
moscow
|
||||
los angeles
|
||||
brazil
|
||||
cape town
|
||||
hong kong
|
||||
egypt
|
||||
canada
|
||||
madagascar
|
||||
indonesia
|
||||
alaska
|
||||
mali
|
||||
russia
|
||||
norway
|
||||
argentina
|
||||
hawaii
|
||||
mongolia
|
||||
australia
|
Loading…
Reference in New Issue
Block a user