Python ve Flask ile Kendi Hava Durumu Panonuzu Yapın: API Entegrasyonundan Kullanıcı Deneyimine

Günümüzde mobil uygulamaların vazgeçilmezi olan hava durumu servisleri, aslında arka planda devasa veri ağlarıyla çalışan API’ların (Uygulama Programlama Arayüzü) birleşimidir. Peki, kendi bilgisayarınızda gerçek zamanlı verilerle çalışan, şık bir hava durumu panosu oluşturmak ne kadar zor? Flask’ın hafifliği ve OpenWeatherMap’in kapsamlı verileriyle, bu sürecin aslında ne kadar keyifli ve öğretici olduğunu göreceksiniz.

Gerçek Zamanlı Verilerle Dinamik Bir Hava Durumu Panosu

Bu proje, sadece basit bir “sıcaklık gösterme” aracından öte, kullanıcı deneyimini ön plana çıkaran kapsamlı bir dashboard uygulamasıdır. Uygulama; dünya üzerindeki herhangi bir şehrin anlık hava durumunu çekerken, aynı zamanda 5 günlük bir tahmin sunar ve kullanıcının son yaptığı aramaları hatırlayarak hızlı erişim sağlar.

Sistemin merkezinde,le anlık hava durumu verilerini sağlayan OpenWeatherMap API yer alır. Flask ise bu verileri işleyip modern bir HTML arayüzü üzerinden kullanıcıya sunan köprü görevini üstlenir.

Kodun Anatomisi

Projenin başarısı, karmaşık API verilerinin kullanıcıya anlamlı bir şekilde sunulmasında yatar. İşte kodun öne çıkan kritik noktaları:

1. API Verilerinin İşlenmesi ve Emoji Eşlemesi

OpenWeatherMap API’si, hava durumunu sayısal kodlarla (örneğin 800 = Açık Hava) döndürür. Uygulama, weather_icon(code) fonksiyonuyla bu kodları anlamlı emojilere dönüştürerek görsel bir zenginlik sunar.

def weather_icon(code):
    if code < 300:   return "⛈"   # Gök gürültülü fırtına
    if code < 800:   return "🌧"   # Yağmur / Kar
    if code == 800:  return "☀️"   # Açık hava
    return "☁️"                    # Bulutlu

2. Tahmin Verilerinin Agregasyonu (Toplanması)

API’nin /forecast endpoint’i, verileri 3 saatlik aralıklarla döndürür. Bu, 5 gün için toplam 40 veri noktası demektir. Uygulama, bu verileri tarihe göre gruplayarak her gün için maksimum ve minimum sıcaklıkları hesaplar ve o günün en hakim hava durumunu belirler. Bu “veri temizleme” süreci, ham veriyi kullanıcı için anlamlı bir tabloya dönüştürür.

3. Oturum Yönetimi ile Arama Geçmişi

Kullanıcıların sıkça baktığı şehirleri tekrar yazmak zorunda kalmaması için flask.session kullanılmıştır. Son yapılan 5 benzersiz arama, sunucu tarafında oturumla ilişkilendirilerek saklanır ve ana sayfada tıklanabilir bağlantılar olarak gösterilir.

4. Dinamik Arayüz ve Jinja2

index.html içerisinde Jinja2 şablon motoru kullanılarak, verinin olup olmamasına göre farklı ekranlar gösterilir. Eğer bir şehir aranmamışsa “Bir şehir arayın” mesajı, veri geldiyse detaylı hava durumu kartları render edilir.

Nasıl Çalıştırılır?

Projeyi kendi yerel ortamınızda ayağa kaldırmak için şu adımları izleyin:

  1. Gerekli Kütüphaneleri Kurun:
   pip install flask requests
  1. API Anahtarınızı Alın:
    openweathermap.org adresinden ücretsiz bir hesap oluşturun ve API anahtarınızı (AppID) alın.
  2. Yapılandırma:
    Proje klasöründe bir .env dosyası oluşturun ve anahtarınızı şu formatta ekleyin:
   OPENWEATHERMAP_API_KEY=buraya_kendi_anahtarınızı_yazın
  1. Uygulamayı Başlatın:
   python weather_app.py

Ardından tarayıcınızdan http://localhost:8117 adresine gidin.

Ne Öğrendik?

Bu proje ile Python ekosisteminin en güçlü yanlarından bazılarını deneyimledik:

  • REST API Entegrasyonu: requests kütüphanesi ile JSON formatındaki dış kaynaklı verileri tüketmeyi.
  • Veri Dönüştürme: Ham zaman damgalarını (timestamp) yerel saat dilimine çevirme ve 3 saatlik tahminleri günlük özetlere dönüştürme.
  • State Management (Durum Yönetimi): Flask oturumları ile basit bir “geçmiş” özelliği ekleyerek kullanıcı deneyimini artırmayı.
  • Modern UI Tasarımı: Cam efekti (glass-morphism) ve duyarlı (responsive) ızgara yapıları ile veri odaklı bir arayüz oluşturmayı.

Kaynaklar ve Sonraki Adımlar

Bu projeyi daha da geliştirmek isterseniz şunları deneyebilirsiniz:

  • Konum Tabanlı Arama: IP adresi üzerinden kullanıcının bulunduğu şehri otomatik tahmin eden bir özellik ekleyin.
  • Veritabanı Entegrasyonu: Arama geçmişini sadece oturumda değil, SQLite veya PostgreSQL kullanarak kalıcı hale getirin.
  • Detaylı Hava Analizi: Nem ve basınç değişimlerini gösteren grafikler için Plotly veya Chart.js entegre edin.

Ahmet Aksoy

Not: Bu yazıda incelediğimiz kodu ve benzer projelerin kaynak kodlarını https://github.com/ahmetax/practical-python-examples adresinde bulabilirsiniz.

python, python programlama, python öğren, yazılım, kod, flask, openweathermap api, hava durumu uygulaması, api entegrasyonu, başlangıç seviyesi, web geliştirme

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir