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:

  1. Kullanıcıdan şehir adı alır ve Open-Meteo'nun geocoding API'si ile enlem/boylam bilgilerini alır

  2. Bu koordinatları kullanarak hava durumu bilgilerini çeker

  3. Sıcaklık ve rüzgar hızını ekrana basar

  4. Kullanıcı 'q', 'exit' veya 'quit' yazana kadar yeni şehirler sorgulamasına izin verir

  5. 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:

text
pip install requests

komutu ile yükleyebilirsiniz.