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:
- Gerekli Kütüphaneleri Kurun:
pip install flask requests
- API Anahtarınızı Alın:
openweathermap.org adresinden ücretsiz bir hesap oluşturun ve API anahtarınızı (AppID) alın. - Yapılandırma:
Proje klasöründe bir.envdosyası oluşturun ve anahtarınızı şu formatta ekleyin:
OPENWEATHERMAP_API_KEY=buraya_kendi_anahtarınızı_yazın
- 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:
requestskü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
PlotlyveyaChart.jsentegre 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