-
-
Save ayubmetah/f2e63d03fd41d449472007c833021651 to your computer and use it in GitHub Desktop.
| # To complete this assignment, you should use this API endpoint that has a static subset of the Google Data: | |
| # http://py4e-data.dr-chuck.net/json? | |
| # This API uses the same parameter (address) as the Google API. This API also has no rate limit so you can test as often as you like. | |
| # If you visit the URL with no parameters, you get "No address..." response. | |
| # To call the API, you need to include a key= parameter and provide the address that you are requesting as the address= parameter that | |
| # is properly URL encoded using the urllib.parse.urlencode() function as shown in http://www.py4e.com/code3/geojson.py | |
| # Make sure to check that your code is using the API endpoint is as shown above. | |
| # Please run your program to find the place_id for this location: University of Akron | |
| # Make sure to enter the name and case exactly as above and enter the place_id and your Python code below. Hint: The first seven characters of the place_id are "ChIJbye ..." | |
| import urllib.request, urllib.parse, urllib.error | |
| import json | |
| import ssl | |
| api_key = False | |
| if api_key is False: | |
| api_key = 42 | |
| serviceurl = 'http://py4e-data.dr-chuck.net/json?' | |
| else : | |
| serviceurl = 'https://maps.googleapis.com/maps/api/geocode/json?' | |
| # Ignore SSL certificate errors | |
| ctx = ssl.create_default_context() | |
| ctx.check_hostname = False | |
| ctx.verify_mode = ssl.CERT_NONE | |
| while True: | |
| address = input('Enter location: ') | |
| if len(address) < 1: break | |
| parms = dict() | |
| parms['address'] = address | |
| if api_key is not False: parms['key'] = api_key | |
| url = serviceurl + urllib.parse.urlencode(parms) | |
| print('Retrieving', url) | |
| uh = urllib.request.urlopen(url, context=ctx) | |
| data = uh.read().decode() | |
| print('Retrieved', len(data), 'characters') | |
| try: | |
| js = json.loads(data) | |
| except: | |
| js = None | |
| if not js or 'status' not in js or js['status'] != 'OK': | |
| print('==== Failure To Retrieve ====') | |
| print(data) | |
| continue | |
| # print(json.dumps(js, indent=4)) | |
| pid = js['results'][0]['place_id'] | |
| print('Place id ',pid) |
I found this URL https://py4e-data.dr-chuck.net/opengeo?q=Universidad+de+Castilla+La+Mancha
The plus code La Universidad de Castilla
La Mancha is written "8CCRX3WJ+QR" but I have this issue "Your plus_code did not match"
The hint is The first five characters of the plus_code are "8CCRX ..."
Universidade Federal do Rio de Janeiro? Help please!
The code I used prints out loads of stuff I dont really know what is the plus code :/
Calling a JSON API
In this assignment you will write a Python program somewhat similar to http://www.py4e.com/code3/opengeo.py. The program will prompt for a location, contact a web service and retrieve JSON for the web service and parse that data, and retrieve the first plus_code from the JSON. An Open Location Code is a textual identifier that is another form of address based on the location of the address.
API End Points
To complete this assignment, you should use this API endpoint that has a static subset of the Open Street Map Data.
http://py4e-data.dr-chuck.net/opengeo?
This API also has no rate limit so you can test as often as you like. If you visit the URL with no parameters, you get "No address..." response.
To call the API, you need to provide the address that you are requesting as the q= parameter that is properly URL encoded using the urllib.parse.urlencode() function as shown in http://www.py4e.com/code3/opengeo.py
Test Data / Sample Execution
You can test to see if your program is working with a location of "South Federal University" which will have a plus_code of "6FV8QPRJ+VQ".
$ python solution.py
Enter location: South Federal University
Retrieving http://...
Retrieved 1505 characters
Plus code 6FV8QPRJ+VQ
Turn In
Please run your program to find the plus_code for this location:
University of Buenos Aires
Make sure to enter the name and case exactly as above and enter the plus_code and your Python code below. Hint: The first five characters of the plus_code are "48J2M ..."
Make sure to retreive the data from the URL specified above and not the normal Google API. Your program should work with the Google API - but the plus_code may not match for this assignment.
plus_code:
Python code:
Can you help me with University of Ottawa
Please help me out: I checked my code and the code above. It all turns out that the Plus code for the location 'Indiana University at Bloomington' is 86MPV5HX+JM. It doesn't starts with 8554M as required in the Hint part. So I could not submit my assignment.
Calling a JSON API
In this assignment you will write a Python program somewhat similar to http://www.py4e.com/code3/opengeo.py. The program will prompt for a location, contact a web service and retrieve JSON for the web service and parse that data, and retrieve the first plus_code from the JSON. An Open Location Code is a textual identifier that is another form of address based on the location of the address.
To complete this assignment, you should use this API endpoint that has a static subset of the Open Street Map Data.
http://py4e-data.dr-chuck.net/opengeo?
Please run your program to find the plus_code for this location: Indiana University at Bloomington
Make sure to enter the name and case exactly as above and enter the plus_code and your Python code below. Hint: The first five characters of the plus_code are "8554M ..."