modified: app.py
This commit is contained in:
55
app.py
55
app.py
@@ -16,43 +16,38 @@ def fetch_weather_data():
|
||||
decompressed_data = bz2.decompress(response.content)
|
||||
weather_data = json.loads(decompressed_data)
|
||||
|
||||
# Initialisiere eine Liste für die Station-Daten
|
||||
# Extrahieren der relevanten Informationen, sortiert nach stationNumber
|
||||
station_data = []
|
||||
|
||||
# Durchlaufe alle Nachrichten in den Wetterdaten
|
||||
for message in weather_data.get('messages', []):
|
||||
# Jede Nachricht hat zwei große Blöcke, der erste enthält Metadaten, der zweite die tatsächlichen Daten
|
||||
for subset in message[1]: # Wir gehen davon aus, dass der zweite Block die relevanten Informationen enthält
|
||||
station_info = {}
|
||||
# Prüfe, ob die Informationen verschachtelt sind
|
||||
for data_point in subset:
|
||||
if isinstance(data_point, list):
|
||||
for entry in data_point:
|
||||
if 'key' in entry and 'value' in entry:
|
||||
# Sammle nur die relevanten Schlüssel
|
||||
if entry['key'] == 'stationNumber':
|
||||
station_info['stationNumber'] = entry['value']
|
||||
if entry['key'] == 'stationOrSiteName':
|
||||
station_info['stationName'] = entry['value']
|
||||
if entry['key'] == 'airTemperature':
|
||||
station_info['temperature'] = entry['value']
|
||||
if entry['key'] == 'dewpointTemperature':
|
||||
station_info['dewpoint'] = entry['value']
|
||||
if entry['key'] == 'relativeHumidity':
|
||||
station_info['humidity'] = entry['value']
|
||||
if entry['key'] == 'windSpeed':
|
||||
station_info['windSpeed'] = entry['value']
|
||||
|
||||
# Nur hinzufügen, wenn station_info nicht leer ist
|
||||
if station_info:
|
||||
station_data.append(station_info)
|
||||
if len(message) > 1: # Sicherstellen, dass die Nachricht Daten enthält
|
||||
for subset in message[1]:
|
||||
station_info = {}
|
||||
for data_point in subset:
|
||||
if isinstance(data_point, list):
|
||||
# Suchen nach relevanten Schlüsseln und Werten
|
||||
for entry in data_point:
|
||||
if entry.get('key') == 'stationNumber':
|
||||
station_info['stationNumber'] = entry.get('value')
|
||||
if entry.get('key') == 'stationOrSiteName':
|
||||
station_info['stationName'] = entry.get('value')
|
||||
if entry.get('key') == 'airTemperature':
|
||||
station_info['temperature'] = entry.get('value')
|
||||
if entry.get('key') == 'dewpointTemperature':
|
||||
station_info['dewpoint'] = entry.get('value')
|
||||
if entry.get('key') == 'relativeHumidity':
|
||||
station_info['humidity'] = entry.get('value')
|
||||
if entry.get('key') == 'windSpeed':
|
||||
station_info['windSpeed'] = entry.get('value')
|
||||
|
||||
# Füge nur Stationen hinzu, die eine Stationsnummer haben
|
||||
if 'stationNumber' in station_info:
|
||||
station_data.append(station_info)
|
||||
|
||||
# Sortiere die Daten nach der StationNumber
|
||||
station_data = sorted(station_data, key=lambda x: x.get('stationNumber', 0))
|
||||
return station_data
|
||||
return []
|
||||
|
||||
|
||||
# Route für die Hauptseite
|
||||
@app.route('/')
|
||||
def index():
|
||||
@@ -65,4 +60,4 @@ def weather_data():
|
||||
return jsonify(data)
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(host='0.0.0.0', port=5000, debug=True)
|
||||
app.run(host='0.0.0.0', port=5000)
|
||||
|
||||
Reference in New Issue
Block a user