transitous rewrite: bug fixes

don't know anymore :(
This commit is contained in:
Kaaninchen
2026-08-16 14:04:55 +02:00
parent 1b0b10dc45
commit 5a2d0bf8d6
6 changed files with 31 additions and 19 deletions
+1
View File
@@ -5,3 +5,4 @@ src/data/announcements/*
config.json
src/legacy/
main_legacy.py
data.json
+19 -9
View File
@@ -1,7 +1,7 @@
import requests
import random
import json
from datetime import datetime, timezone, timedelta
from datetime import datetime, timezone
from src.utils import logger, config, get_train_name, convert_iso_string, validate_connection
@@ -32,18 +32,18 @@ def get_random_stop_id() -> str | None:
logger(f"Error finding station '{assigned_station}'", "error")
return None
id = []
id = None
for entry in data:
if entry.get("type") != "STOP":
continue
entry_id = entry.get("id", None)
id.append(entry_id)
id = entry.get("id", None)
break
if id is None:
logger(f"Failed to grab ID from '{assigned_station}'", "error")
return None
return random.choice(id)
return id
def get_random_connection(stop_id: str) -> str | None:
if stop_id is None:
@@ -81,7 +81,9 @@ def get_random_connection(stop_id: str) -> str | None:
trip_id = entry["tripId"]
if entry["mode"] in blacklist:
continue
trip_ids.append(entry["tripId"])
else:
print(entry["mode"])
trip_ids.append(entry["tripId"])
if len(trip_ids) >= min_results:
break
@@ -125,8 +127,8 @@ def get_trip_details(random_connection: dict | None) -> dict | None:
end_time = legs["endTime"]
from_station = random_connection["from_station"]
display_name = legs["displayName"]
trip_from = legs["tripFrom"]["name"]
goes_to = legs["tripTo"]["name"]
trip_from = legs["from"]["name"]
goes_to = legs["to"]["name"]
start_time = legs["startTime"]
mode = legs["mode"]
@@ -138,9 +140,13 @@ def get_trip_details(random_connection: dict | None) -> dict | None:
departure = convert_iso_string(start_time)
train_name = get_train_name(display_name, mode)
if trip_from == from_station:
long_name = f"{train_name} nach {goes_to} von {trip_from}"
else:
long_name = f"{train_name} nach {goes_to} von {trip_from}, über {from_station}"
trip_details = {
"long_name": f"{train_name} nach {goes_to} von {from_station}",
"long_name": long_name,
"short_name": display_name,
"from": from_station,
"to": goes_to,
@@ -154,6 +160,7 @@ def get_trip_details(random_connection: dict | None) -> dict | None:
}
trip_details["stops"][trip_from] = departure
print(trip_from)
for stop in legs["intermediateStops"]:
stop_arrival = convert_iso_string(stop["arrival"])
trip_details["stops"][stop["name"]] = stop_arrival
@@ -162,6 +169,9 @@ def get_trip_details(random_connection: dict | None) -> dict | None:
trip_details["departure"] = convert_iso_string(departure_time)
trip_details["stops"][goes_to] = arrival
with open('data.json', 'w') as f:
json.dump(data, f, indent=4, ensure_ascii=False)
logger(json.dumps(trip_details, indent=4, ensure_ascii=False))
return trip_details
+1
View File
@@ -112,6 +112,7 @@ OPERATOR_ALIASES = {
"DB Regio AG Südost": OPERATORS["db_allgemein"],
"DB Regio AG Nordost": OPERATORS["db_allgemein"],
"DB Regio AG Mitte": OPERATORS["db_allgemein"],
"NS International": OPERATORS["NS"],
"SBB GmbH": OPERATORS["SBB"],
"Schweizerische Bundesbahnen SBB": OPERATORS["SBB"],
}
-2
View File
@@ -45,6 +45,4 @@ def build_info_embed() -> discord.Embed:
embed.set_author(name=agency)
embed.set_thumbnail(url=metadata["logo"])
color = trip.get("color", "keine farbe :(")
print(color)
return embed
+1 -1
View File
@@ -28,7 +28,7 @@ async def rename_vc(bot: discord.Bot, voice_channel, from_scheduler: bool = Fals
mode = trip["mode"]
print("-----------------")
logger(f"Umstieg: {long_name}, Ankunft: {arrival} Uhr")
logger(f"Umstieg: {long_name}; Ankunft: {arrival} Uhr")
logger(f"Betreiber: {trip["agency"]}, Typ: {mode}")
logger(f"Versuche Namen zu ändern, wenn nichts passiert bin ich im cooldown... (warte bis zu 10min!)")
+6 -4
View File
@@ -30,6 +30,7 @@ def choose_connection() -> dict | None:
def validate_connection(start_time: str, end_time: str) -> bool:
now = datetime.now(timezone.utc)
start_dt = datetime.fromisoformat(start_time.replace("Z", "+00:00"))
print(start_dt)
end_dt = datetime.fromisoformat(end_time.replace("Z", "+00:00"))
max_wait_time = config.get("max_wait_time", 6)
@@ -94,18 +95,19 @@ def get_operator_metadata(agency: str, route_color: str) -> dict:
op_data = operators.OPERATOR_ALIASES.get(agency) or operators.OPERATORS.get(agency) or operators.OPERATORS["fallback"]
logo = op_data.get("logo", operators.OPERATORS["fallback"]["logo"])
slogans = op_data.get("slogans")
slogans = op_data.get("slogan")
color = op_data.get("color")
if color is None:
if route_color is not None:
try:
color = int(f"0x{route_color.upper()}")
color = int(route_color, 16)
except ValueError:
color = operators.OPERATORS["fallback"]["color"]
else:
logger(f"Managed to get color from API: {color}")
else:
color = operators.OPERATORS["fallback"]["colors"]
color = operators.OPERATORS["fallback"]["color"]
return {
"logo": logo,
"color": color,