diff --git a/Simbriefimport.py b/Simbriefimport.py index 62b167d..dee6224 100644 --- a/Simbriefimport.py +++ b/Simbriefimport.py @@ -12,8 +12,11 @@ import shutil def conf(): appname = os.path.basename(sys.argv[0]) appname = appname.replace(".py", ".conf") - absFilePath = os.path.abspath(__file__) - absFilePath = absFilePath.replace(".py", ".conf") + + absFilePath = os.getcwd() + absFilePath = absFilePath.replace(".exe", ".conf") + print(appname) + print(absFilePath) if os.path.isfile(absFilePath) is False: print(appname + ' scheint es nicht zu geben.') @@ -40,12 +43,22 @@ def conf(): with open(absFilePath) as file: passw = json.load(file) return passw +def get_app_dir(): + # Fall: als .exe (z. B. mit PyInstaller gebaut) + if getattr(sys, 'frozen', False): + return Path(sys.executable).parent + # Fall: normales Python-Skript + return Path(__file__).resolve().parent +def resource_path(filename: str) -> Path: + if hasattr(sys, "_MEIPASS"): + return Path(sys._MEIPASS) / filename + return Path(__file__).resolve().parent / filename def minuten_zu_zeit(minuten) -> str: minuten = int(minuten) stunden = minuten // 60 # volle Stunden rest_min = minuten % 60 # verbleibende Minuten return f"{stunden}:{rest_min:02d}" # zweistellige Minutenanzeige -def aircr_name(aircraft_icao): +def old_aircr_name(aircraft_icao): with open("aircraft_full.json", "r", encoding="utf-8") as f: aircraft_data = json.load(f) if aircraft_icao in aircraft_data: @@ -54,7 +67,17 @@ def aircr_name(aircraft_icao): print("Code nicht vorhanden") antwort = "unbekanntes Luftfahrzeug" return (antwort) -def start_name(ori_icao): +def aircr_name(aircraft_icao: str) -> str: + json_path = resource_path("aircraft_full.json") + + with json_path.open("r", encoding="utf-8") as f: + aircraft_data = json.load(f) + + if aircraft_icao in aircraft_data: + return aircraft_data[aircraft_icao].get("name", "unbekanntes Luftfahrzeug") + else: + return "unbekanntes Luftfahrzeug" +def old_start_name(ori_icao): with open("airports_full.json", "r", encoding="utf-8") as f: ori_data = json.load(f) @@ -64,7 +87,17 @@ def start_name(ori_icao): print("Code nicht vorhanden") antwort = "unbekannter Startflughafen" return (antwort) -def airlinename(name): +def start_name(ori_icao: str) -> str: + global _airports_cache + + if _airports_cache is None: + with resource_path("airports_full.json").open(encoding="utf-8") as f: + _airports_cache = json.load(f) + + return _airports_cache.get( + ori_icao, {} + ).get("name", "unbekannter Startflughafen") +def old_airlinename(name): with open("airlines_full.json", "r", encoding="utf-8") as f: airline_data = json.load(f) if name in airline_data: @@ -73,6 +106,19 @@ def airlinename(name): print("Code nicht vorhanden") antwort = "unbekanntes Luftfahrzeug" return (antwort) +def airlinename(airline_icao: str) -> str: + global _airlines_cache + + if _airlines_cache is None: + with resource_path("airlines_full.json").open(encoding="utf-8") as f: + _airlines_cache = json.load(f) + + return _airlines_cache.get( + airline_icao, {} + ).get( + "name", + "unbekannte Fluggesellschaft" + ) def replacedynamic(message): message = message.replace('{AIRCRAFT_NAME}', aircraft_name) message = message.replace('{DESTINATION_NAME}', dest_name) @@ -270,8 +316,23 @@ def BACKUP(Pfad): host = os.getcwd() Pfad = os.getcwd() + '/Announcements/' +_airports_cache = None +_airlines_cache = None -passw = conf() + + +app_dir = get_app_dir() +conf_file = app_dir / "Simbriefimport.conf" + +if conf_file.exists(): + print("Konfigurationsdatei gefunden:", conf_file) + with open(conf_file) as file: + passw = json.load(file) + +else: + print("Keine Konfigurationsdatei vorhanden:", conf_file) + +#passw = conf() client = OpenAI( api_key=passw['AI']['Token'])