Membuat Aplikasi Weather Forecast dengan Python dan OpenWeatherMap API
Aplikasi perkiraan cuaca adalah salah satu cara yang bagus untuk mendapatkan informasi terbaru tentang kondisi cuaca lokal maupun global. Dalam artikel ini, kita akan membahas cara membuat aplikasi sederhana untuk memperoleh perkiraan cuaca menggunakan Python dan API OpenWeatherMap.
1. pertama kita daftar di website berikut untuk menggunakan api key nya openweathermap.org
2. Menginstal Library Requests pada python
Kita akan menggunakan library Python requests untuk melakukan permintaan HTTP ke OpenWeatherMap API. :
3. Membuat Aplikasi Python, berikut ini source code aplikasi sederhana untuk menampilkan cuaca dari kota / negara yang di cari
import requests
import json
import tkinter as tk
from tkinter import ttk
# untuk menerjemahkan deskripsi cuaca
weather_translations = {
"clear sky": "cerah",
"few clouds": "sedikit awan",
"scattered clouds": "berawan",
"broken clouds": "berawan",
"overcast clouds": "berawan tebal",
"mist": "kabut",
"smoke": "asap",
"haze": "kabut asap",
"sand/ dust whirls": "puting beliung debu/ pasir",
"fog": "kabut",
"sand": "pasir",
"dust": "debu",
"volcanic ash": "abu vulkanik",
"squalls": "badai",
"tornado": "tornado",
"light intensity drizzle": "hujan gerimis ringan",
"drizzle": "gerimis",
"heavy intensity drizzle": "hujan gerimis lebat",
"light intensity drizzle rain": "hujan gerimis ringan",
"drizzle rain": "hujan gerimis",
"heavy intensity drizzle rain": "hujan gerimis lebat",
"shower rain and drizzle": "hujan gerimis",
"heavy shower rain and drizzle": "hujan gerimis lebat",
"shower drizzle": "gerimis",
"light rain": "hujan ringan",
"moderate rain": "hujan sedang",
"heavy intensity rain": "hujan lebat",
"very heavy rain": "hujan sangat lebat",
"extreme rain": "hujan ekstrim",
"freezing rain": "hujan beku",
"light intensity shower rain": "hujan ringan",
"shower rain": "hujan",
"heavy intensity shower rain": "hujan lebat",
"ragged shower rain": "hujan lebat berpencar",
"light snow": "salju ringan",
"snow": "salju",
"heavy snow": "salju lebat",
"sleet": "hujan salju",
"shower sleet": "hujan salju",
"light rain and snow": "hujan dan salju ringan",
"rain and snow": "hujan dan salju",
"light shower snow": "hujan salju",
"shower snow": "hujan salju",
"heavy shower snow": "hujan salju",
"mist": "kabut",
"smoke": "asap",
"haze": "kabut asap",
"sand/ dust whirls": "puting beliung debu/ pasir",
"fog": "kabut",
"sand": "pasir",
"dust": "debu",
"volcanic ash": "abu vulkanik",
"squalls": "badai",
"thunderstorm": "Badai petir",
"tornado": "tornado"
}
def kelvin_to_celsius(kelvin):
return kelvin - 273.15
def get_weather():
api_key = "ISI_DENGAN_API_KEY_KALIAN_YA"
base_url = "http://api.openweathermap.org/data/2.5/weather?"
city_name = city_entry.get()
complete_url = base_url + "appid=" + api_key + "&q=" + city_name
response = requests.get(complete_url)
x = response.json()
if x["cod"] != "404":
y = x["main"]
current_temperature = y["temp"]
current_temperature_celsius = kelvin_to_celsius(current_temperature)
current_pressure = y["pressure"]
current_humidity = y["humidity"]
z = x["weather"]
weather_description = z[0]["description"]
translated_description = weather_translations.get(weather_description, weather_description)
result_label.config(text=f"Temperatur: {current_temperature_celsius:.2f}°C\nTekanan Atmosfer: {current_pressure}hPa\nKelembaban: {current_humidity}%\nDeskripsi: {translated_description}")
else:
result_label.config(text="Kota Tidak Ditemukan")
# GUI Setup
root = tk.Tk()
root.title("Weather Forecast - DreamPedia")
root.geometry("400x300")
style = ttk.Style()
style.theme_use("clam")
style.configure("TButton", foreground="white", background="#007bff")
style.configure("TLabel", foreground="#007bff", font=("Helvetica", 12))
style.configure("TEntry", font=("Helvetica", 12))
city_label = ttk.Label(root, text="Masukkan Nama Kota: ")
city_label.pack(pady=10)
city_entry = ttk.Entry(root, width=30)
city_entry.pack()
get_weather_button = ttk.Button(root, text="Dapatkan Cuaca", command=get_weather)
get_weather_button.pack(pady=10)
result_label = ttk.Label(root, text="")
result_label.pack(pady=10)
root.mainloop()
4. Menjalankan Aplikasi
Simpan kode di atas dengan ekstensi .py. Jalankan aplikasi dengan perintah:(diambil dari berbagai sumber)
Post a Comment