Seite 1 von 1

Verbindungsfehler. Überprüfen Sie Ihre Internetverbindung. Wetterdaten nicht verfügbar.

Verfasst: Mittwoch 10. Januar 2024, 10:04
von Joe123
Hallo, ich habe eine Fage undzwar funktioniert mein Python Script nicht, welches eine Wetterapp sein soll am Ende. Es kommt nur jedes mal die Fehlermeldung "Verbindungsfehler. Überprüfen Sie Ihre Internetverbindung. Wetterdaten nicht verfügbar." auf.
Was kann ich machen oder bzw. was muss ich ändern?
Bild-URL: https://ibb.co/jfxVfgC

P.S.: Da wo der schwarze Strich ist steht der Wetter API-Schlüssel.

Danke im Vorraus!

Re: Verbindungsfehler. Überprüfen Sie Ihre Internetverbindung. Wetterdaten nicht verfügbar.

Verfasst: Mittwoch 10. Januar 2024, 10:44
von __deets__
Das Bild existiert nicht. Und besser ist auch eh den Code hier im Text einzufuegen, eingefasst in die code-Tags. Das ist der </>-Knopf im vollstaendigen Editor.

Re: Verbindungsfehler. Überprüfen Sie Ihre Internetverbindung. Wetterdaten nicht verfügbar.

Verfasst: Mittwoch 10. Januar 2024, 10:57
von Joe123
import requests
import json
from datetime import datetime

def get_weather(api_key, city):
base_url = "https://api.openweathermap.org/data/2.5 ... appid={API KEY}"
params = {
"q": city,
"appid": api_key,
"units": "metric"
}

try:
response = requests.get(base_url, params=params)
data = response.json()

if response.status_code == 200:
return data
else:
print(f"Error: {data['message']}")
return None
except requests.ConnectionError:
print("Connection error. Check your internet connection.")
return None

def display_weather(weather_data):
if weather_data:
city = weather_data['name']
description = weather_data['weather'][0]['description']
temperature = weather_data['main']['temp']
humidity = weather_data['main']['humidity']
wind_speed = weather_data['wind']['speed']

print(f"Weather in {city}: {description}")
print(f"Temperature: {temperature}°C")
print(f"Humidity: {humidity}%")
print(f"Wind Speed: {wind_speed} m/s")
print(f"Time: {datetime.utcfromtimestamp(weather_data['dt']).strftime('%Y-%m-%d %H:%M:%S')}")
else:
print("Weather data not available.")

def main():
api_key = "API KEY"
city = "Frankfurt"

weather_data = get_weather(api_key, city)
display_weather(weather_data)

if __name__ == "__main__":
main()

Re: Verbindungsfehler. Überprüfen Sie Ihre Internetverbindung. Wetterdaten nicht verfügbar.

Verfasst: Mittwoch 10. Januar 2024, 11:08
von __deets__
Das mit den Code tags hat ja schonmal nicht geklappt...

Statt den richtigen Fehler abzufangen, und daraus eine nichtsagende Fehlermeldung zu machen, und None zurueckzugeben, das einfach nur zu Folgefehlern (und einer Verschleierung der eigentlichen Ursache) fuehrt, solltest du das ty/except in get_weather entfernen. Und dann mal anschauen, was die eigentliche Fehlermeldung ist.

Re: Verbindungsfehler. Überprüfen Sie Ihre Internetverbindung. Wetterdaten nicht verfügbar.

Verfasst: Mittwoch 10. Januar 2024, 11:18
von __deets__
Nachtrag: auch die restliche Fehlerbehandlung ist unbrauchbar, weil auch wieder einfach None zurueckgegeben wuerd. Ich wuerde eine Exception mit der Message schreiben.

Re: Verbindungsfehler. Überprüfen Sie Ihre Internetverbindung. Wetterdaten nicht verfügbar.

Verfasst: Mittwoch 10. Januar 2024, 13:32
von Sirius3
Warum wird die Hälfte der GET-Parameter direkt in die URL gepackt und die andere als params übergeben? Welche appid ist dann die richtige? Die Werte für lat und lon dürften auch falsch sein.
Bei requests sollte man immer response.raise_for_status() aufrufen, damit gleich eine korrekte Fehlermeldung generiert wird.
Wenn ich das recht sehe, sollte das ungefähr so sein:

WEATHER_URL = "https://api.openweathermap.org/data/2.5/weather"

Code: Alles auswählen

def get_weather(api_key, city):
    params = {
        "q": city,
        "appid": api_key,
        "units": "metric"
    }
    response = requests.get(WEATHER_URL, params=params)
    response.raise_for_status()
    return response.json()