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
+2 -1
View File
@@ -4,4 +4,5 @@ src/data/announcements/*
!src/data/announcements/.gitkeep !src/data/announcements/.gitkeep
config.json config.json
src/legacy/ src/legacy/
main_legacy.py main_legacy.py
data.json
+21 -11
View File
@@ -1,7 +1,7 @@
import requests import requests
import random import random
import json 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 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") logger(f"Error finding station '{assigned_station}'", "error")
return None return None
id = [] id = None
for entry in data: for entry in data:
if entry.get("type") != "STOP": if entry.get("type") != "STOP":
continue continue
entry_id = entry.get("id", None) id = entry.get("id", None)
id.append(entry_id) break
if id is None: if id is None:
logger(f"Failed to grab ID from '{assigned_station}'", "error") logger(f"Failed to grab ID from '{assigned_station}'", "error")
return None return None
return random.choice(id) return id
def get_random_connection(stop_id: str) -> str | None: def get_random_connection(stop_id: str) -> str | None:
if stop_id is None: if stop_id is None:
@@ -81,7 +81,9 @@ def get_random_connection(stop_id: str) -> str | None:
trip_id = entry["tripId"] trip_id = entry["tripId"]
if entry["mode"] in blacklist: if entry["mode"] in blacklist:
continue continue
trip_ids.append(entry["tripId"]) else:
print(entry["mode"])
trip_ids.append(entry["tripId"])
if len(trip_ids) >= min_results: if len(trip_ids) >= min_results:
break break
@@ -125,8 +127,8 @@ def get_trip_details(random_connection: dict | None) -> dict | None:
end_time = legs["endTime"] end_time = legs["endTime"]
from_station = random_connection["from_station"] from_station = random_connection["from_station"]
display_name = legs["displayName"] display_name = legs["displayName"]
trip_from = legs["tripFrom"]["name"] trip_from = legs["from"]["name"]
goes_to = legs["tripTo"]["name"] goes_to = legs["to"]["name"]
start_time = legs["startTime"] start_time = legs["startTime"]
mode = legs["mode"] mode = legs["mode"]
@@ -138,9 +140,13 @@ def get_trip_details(random_connection: dict | None) -> dict | None:
departure = convert_iso_string(start_time) departure = convert_iso_string(start_time)
train_name = get_train_name(display_name, mode) 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 = { trip_details = {
"long_name": f"{train_name} nach {goes_to} von {from_station}", "long_name": long_name,
"short_name": display_name, "short_name": display_name,
"from": from_station, "from": from_station,
"to": goes_to, "to": goes_to,
@@ -154,6 +160,7 @@ def get_trip_details(random_connection: dict | None) -> dict | None:
} }
trip_details["stops"][trip_from] = departure trip_details["stops"][trip_from] = departure
print(trip_from)
for stop in legs["intermediateStops"]: for stop in legs["intermediateStops"]:
stop_arrival = convert_iso_string(stop["arrival"]) stop_arrival = convert_iso_string(stop["arrival"])
trip_details["stops"][stop["name"]] = 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["departure"] = convert_iso_string(departure_time)
trip_details["stops"][goes_to] = arrival 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)) logger(json.dumps(trip_details, indent=4, ensure_ascii=False))
return trip_details return trip_details
+1
View File
@@ -112,6 +112,7 @@ OPERATOR_ALIASES = {
"DB Regio AG Südost": OPERATORS["db_allgemein"], "DB Regio AG Südost": OPERATORS["db_allgemein"],
"DB Regio AG Nordost": OPERATORS["db_allgemein"], "DB Regio AG Nordost": OPERATORS["db_allgemein"],
"DB Regio AG Mitte": OPERATORS["db_allgemein"], "DB Regio AG Mitte": OPERATORS["db_allgemein"],
"NS International": OPERATORS["NS"],
"SBB GmbH": OPERATORS["SBB"], "SBB GmbH": OPERATORS["SBB"],
"Schweizerische Bundesbahnen SBB": 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_author(name=agency)
embed.set_thumbnail(url=metadata["logo"]) embed.set_thumbnail(url=metadata["logo"])
color = trip.get("color", "keine farbe :(")
print(color)
return embed 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"] mode = trip["mode"]
print("-----------------") 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"Betreiber: {trip["agency"]}, Typ: {mode}")
logger(f"Versuche Namen zu ändern, wenn nichts passiert bin ich im cooldown... (warte bis zu 10min!)") 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: def validate_connection(start_time: str, end_time: str) -> bool:
now = datetime.now(timezone.utc) now = datetime.now(timezone.utc)
start_dt = datetime.fromisoformat(start_time.replace("Z", "+00:00")) start_dt = datetime.fromisoformat(start_time.replace("Z", "+00:00"))
print(start_dt)
end_dt = datetime.fromisoformat(end_time.replace("Z", "+00:00")) end_dt = datetime.fromisoformat(end_time.replace("Z", "+00:00"))
max_wait_time = config.get("max_wait_time", 6) 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"] 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"]) logo = op_data.get("logo", operators.OPERATORS["fallback"]["logo"])
slogans = op_data.get("slogans") slogans = op_data.get("slogan")
color = op_data.get("color") color = op_data.get("color")
if color is None: if color is None:
if route_color is not None: if route_color is not None:
try: try:
color = int(f"0x{route_color.upper()}") color = int(route_color, 16)
except ValueError: except ValueError:
color = operators.OPERATORS["fallback"]["color"] color = operators.OPERATORS["fallback"]["color"]
else:
logger(f"Managed to get color from API: {color}")
else: else:
color = operators.OPERATORS["fallback"]["colors"] color = operators.OPERATORS["fallback"]["color"]
return { return {
"logo": logo, "logo": logo,
"color": color, "color": color,