modified: app.py

This commit is contained in:
SimolZimol
2024-09-10 09:36:08 +02:00
parent 9af76da31f
commit 272e7cad25

77
app.py
View File

@@ -23,53 +23,52 @@ def fetch_weather_data():
else:
return {"error": "Fehler beim Abrufen der Wetterdaten"}
def extract_relevant_data(weather_data):
# Extrahiere die Stationen-Daten aus dem JSON
stations_data = []
def format_weather_data(raw_data):
# Extrahiert die lesbaren Wetterdaten
formatted_data = []
# "messages" enthält eine Liste von 16 Elementen (Stationen)
for message in weather_data['messages']:
# Gehe die Liste der "messages" durch und extrahiere die relevanten Daten
for entry in raw_data.get("messages", []):
# Jeder Eintrag enthält die Wetterdaten für eine Station
station_info = {}
# Extrahiere allgemeine Stationsinformationen
station_info['Station_Name'] = None
station_info['Temperatur'] = None
station_info['Luftdruck (Pa)'] = None
station_info['Windgeschwindigkeit (m/s)'] = None
station_info['Windrichtung (Grad)'] = None
# Iteriere durch die Liste, um die relevanten Schlüssel zu finden
for sub_message in message:
if isinstance(sub_message, list):
for entry in sub_message:
if isinstance(entry, dict) and 'key' in entry:
if entry['key'] == 'stationOrSiteName':
station_info['Station_Name'] = entry['value']
elif entry['key'] == 'airTemperature':
station_info['Temperatur'] = entry['value'] - 273.15 # Umwandeln von Kelvin in Celsius
elif entry['key'] == 'pressureReducedToMeanSeaLevel':
station_info['Luftdruck (Pa)'] = entry['value']
elif entry['key'] == 'windSpeed':
station_info['Windgeschwindigkeit (m/s)'] = entry['value']
elif entry['key'] == 'windDirection':
station_info['Windrichtung (Grad)'] = entry['value']
# Füge nur vollständig erfasste Stationen hinzu
if station_info['Station_Name'] and station_info['Temperatur'] is not None:
stations_data.append(station_info)
for item in entry:
if isinstance(item, list):
for sub_item in item:
# Filtern und lesen von relevanten Wetterdaten
key = sub_item.get("key")
value = sub_item.get("value")
if key == "stationOrSiteName":
station_info["Station Name"] = value
elif key == "latitude":
station_info["Latitude"] = value
elif key == "longitude":
station_info["Longitude"] = value
elif key == "airTemperature":
station_info["Temperature (°C)"] = round(value - 273.15, 2) # Umrechnung von Kelvin in Celsius
elif key == "dewpointTemperature":
station_info["Dew Point (°C)"] = round(value - 273.15, 2) # Umrechnung von Kelvin in Celsius
elif key == "pressureReducedToMeanSeaLevel":
station_info["Pressure (hPa)"] = value / 100 # Umrechnung von Pa in hPa
elif key == "relativeHumidity":
station_info["Humidity (%)"] = value
elif key == "windSpeed":
station_info["Wind Speed (m/s)"] = value
elif key == "windDirection":
station_info["Wind Direction (°)"] = value
formatted_data.append(station_info)
return stations_data
return formatted_data
@app.route('/weather')
def get_weather():
# Abrufen der Wetterdaten
data = fetch_weather_data()
raw_data = fetch_weather_data()
if "error" in raw_data:
return jsonify(raw_data)
# Extrahiere relevante Daten
relevant_data = extract_relevant_data(data)
# Formatierte Wetterdaten anzeigen
formatted_data = format_weather_data(raw_data)
# Ausgabe der lesbaren Daten
return jsonify(relevant_data)
return jsonify(formatted_data)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)