modified: app.py
This commit is contained in:
67
app.py
67
app.py
@@ -23,45 +23,50 @@ def fetch_weather_data():
|
||||
else:
|
||||
return {"error": "Fehler beim Abrufen der Wetterdaten"}
|
||||
|
||||
def process_weather_data(data):
|
||||
# Hier filtern wir relevante Daten aus den 16 Elementen des JSON
|
||||
processed_data = []
|
||||
def extract_relevant_data(weather_data):
|
||||
# Extrahiere die Stationen-Daten aus dem JSON
|
||||
stations_data = []
|
||||
|
||||
# "messages" enthält eine Liste von 16 Elementen (Stationen)
|
||||
for message in weather_data['messages']:
|
||||
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
|
||||
|
||||
for entry in data["messages"]:
|
||||
for subset in entry:
|
||||
station_name = next((item["value"] for item in subset if item["key"] == "stationOrSiteName"), None)
|
||||
temperature = next((item["value"] for item in subset if item["key"] == "airTemperature"), None)
|
||||
wind_speed = next((item["value"] for item in subset if item["key"] == "windSpeed"), None)
|
||||
pressure = next((item["value"] for item in subset if item["key"] == "pressureReducedToMeanSeaLevel"), None)
|
||||
humidity = next((item["value"] for item in subset if item["key"] == "relativeHumidity"), None)
|
||||
visibility = next((item["value"] for item in subset if item["key"] == "horizontalVisibility"), None)
|
||||
|
||||
# Erstelle ein lesbares Format
|
||||
station_data = {
|
||||
"station": station_name,
|
||||
"temperature": round(temperature - 273.15, 2) if temperature else None, # Konvertiere von Kelvin zu Celsius
|
||||
"wind_speed": wind_speed,
|
||||
"pressure": pressure,
|
||||
"humidity": humidity,
|
||||
"visibility": visibility
|
||||
}
|
||||
|
||||
processed_data.append(station_data)
|
||||
# Gehe durch die Einträge für jede Station
|
||||
for entry in message:
|
||||
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)
|
||||
|
||||
# Filtere nur die Einträge, die eine Stationsinformation enthalten
|
||||
processed_data = [entry for entry in processed_data if entry["station"]]
|
||||
|
||||
return processed_data
|
||||
return stations_data
|
||||
|
||||
@app.route('/weather')
|
||||
def get_weather():
|
||||
# Abrufen der Wetterdaten
|
||||
data = fetch_weather_data()
|
||||
|
||||
if "error" in data:
|
||||
return jsonify(data)
|
||||
# Extrahiere relevante Daten
|
||||
relevant_data = extract_relevant_data(data)
|
||||
|
||||
processed_data = process_weather_data(data)
|
||||
return jsonify(processed_data)
|
||||
# Ausgabe der lesbaren Daten
|
||||
return jsonify(relevant_data)
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(host='0.0.0.0', port=5000)
|
||||
|
||||
Reference in New Issue
Block a user