diff options
author | clarkzjw <[email protected]> | 2023-02-21 01:43:49 -0800 |
---|---|---|
committer | clarkzjw <[email protected]> | 2023-02-21 01:43:49 -0800 |
commit | 92c0139e067a7f40ef686714f6edaa8bb8970db7 (patch) | |
tree | 78d9eee925102930fff52d22a2f5c0d5824df4d4 /foursquare/poi.py | |
parent | 88ad58c3d3412162ffdeb96f49b789e7976cad07 (diff) | |
parent | 1046a4dd835468ee4855d70ca0a5e6dc6f79cb32 (diff) | |
download | swarm2fediverse-92c0139e067a7f40ef686714f6edaa8bb8970db7.tar.gz |
Merge branch 'feature/poi_photo'
allow users to upload up to 4 photos when checking in
Diffstat (limited to 'foursquare/poi.py')
-rw-r--r-- | foursquare/poi.py | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/foursquare/poi.py b/foursquare/poi.py new file mode 100644 index 0000000..722dbb7 --- /dev/null +++ b/foursquare/poi.py | |||
@@ -0,0 +1,53 @@ | |||
1 | import json | ||
2 | |||
3 | import requests | ||
4 | |||
5 | from config import FSQ_API_KEY | ||
6 | from dbstore.dbm_store import store_loc | ||
7 | |||
8 | POI_API_ENDPOINT = "https://api.foursquare.com/v3/places/nearby?ll={}%2C{}" | ||
9 | POI_PHOTO_ENDPOINT = "https://api.foursquare.com/v3/places/{}/photos?sort=POPULAR&limit=10" | ||
10 | OSM_ENDPOINT = "https://www.openstreetmap.org/?mlat={}&mlon={}&zoom=15&layers=M" | ||
11 | headers = { | ||
12 | "accept": "application/json", | ||
13 | "Authorization": FSQ_API_KEY | ||
14 | } | ||
15 | |||
16 | |||
17 | def query_poi(latitude, longitude): | ||
18 | locations = list() | ||
19 | |||
20 | url = POI_API_ENDPOINT.format(latitude, longitude) | ||
21 | |||
22 | response = requests.get(url, headers=headers) | ||
23 | |||
24 | for poi in json.loads(response.text)["results"]: | ||
25 | loc = { | ||
26 | "fsq_id": poi["fsq_id"], | ||
27 | "name": poi["name"], | ||
28 | "locality": poi["location"]["locality"], | ||
29 | "region": poi["location"]["region"], | ||
30 | "latitude": poi["geocodes"]["main"]["latitude"], | ||
31 | "longitude": poi["geocodes"]["main"]["longitude"], | ||
32 | "osm_url": OSM_ENDPOINT.format(poi["geocodes"]["main"]["latitude"], poi["geocodes"]["main"]["longitude"]) | ||
33 | } | ||
34 | locations.append(loc) | ||
35 | store_loc(loc) | ||
36 | |||
37 | return locations | ||
38 | |||
39 | |||
40 | def get_poi_top_photo(fsq_id): | ||
41 | url = POI_PHOTO_ENDPOINT.format(fsq_id) | ||
42 | response = requests.get(url, headers=headers) | ||
43 | |||
44 | poi_photo_urls = [] | ||
45 | for poi in json.loads(response.text): | ||
46 | prefix = poi["prefix"] | ||
47 | suffix = poi["suffix"] | ||
48 | poi_photo_urls.append(prefix + "original" + suffix) | ||
49 | |||
50 | if len(poi_photo_urls) == 0: | ||
51 | return None | ||
52 | |||
53 | return poi_photo_urls[0] | ||