modified: app.py
This commit is contained in:
77
app.py
77
app.py
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user