diff --git a/.gitignore b/.gitignore index e337bbc..c61264a 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ src/data/announcements/* !src/data/announcements/.gitkeep config.json src/legacy/ -main_legacy.py \ No newline at end of file +main_legacy.py +data.json \ No newline at end of file diff --git a/src/api/transitous.py b/src/api/transitous.py index fcf67af..9f41c5c 100644 --- a/src/api/transitous.py +++ b/src/api/transitous.py @@ -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 diff --git a/src/data/operators.py b/src/data/operators.py index 098e98b..6dc3a9f 100644 --- a/src/data/operators.py +++ b/src/data/operators.py @@ -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"], } diff --git a/src/dc/embeds.py b/src/dc/embeds.py index 6ffa2ee..8b1973f 100644 --- a/src/dc/embeds.py +++ b/src/dc/embeds.py @@ -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 \ No newline at end of file diff --git a/src/dc/handlers.py b/src/dc/handlers.py index 4ce76c8..3607904 100644 --- a/src/dc/handlers.py +++ b/src/dc/handlers.py @@ -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!)") diff --git a/src/utils.py b/src/utils.py index 34f6265..ab3ba51 100644 --- a/src/utils.py +++ b/src/utils.py @@ -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,