From 255f34bf876146ff1e67d4149e01f1a25c52be91 Mon Sep 17 00:00:00 2001 From: hubobel Date: Wed, 24 Dec 2025 11:47:47 +0100 Subject: [PATCH 1/2] =?UTF-8?q?CPT=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Simbriefimport.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Simbriefimport.py b/Simbriefimport.py index 47eacca..e7cd332 100644 --- a/Simbriefimport.py +++ b/Simbriefimport.py @@ -179,20 +179,20 @@ print(antwort_AI.choices[0].message.content) prompt_org = passw['Prompt']['CptPrompt'] -info = {"Der Zielflughafen ist: " + dest.get("icao_code"), "Die Reisedauer beträgt ungefähr: " + block, - "Die Entfernung: " + distance + "nm", - "Der getankte Sprit: " + fuel + "kg", - "An Bord befinden sich " + pax + "Passagiere", - "Das Flugzeug ist eine " + aircraft_name, +info = {"Zielflughafen: " + dest.get("icao_code"), "Reisedauer:" + block, + "Entfernung: " + distance + "nm", + "Menge Sprit: " + fuel + "kg", + "Passagieranzahl" + pax, + "Flugzeugtyp:" + aircraft_name, "Du freust dich auf den Flug und bedankst dich, das man sich für " + airline + " entschieden hat.", - "Dein Name lautet " + passw['Prompt']['CptName'], + "Dein Name:" + passw['Prompt']['CptName'], "Startflughafen: " + origin.get("icao_code"), "sei dabei " + str(stimmung()), "Wetter am Ziel" + metar_dest, + "Flugnummer" + general.get("flight_number"), "Wetter am Start" + metar_origin} for i in info: prompt_org = prompt_org + i antwort_AI = ai(prompt_org) print(antwort_AI.choices[0].message.content) -print(str(stimmung())) \ No newline at end of file From b68bf17e62395b8904bbffc3125e3850863d7ba7 Mon Sep 17 00:00:00 2001 From: hubobel Date: Thu, 25 Dec 2025 14:15:36 +0100 Subject: [PATCH 2/2] Einzelfunktionen erstellt (def) --- Simbriefimport.example | 6 +- Simbriefimport.py | 166 ++++++++++++++++++++++++----------------- test.py | 33 +++++--- 3 files changed, 120 insertions(+), 85 deletions(-) diff --git a/Simbriefimport.example b/Simbriefimport.example index d0c22f6..960a28f 100644 --- a/Simbriefimport.example +++ b/Simbriefimport.example @@ -5,9 +5,9 @@ }, "Prompt": { "CptPrompt": "Du bist der Pilot auf einem Linienflug und begrüßt deine Fluggäste am Startflughafen.Du informierst über den Zielflughafen, die Reisedauer und den getankten Treibstoff", - "PurserPrompt": "Du bist Purser auf einem Flug an das in der METAR genannte Ziel.Der Flug ist noch nicht vollendet! Informiere die Fluggäste im Zuge der bevorstehenden Landung über die aktuelle Wetterlage hinsichtlich Temperatur, Wind und Sonne. Verhalte dich dabei wie die Wetterfee aus den Nachrichten und beschränke die Antwort auf maximal 2 kurze Sätze. Die Windrichtung bitte ignorieren. Nenne dabei den Zielflughafen mit Namen. Vermeide Aussagen wie 'Willkommen'. Sei dabei freundlich und kundenorientiert.", + "PurserPrompt_METAR": "Du bist Purser auf einem Flug an das in der METAR genannte Ziel.Der Flug ist noch nicht vollendet! Informiere die Fluggäste im Zuge der bevorstehenden Landung über die aktuelle Wetterlage hinsichtlich Temperatur, Wind und Sonne. Verhalte dich dabei wie die Wetterfee aus den Nachrichten und beschränke die Antwort auf maximal 2 kurze Sätze. Die Windrichtung bitte ignorieren. Nenne dabei den Zielflughafen mit Namen. Vermeide Aussagen wie 'Willkommen'. Sei dabei freundlich und kundenorientiert.", "CptName":"Hubobel", "tone": ["ernst", "seriös", "lustig", "gehetzt", "witzig", "übertrieben witzig", "ängstlich", "überheblich", - "dankbar", "übertrieben dankbar", "arrogant"] - } + "dankbar", "übertrieben dankbar", "arrogant", "depressiv", "kindisch", "übertrieben kindisch", "unsicher", + "heldenhaft", "verwirrt"] } \ No newline at end of file diff --git a/Simbriefimport.py b/Simbriefimport.py index e7cd332..b9044c5 100644 --- a/Simbriefimport.py +++ b/Simbriefimport.py @@ -7,17 +7,6 @@ import os import sys import random - -USERNAME = "hubobel" -URL = "https://www.simbrief.com/api/xml.fetcher.php" -params = { - "username": USERNAME, - "json": 1, # JSON statt XML -} -Pfad = 'Universal_txts/Windows' - -ordnerneu = Path(Pfad + '/neu/') -ordnerneu.mkdir(exist_ok=True) def conf(): appname = os.path.basename(sys.argv[0]) appname = appname.replace(".py", ".conf") @@ -103,43 +92,102 @@ def ai(prompt): def stimmung(): tone = (passw['Prompt']['tone']) tone = random.choice(list(tone)) + print(tone) return tone +def WelcomePilot(): + prompt_org = passw['Prompt']['CptPrompt'] + info = {"Zielflughafen: " + dest.get("icao_code"), "Reisedauer:" + block, + "Entfernung: " + distance + "nm", + "Menge Sprit: " + fuel + "kg", + "Passagieranzahl" + pax, + "Flugzeugtyp:" + aircraft_name, + "Du freust dich auf den Flug und bedankst dich, das man sich für " + airline + " entschieden hat.", + "Dein Name:" + passw['Prompt']['CptName'], + "Startflughafen: " + origin.get("icao_code"), + "Du bist von deiner Art her:" + str(stimmung()), + "Wetter am Ziel" + metar_dest, + "Flugnummer" + general.get("flight_number"), + "Wetter am Start" + metar_origin} + + for i in info: + prompt_org = prompt_org + i + antwort_AI = ai(prompt_org) + return antwort_AI +def METAR(): + prompt_org = passw['Prompt']['PurserPrompt_METAR'] + prompt2 = prompt_org + 'Die METAR lautet ' + metar_dest + antwort_AI = ai(prompt2) + return antwort_AI +def replaceFiles(): + files = [] + for datei in Path(Pfad).glob("*.txt"): + with open(datei, "r", encoding="utf-8") as f: + files.append(f"{datei.name}") + inhalt = f.read() + inhalt_neu = replacedynamic(inhalt) + dateineu = str(ordnerneu) + '/' + (f"{datei.name}") + with open(dateineu, 'w', encoding="utf-8") as e: + e.write(inhalt_neu) + return files +def Simbriefimport(): + USERNAME = "hubobel" + URL = "https://www.simbrief.com/api/xml.fetcher.php" + params = { + "username": USERNAME, + "json": 1, # JSON statt XML + } + resp = requests.get(URL, params=params, timeout=15) + resp.raise_for_status() + data = resp.json() + general = data.get("general", {}) + origin = data.get("origin", {}) + origin_name = start_name(origin["icao_code"]) + origin_icao = origin["icao_code"] + dest = data.get("destination", {}) + dest_name = start_name(dest["icao_code"]) + dest_icao = dest["icao_code"] + aircraft = data.get("aircraft", {}) + time = data.get("times", {}) + block = minuten_zu_zeit(int(time.get("sched_block")) / 60) + start_time = unix_to_datetime(int(time.get("sched_out"))) + land_time = unix_to_datetime(int(time.get("sched_in"))) + aircraft_icao = aircraft["icaocode"] + aircraft_name = aircr_name((aircraft_icao)) + airline = airlinename(general.get("icao_airline")) + flightnumber = general.get("flight_number") + flightlevel = data['general']['initial_altitude'] + fl = 'FL' + str(int(flightlevel) // 100) + distance = data['general']['route_distance'] + fuel = data['fuel']['plan_ramp'] + metar_origin = data['weather']['orig_metar'] + metar_dest = data['weather']['dest_metar'] + pax = data['weights']['pax_count'] + payload = data['weights']['payload'] + tow = data['weights']['est_tow'] + zfw = data['weights']['est_zfw'] + return (zfw, tow, payload, pax, metar_dest, metar_origin, fuel, distance, fl, flightlevel, flightnumber, airline, + aircraft_name, aircraft_icao, land_time, start_time, block, time, aircraft, dest_icao, dest_name, dest, + origin_icao, origin_name, origin, general) + + +Pfad = 'Universal_txts/Windows' + +ordnerneu = Path(Pfad + '/neu/') +ordnerneu.mkdir(exist_ok=True) passw = conf() client = OpenAI( api_key=passw['AI']['Token']) -resp = requests.get(URL, params=params, timeout=15) -resp.raise_for_status() -data = resp.json() # dict -print(data.keys()) -print(data['weights']) -general = data.get("general", {}) -origin = data.get("origin", {}) -origin_name = start_name(origin["icao_code"]) -origin_icao = origin["icao_code"] -dest = data.get("destination", {}) -dest_name = start_name(dest["icao_code"]) -dest_icao = dest["icao_code"] -aircraft = data.get("aircraft", {}) -time = data.get("times", {}) -block = minuten_zu_zeit(int(time.get("sched_block"))/60) -start_time = unix_to_datetime(int(time.get("sched_out"))) -land_time = unix_to_datetime(int(time.get("sched_in"))) -aircraft_icao = aircraft["icaocode"] -aircraft_name = aircr_name((aircraft_icao)) -airline = airlinename(general.get("icao_airline")) -flightnumber = general.get("flight_number") -flightlevel = data['general']['initial_altitude'] -fl = 'FL'+str(int(flightlevel)//100) -distance = data['general']['route_distance'] -fuel = data['fuel']['plan_ramp'] -metar_origin = data['weather']['orig_metar'] -metar_dest = data['weather']['dest_metar'] -pax = data['weights']['pax_count'] -payload = data['weights']['payload'] -tow = data['weights']['est_tow'] -zfw = data['weights']['est_zfw'] + # dict + +#print(data.keys()) +#print(data['weights']) + +(zfw, tow, payload, pax, metar_dest, metar_origin, fuel, distance, fl, flightlevel, flightnumber, airline, + aircraft_name, aircraft_icao, land_time, start_time, block, time, aircraft, dest_icao, dest_name, dest, origin_icao, + origin_name, origin, general) = Simbriefimport() + print('') print("Airline:", general.get("icao_airline")) @@ -164,35 +212,13 @@ print("Wetter:", dest["icao_code"], metar_dest) -for datei in Path(Pfad).glob("*.txt"): - with open(datei, "r", encoding="utf-8") as f: - inhalt = f.read() - inhalt_neu = replacedynamic(inhalt) - dateineu = str(ordnerneu) + '/' + (f"{datei.name}") - with open(dateineu,'w', encoding="utf-8") as e: - e.write(inhalt_neu) -prompt_org = passw['Prompt']['PurserPrompt'] -prompt2 = prompt_org + 'Die METAR lautet ' + metar_dest -antwort_AI = ai(prompt2) -print(antwort_AI.choices[0].message.content) +print(replaceFiles()) -prompt_org = passw['Prompt']['CptPrompt'] +metarCabin = METAR() +print(metarCabin.choices[0].message.content) -info = {"Zielflughafen: " + dest.get("icao_code"), "Reisedauer:" + block, - "Entfernung: " + distance + "nm", - "Menge Sprit: " + fuel + "kg", - "Passagieranzahl" + pax, - "Flugzeugtyp:" + aircraft_name, - "Du freust dich auf den Flug und bedankst dich, das man sich für " + airline + " entschieden hat.", - "Dein Name:" + passw['Prompt']['CptName'], - "Startflughafen: " + origin.get("icao_code"), - "sei dabei " + str(stimmung()), - "Wetter am Ziel" + metar_dest, - "Flugnummer" + general.get("flight_number"), - "Wetter am Start" + metar_origin} -for i in info: - prompt_org = prompt_org + i -antwort_AI = ai(prompt_org) -print(antwort_AI.choices[0].message.content) +welcomePilot = WelcomePilot() +print(welcomePilot.choices[0].message.content) + diff --git a/test.py b/test.py index 60012f9..5c807b1 100644 --- a/test.py +++ b/test.py @@ -1,14 +1,23 @@ -from openai import OpenAI +import random +passw = {'Prompt': + { + "PurserPrompt": "", + "CptPrompt": "", + "CptName":"" -from Simbriefimport import metar_origin -metar_ai = "LEPA LEPA 191548Z VRB01KT 9999 FEW012 SCT028 18/15 Q1017 NOSIG" -prompt = 'Du bist Purser auf einem Flug an das in der METAR genannte Ziel.Der Flug ist noch nicht vollendet! Informiere die Fluggäste im Zuge der bevorstehenden Landung über die aktuelle Wetterlage hinsichtlich Temperatur, Wind und Sonne. Verhalte dich dabei wie die Wetterfee aus den Nachrichten und beschränke die Antwort auf maximal 2 kurze Sätze. Die Windrichtung bitte ignorieren. Nenne dabei den Zielflughafen mit Namen. Vermeide Aussagen wie "Willkommen". Sei dabei freundlich und kundenorientiert.' + metar_ai -client = OpenAI( + }, + 'AI': + { + "Token": "", + "Model": "", + "tone": {'ernst', 'seriös', 'lustig', 'gehetzt', 'witzig', 'übertrieben witzig', 'ängstlich', + 'überheblich', 'dankbar', 'übertrieben dankbar', } + } + } -completion = client.chat.completions.create( - model="gpt-4.1-mini", - messages=[ - {"role": "user", "content": prompt} - ] -) -print(completion.choices[0].message.content) \ No newline at end of file +tone = (passw['AI']['tone']) + + + +tone = random.choice(list(tone)) +print(tone) \ No newline at end of file