40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
import requests
|
|
import json
|
|
import time
|
|
|
|
class GooglePlaces(object):
|
|
def __init__(self, apiKey):
|
|
super(GooglePlaces, self).__init__()
|
|
self.apiKey = apiKey
|
|
|
|
def search_places_by_coordinate(self, location, radius, types):
|
|
endpoint_url = "https://maps.googleapis.com/maps/api/place/nearbysearch/json"
|
|
places = []
|
|
params = {
|
|
'location': location,
|
|
'radius': radius,
|
|
'types': types,
|
|
'key': self.apiKey
|
|
}
|
|
res = requests.get(endpoint_url, params = params)
|
|
results = json.loads(res.content)
|
|
places.extend(results['results'])
|
|
time.sleep(2)
|
|
while "next_page_token" in results:
|
|
params['pagetoken'] = results['next_page_token'],
|
|
res = requests.get(endpoint_url, params = params)
|
|
results = json.loads(res.content)
|
|
places.extend(results['results'])
|
|
time.sleep(2)
|
|
return places
|
|
|
|
def get_place_details(self, place_id, fields):
|
|
endpoint_url = "https://maps.googleapis.com/maps/api/place/details/json"
|
|
params = {
|
|
'placeid': place_id,
|
|
'fields': ",".join(fields),
|
|
'key': self.apiKey
|
|
}
|
|
res = requests.get(endpoint_url, params = params)
|
|
place_details = json.loads(res.content)
|
|
return place_details |