Python ile şehir hava durumu sorgulama
Python ile şehir hava durumu sorgulama
import requests
def hava_durumu_bilgisi_al(enlem, boylam):
url = "https://api.open-meteo.com/v1/forecast"
params = {
"latitude": enlem,
"longitude": boylam,
"current": "temperature_2m,wind_speed_10m",
"timezone": "auto"
}
try:
response = requests.get(url, params=params)
response.raise_for_status()
veri = response.json()
return veri
except requests.exceptions.RequestException as e:
print(f"API isteği sırasında hata oluştu: {e}")
return None
def konum_bilgisi_al(sehir_adi):
url = "https://geocoding-api.open-meteo.com/v1/search"
params = {
"name": sehir_adi,
"count": 1,
"language": "tr",
"format": "json"
}
try:
response = requests.get(url, params=params)
response.raise_for_status()
veri = response.json()
if not veri.get("results"):
return None
ilk_sonuc = veri["results"][0]
return {
"enlem": ilk_sonuc["latitude"],
"boylam": ilk_sonuc["longitude"],
"isim": ilk_sonuc.get("name", sehir_adi),
"ulke": ilk_sonuc.get("country", "Bilinmiyor")
}
except requests.exceptions.RequestException as e:
print(f"Konum bilgisi alınırken hata oluştu: {e}")
return None
def main():
print("Hava Durumu Bilgi Sistemi")
print("Çıkmak için 'q' veya 'exit' yazabilirsiniz.")
print("-----------------------------")
while True:
sehir_adi = input("Hava durumu bilgisi almak istediğiniz şehri yazın: ").strip()
if sehir_adi.lower() in ['q', 'exit', 'quit']:
print("Program sonlandırılıyor...")
break
if not sehir_adi:
print("Lütfen bir şehir adı girin.")
continue
konum = konum_bilgisi_al(sehir_adi)
if not konum:
print(f"'{sehir_adi}' şehri veya konumu bulunamadı. Lütfen geçerli bir şehir adı yazın.")
continue
hava_durumu = hava_durumu_bilgisi_al(konum["enlem"], konum["boylam"])
if not hava_durumu or "current" not in hava_durumu:
print(f"'{konum['isim']}' için hava durumu bilgisi alınamadı.")
continue
current = hava_durumu["current"]
sicaklik = current.get("temperature_2m", "Bilinmiyor")
ruzgar_hizi = current.get("wind_speed_10m", "Bilinmiyor")
print("\n--- Hava Durumu Bilgisi ---")
print(f"Şehir: {konum['isim']}, {konum['ulke']}")
print(f"Sıcaklık: {sicaklik}°C")
print(f"Rüzgar Hızı: {ruzgar_hizi} km/sa")
print("-----------------------------\n")
if __name__ == "__main__":
main()
Bu kod:
-
Kullanıcıdan şehir adı alır ve Open-Meteo'nun geocoding API'si ile enlem/boylam bilgilerini alır
-
Bu koordinatları kullanarak hava durumu bilgilerini çeker
-
Sıcaklık ve rüzgar hızını ekrana basar
-
Kullanıcı 'q', 'exit' veya 'quit' yazana kadar yeni şehirler sorgulamasına izin verir
-
Geçersiz şehir adı girildiğinde uyarı mesajı gösterir
Çalıştırmak için requests
kütüphanesinin yüklü olması gerekir. Eğer yüklü değilse:
pip install requests
komutu ile yükleyebilirsiniz.