transitous rewrite: make sure to only use connections in the future

This commit is contained in:
Kaaninchen
2026-08-16 10:43:38 +02:00
parent 53358c08b1
commit f3d9a25f95
5 changed files with 93 additions and 48 deletions
+25 -9
View File
@@ -1,26 +1,22 @@
import discord
import asyncio
from datetime import datetime
from datetime import datetime, timedelta, date
from src.api import transitous
from src.utils import logger, channel_formatting
from src.utils import logger, channel_formatting, choose_connection
_scheduled_task: asyncio.Task | None = None
async def rename_vc(bot: discord.Bot, voice_channel, from_scheduler: bool = False):
global trip
global trip, _scheduled_task
if not from_scheduler and _scheduled_task and not _scheduled_task.done():
_scheduled_task.cancel()
station_id = transitous.get_random_stop_id()
connection = transitous.get_random_connection(station_id)
trip = transitous.get_trip_details(connection["trip_id"], connection["from_station"])
trip = choose_connection()
arrival = trip["arrival"]
long_name = trip["long_name"]
print("-----------------")
logger(f"Umstieg: {long_name}, Ankunft: {arrival}")
logger(f"Umstieg: {long_name}, Ankunft: {arrival} Uhr")
logger(f"Betreiber: {trip["agency"]}, Typ: {trip["mode"]}")
logger(f"Versuche Namen zu ändern, wenn nichts passiert bin ich im cooldown... (warte bis zu 10min!)")
@@ -30,3 +26,23 @@ async def rename_vc(bot: discord.Bot, voice_channel, from_scheduler: bool = Fals
logger(f"Name geändert!")
_scheduled_task = asyncio.create_task(_schedule_next_transfer(bot, arrival))
async def _schedule_next_transfer(bot, arrival):
now = datetime.now()
parsed_time = datetime.strptime(arrival, "%H:%M").time()
arrival_dt = datetime.combine(date.today(), parsed_time)
if arrival_dt < now:
arrival_dt += timedelta(days=1)
wait_seconds = (arrival_dt - now).total_seconds()
if wait_seconds > 0:
remaining = str(timedelta(seconds=wait_seconds))
logger(f"Nächster Umstieg in {remaining.split('.')[0]} ({arrival} Uhr)")
await asyncio.sleep(wait_seconds)
logger("Zug angekommen, wähle neue Verbindung")
await rename_vc(bot, from_scheduler=True)