64 lines
1.9 KiB
Python
64 lines
1.9 KiB
Python
import requests
|
|
import json
|
|
|
|
USERNAME = "hubobel"
|
|
URL = "https://www.simbrief.com/api/xml.fetcher.php"
|
|
|
|
params = {
|
|
"username": USERNAME,
|
|
"json": 1, # JSON statt XML
|
|
}
|
|
|
|
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):
|
|
with open("aircraft_full.json", "r", encoding="utf-8") as f:
|
|
aircraft_data = json.load(f)
|
|
if aircraft_icao in aircraft_data:
|
|
antwort = (aircraft_data[aircraft_icao]["name"])
|
|
else:
|
|
print("Code nicht vorhanden")
|
|
antwort = "unbekanntes Luftfahrzeug"
|
|
return (antwort)
|
|
|
|
def start_name(ori_icao):
|
|
|
|
with open("airports_full.json", "r", encoding="utf-8") as f:
|
|
ori_data = json.load(f)
|
|
if ori_icao in ori_data:
|
|
antwort = (ori_data[ori_icao]["name"])
|
|
else:
|
|
print("Code nicht vorhanden")
|
|
antwort = "unbekannter Startflughafen"
|
|
return (antwort)
|
|
|
|
resp = requests.get(URL, params=params, timeout=15)
|
|
|
|
resp.raise_for_status()
|
|
|
|
data = resp.json() # dict
|
|
|
|
# Top-Level-Keys ausgeben
|
|
print(data.keys())
|
|
print()
|
|
|
|
general = data.get("general", {})
|
|
origin = data.get("origin", {})
|
|
origin_name = start_name(origin["icao_code"])
|
|
dest = data.get("destination", {})
|
|
aircraft = data.get("aircraft", {})
|
|
time = data.get("times", {})
|
|
block = minuten_zu_zeit(int(time.get("sched_block"))/60)
|
|
aircraft_icao = aircraft["icaocode"]
|
|
aircraft_name = aircr_name((aircraft_icao))
|
|
|
|
print("Airline:", general.get("icao_airline"))
|
|
print("Flugnummer:", general.get("flight_number"))
|
|
print("Abflug ICAO:", origin.get("icao_code"))
|
|
print("Ziel ICAO:", dest.get("icao_code"))
|
|
print("Geplante Blockzeit:", block)
|
|
print(aircraft_icao, aircraft_name)
|
|
print(origin["icao_code"], origin_name)
|