Added first functioning algorithm!
parent
4da1c98977
commit
d1c6eaa602
|
@ -1,5 +1,6 @@
|
||||||
from tennis import get_time_slots, get_club_address
|
from tennis import get_time_slots, get_club_address
|
||||||
from weather import WeatherAPI
|
from weather import WeatherAPI
|
||||||
|
from datetime import timedelta
|
||||||
import asyncio as aio
|
import asyncio as aio
|
||||||
|
|
||||||
|
|
||||||
|
@ -23,7 +24,36 @@ async def get_decent_timeslots(club_id, weather_api_key, days=1):
|
||||||
weather_forecasts = sorted(filter(lambda x: x[2] in GOOD_CODES,
|
weather_forecasts = sorted(filter(lambda x: x[2] in GOOD_CODES,
|
||||||
weather_forecasts), key=lambda x: x[0])
|
weather_forecasts), key=lambda x: x[0])
|
||||||
|
|
||||||
# Filter out non-free timeslots
|
# Convert weather_forecasts to dict for faster lookups
|
||||||
timeslots = filter(lambda x: x[1] == 0, timeslots)
|
weather_forecasts = {date_obj: weather_str for date_obj, weather_str, _ in
|
||||||
|
weather_forecasts}
|
||||||
|
print(weather_forecasts)
|
||||||
|
|
||||||
return timeslots
|
# Filter out non-free timeslots
|
||||||
|
timeslots = list(filter(lambda x: x[1] == 0, timeslots))
|
||||||
|
print(timeslots)
|
||||||
|
|
||||||
|
output = []
|
||||||
|
|
||||||
|
for field_name, _, start_time, duration in timeslots:
|
||||||
|
start_hour = start_time.replace(minute=0)
|
||||||
|
|
||||||
|
weather_names = []
|
||||||
|
valid = True
|
||||||
|
|
||||||
|
while start_hour < start_time + duration:
|
||||||
|
if (weather_name := weather_forecasts.get(start_hour)):
|
||||||
|
weather_names.append(weather_name)
|
||||||
|
|
||||||
|
# If we can't find any information about the timeslot, we assume
|
||||||
|
# it's bad
|
||||||
|
else:
|
||||||
|
valid = False
|
||||||
|
break
|
||||||
|
|
||||||
|
start_hour += timedelta(hours=1)
|
||||||
|
|
||||||
|
if valid:
|
||||||
|
output.append((field_name, start_time, duration, weather_names))
|
||||||
|
|
||||||
|
return output
|
||||||
|
|
Loading…
Reference in New Issue