reformatting payload
This commit is contained in:
parent
b35bbe2d1c
commit
44593f3c65
1 changed files with 54 additions and 3 deletions
57
main.py
57
main.py
|
@ -110,6 +110,7 @@ async def fetch_pollen(zipcode):
|
|||
"period": relative_day_to_date(d["Type"]),
|
||||
}
|
||||
for d in data["Location"]["periods"]
|
||||
if d["Type"].lower().strip() in ["today", "tomorrow"]
|
||||
],
|
||||
}
|
||||
]
|
||||
|
@ -122,7 +123,7 @@ async def fetch_weather(lat, lon, weather_api_key):
|
|||
response = await client.get(url)
|
||||
response.raise_for_status()
|
||||
data = response.json()
|
||||
current, periods = data["current"], data["daily"][:3]
|
||||
current, periods = data["current"], data["daily"][:2]
|
||||
return [
|
||||
{
|
||||
"forecast_date": format_datetime(datetime.fromtimestamp(current["dt"])),
|
||||
|
@ -163,8 +164,58 @@ async def read_root(token: str):
|
|||
fetch_weather(CONFIG["lat"], CONFIG["lon"], CONFIG["weather_api_key"]),
|
||||
)
|
||||
|
||||
pollen_periods = {p["period"]: p for p in pollen[0]["periods"]} if pollen and pollen[0]["periods"] else {}
|
||||
weather_periods = {p["period"]: p for p in weather[0]["periods"]} if weather and weather[0]["periods"] else {}
|
||||
|
||||
# Add current weather data as a "current" period
|
||||
if weather and weather[0]:
|
||||
data = weather[0]
|
||||
weather_periods["current"] = {
|
||||
"period": "current",
|
||||
"temp": data["current_temp"],
|
||||
"feels_like": data["current_feels_like"],
|
||||
"humidity": data["current_humidity"],
|
||||
"pressure": data["current_pressure"],
|
||||
"desc": data["current_desc"],
|
||||
"sunrise": data["sunrise"],
|
||||
"sunset": data["sunset"]
|
||||
}
|
||||
|
||||
all_periods = set(pollen_periods.keys()) | set(weather_periods.keys())
|
||||
merged_periods = []
|
||||
|
||||
sorted_periods = sorted(all_periods, key=lambda x: (x != "current", x))
|
||||
|
||||
for period in sorted_periods:
|
||||
merged_period = {"period": period}
|
||||
|
||||
if period in pollen_periods:
|
||||
merged_period["pollen"] = pollen_periods[period]["index"]
|
||||
|
||||
if period in weather_periods:
|
||||
weather_data = weather_periods[period]
|
||||
if period == "current":
|
||||
merged_period.update({
|
||||
"temp": weather_data["temp"],
|
||||
"feels_like": weather_data["feels_like"],
|
||||
"desc": weather_data["desc"],
|
||||
"humidity": weather_data["humidity"],
|
||||
"pressure": weather_data["pressure"]
|
||||
})
|
||||
else:
|
||||
merged_period.update({
|
||||
"low": weather_data["low"],
|
||||
"high": weather_data["high"],
|
||||
"desc": weather_data["desc"],
|
||||
"humidity": weather_data["humidity"],
|
||||
"sunrise": weather_data["sunrise"],
|
||||
"sunset": weather_data["sunset"],
|
||||
"pressure": weather_data["pressure"]
|
||||
})
|
||||
|
||||
merged_periods.append(merged_period)
|
||||
|
||||
return {
|
||||
"fetched_at": format_datetime(datetime.now()),
|
||||
"pollen": pollen,
|
||||
"weather": weather,
|
||||
"data": merged_periods,
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue