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