Auto-update: Tue Aug 6 22:09:11 PDT 2024

This commit is contained in:
sanj 2024-08-06 22:09:11 -07:00
parent fabfefab30
commit e42a17e61f

View file

@ -11,7 +11,7 @@ from fastapi.responses import JSONResponse
from asyncpg.cursor import Cursor from asyncpg.cursor import Cursor
from httpx import AsyncClient from httpx import AsyncClient
from typing import Dict from typing import Dict
from datetime import datetime as dt_datetime from datetime import datetime as dt_datetime, date as dt_date
from shapely.wkb import loads from shapely.wkb import loads
from binascii import unhexlify from binascii import unhexlify
from sijapi import L, VISUALCROSSING_API_KEY, TZ, API, GEO from sijapi import L, VISUALCROSSING_API_KEY, TZ, API, GEO
@ -26,6 +26,7 @@ def warn(text: str): logger.warning(text)
def err(text: str): logger.error(text) def err(text: str): logger.error(text)
def crit(text: str): logger.critical(text) def crit(text: str): logger.critical(text)
@weather.get("/weather/refresh", response_class=JSONResponse) @weather.get("/weather/refresh", response_class=JSONResponse)
async def get_refreshed_weather( async def get_refreshed_weather(
date: str = Query(default=dt_datetime.now().strftime("%Y-%m-%d"), description="Enter a date in YYYY-MM-DD format, otherwise it will default to today."), date: str = Query(default=dt_datetime.now().strftime("%Y-%m-%d"), description="Enter a date in YYYY-MM-DD format, otherwise it will default to today."),
@ -53,7 +54,15 @@ async def get_refreshed_weather(
raise HTTPException(status_code=404, detail="No weather data found for the given date and location") raise HTTPException(status_code=404, detail="No weather data found for the given date and location")
# Convert the day object to a JSON-serializable format # Convert the day object to a JSON-serializable format
day_dict = {k: str(v) if isinstance(v, (dt_datetime, date)) else v for k, v in day.items()} day_dict = {}
for k, v in day.items():
if k == 'DailyWeather':
day_dict[k] = {kk: vv.isoformat() if isinstance(vv, (dt_datetime, dt_date)) else vv for kk, vv in v.items()}
elif k == 'HourlyWeather':
day_dict[k] = [{kk: vv.isoformat() if isinstance(vv, (dt_datetime, dt_date)) else vv for kk, vv in hour.items()} for hour in v]
else:
day_dict[k] = v.isoformat() if isinstance(v, (dt_datetime, dt_date)) else v
return JSONResponse(content={"weather": day_dict}, status_code=200) return JSONResponse(content={"weather": day_dict}, status_code=200)
except HTTPException as e: except HTTPException as e: