This commit is contained in:
osiris account 2023-03-12 15:32:23 -07:00
parent 0696b08d04
commit 314bdf533e
94 changed files with 11 additions and 7 deletions

View file

@ -0,0 +1,14 @@
from .routes import router as LocationRouter
from fastapi import FastAPI
app = FastAPI()
@app.get("/", tags=["Root"])
async def read_root() -> dict:
return {
"message": "Location API 🗺✨. Try /docs to learn about this API"
}
app.include_router(LocationRouter, prefix="/tzone")

View 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

View file

@ -0,0 +1,17 @@
from pydantic import BaseModel
from fastapi import APIRouter
from .methods import get_location
router = APIRouter()
class City(BaseModel):
city: str
@router.post("/")
def search_city(data: City) -> dict:
return get_location(data.dict())