mirror of
https://github.com/autistic-symposium/web3-starter-py.git
synced 2025-05-17 22:20:22 -04:00
Add Location API project on FastAPI deplpyed in Vercel
This commit is contained in:
parent
188195b7a3
commit
896978f1ab
12 changed files with 134 additions and 0 deletions
35
fastapi-location-app/api/methods.py
Normal file
35
fastapi-location-app/api/methods.py
Normal file
|
@ -0,0 +1,35 @@
|
|||
import pytz
|
||||
import datetime
|
||||
from geopy.geocoders import Nominatim
|
||||
from timezonefinder import TimezoneFinder
|
||||
|
||||
|
||||
def _find_timezone(lat, lon) -> int:
|
||||
obj = TimezoneFinder()
|
||||
tzone = obj.timezone_at(lng=lon, lat=lat)
|
||||
timezone = datetime.datetime.now(pytz.timezone(tzone)).strftime('%z')
|
||||
try:
|
||||
timezone = int(timezone[:-2])
|
||||
except:
|
||||
print('Error formatting timezone {}'.format(timezone))
|
||||
return timezone
|
||||
|
||||
|
||||
def get_location(data) -> dict:
|
||||
try:
|
||||
city = data['city']
|
||||
except:
|
||||
print('Data is ill-formatted: {}'.format(data))
|
||||
|
||||
geolocator = Nominatim(user_agent="$choices")
|
||||
location = geolocator.geocode(city)
|
||||
|
||||
data = {
|
||||
'lat': location.latitude,
|
||||
'lon': location.longitude,
|
||||
'tzone': _find_timezone(location.latitude, location.longitude)
|
||||
}
|
||||
|
||||
return data
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue