· 5 years ago · Aug 14, 2020, 01:46 PM
1import requests
2import json
3import time
4class GooglePlaces(object):
5 def __init__(self, apiKey):
6 super(GooglePlaces, self).__init__()
7 self.apiKey = apiKey
8
9 def search_places_by_coordinate(self, location, radius, types):
10 endpoint_url = "https://maps.googleapis.com/maps/api/place/nearbysearch/json"
11 places = []
12 params = {
13 'location': location,
14 'radius': radius,
15 'types': types,
16 'key': self.apiKey
17 }
18 res = requests.get(endpoint_url, params = params)
19 results = json.loads(res.content)
20 places.extend(results['results'])
21 time.sleep(2)
22 while "next_page_token" in results:
23 params['pagetoken'] = results['next_page_token'],
24 res = requests.get(endpoint_url, params = params)
25 results = json.loads(res.content)
26 places.extend(results['results'])
27 time.sleep(2)
28 return places
29
30 def get_place_details(self, place_id, fields):
31 endpoint_url = "https://maps.googleapis.com/maps/api/place/details/json"
32 params = {
33 'placeid': place_id,
34 'fields': ",".join(fields),
35 'key': self.apiKey
36 }
37 res = requests.get(endpoint_url, params = params)
38 place_details = json.loads(res.content)
39 return place_details
40if __name__ == '__main__':
41 api = GooglePlaces("AIzaSyDZUOMRLq9tq_S433ElqFS7-h4zy4EJbeo")
42 places = api.search_places_by_coordinate("40.819057,-73.914048", "100", "restaurant")
43 fields = ['name', 'formatted_address', 'international_phone_number', 'website', 'rating', 'review']
44 for place in places:
45 details = api.get_place_details(place['place_id'], fields)
46 try:
47 website = details['result']['website']
48 except KeyError:
49 website = ""
50
51 try:
52 name = details['result']['name']
53 except KeyError:
54 name = ""
55
56 try:
57 address = details['result']['formatted_address']
58 except KeyError:
59 address = ""
60
61 try:
62 phone_number = details['result']['international_phone_number']
63 except KeyError:
64 phone_number = ""
65
66 try:
67 reviews = details['result']['reviews']
68 except KeyError:
69 reviews = []
70 print("===================PLACE===================")
71 print("Name:", name)
72 print("Website:", website)
73 print("Address:", address)
74 print("Phone Number", phone_number)
75 print("==================REWIEVS==================")
76 for review in reviews:
77 author_name = review['author_name']
78 rating = review['rating']
79 text = review['text']
80 time = review['relative_time_description']
81 profile_photo = review['profile_photo_url']
82 print("Author Name:", author_name)
83 print("Rating:", rating)
84 print("Text:", text)
85 print("Time:", time)
86 print("Profile photo:", profile_photo)
87 print("---------------------------------------")