آموزش ساخت برنامه هواشناسی آنلاین در Python از صفر تا صد

فهرست مطالب
ساخت برنامه هواشناسی آنلاین در Python یکی از پروژههای جذاب و کاربردی برای یادگیری برنامهنویسی است که ترکیبی از کار با APIها، پردازش دادههای JSON و نمایش اطلاعات به شیوهای خوانا را شامل میشود. در این آموزش از صفر تا صد مراحل ساخت چنین برنامهای را بررسی خواهیم کرد. با مطالعه این مطلب شما از دریافت کلید API رایگان از سرویسهایی مانند OpenWeatherMap گرفته تا استخراج دادههای آبوهوا مانند دما، رطوبت و شرایط جوی و نمایش آنها در قالب یک رابط کاربری ساده و زیبا را یاد میگیرید. یک مثال هم در مورد پروژه هواشناسی با پایتون ارائه میکنیم. این پروژه مهارتهای برنامهنویسی شما را تقویت کرده و بینشی عملی درباره کار با دادههای واقعی در اختیارتان قرار میدهد.
پیشنیازهای ساخت برنامه آبوهوا در پایتون
قبلا مهارتهای لازم برای تحلیل داده با پایتون را کسب کردهاید و روش انجام آن را یاد گرفتهاید. حالا میخواهیم بدانیم برای آموزش ساخت برنامه آبوهوا با پایتون، چه پیشنیازهایی لازم است؟ برای ساخت برنامه هواشناسی آنلاین در Python ابتدا باید با مفاهیم پایهای مانند کار با APIها، API هواشناسی در پایتون و کتابخانه های پایتون آشنا شوید. این برنامه از طریق دریافت اطلاعات آبوهوا از سرویسهای مبتنی بر API مانند OpenWeatherMap دادهها را استخراج میکند. سپس آنها را پردازش کرده و نمایش میدهد. همچنین، بسته به نوع رابط کاربری مورد نظر، میتوان از کتابخانههایی مانند Tkinter برای ساخت اپلیکیشن دسکتاپ یا فریم ورک Flask برای توسعه یک وباپلیکیشن ساده استفاده کرد. برای درک بهتر در ادامه هر مرحله از این پروسه را شرح میدهیم.
آشنایی با مفاهیم API
API (رابط برنامهنویسی کاربردی) ابزاری است که امکان ارتباط بین نرمافزارهای مختلف را فراهم میکند. در این پروژه، با استفاده از APIهای آبوهوایی مانند OpenWeatherMap، میتوانید دادههای واقعی مانند دما، رطوبت و وضعیت جوی را دریافت کنید. معمولاً این دادهها در قالب JSON ارائه میشوند که با کتابخانههای پایتون مانند requests و json قابل پردازش هستند.
معرفی کتابخانههای مورد نیاز (Requests، JSON، Tkinter/Flask)
برای دریافت اطلاعات آبوهوا با Python باید از کتابخانه Requests برای ارسال درخواست HTTP به API و دریافت پاسخ بهره ببرید. سپس با استفاده از json میتوانید دادههای دریافتی را تجزیه و تحلیل کنید. اگر قصد دارید یک رابط گرافیکی ساده بسازید، Tkinter گزینه مناسبی است، اما اگر ترجیح میدهید برنامه شما تحت وب باشد، فریمورک Flask به شما کمک میکند تا یک سرویس وب ایجاد کنید. سپس میتوانید اطلاعات آبوهوا را در مرورگر نمایش دهید. جنگو (Django) نیز میتواند به شما در ساخت برنامه هواشناسی کمک کند.
قدمبهقدم تا ساخت برنامه هواشناسی آنلاین در پایتون
ساخت برنامه هواشناسی آنلاین در Python نیازمند طی کردن مراحل مشخصی است که از دریافت کلید API شروع شده و تا طراحی رابط کاربری و اجرای نهایی برنامه ادامه مییابد. در این بخش هر مرحله را به صورت کامل و عملی توضیح میدهیم تا بتوانید یک برنامه کاربردی و دقیق برای نمایش اطلاعات آبوهوا ایجاد کنید.
سایت geeksforgeeks.org درباره ساخت برنامه هواشناسی آنلاین در Python چنین گفته است:
“ماژولهای مورد نیاز:
Tkinter: یک کتابخانه داخلی پایتون برای ساخت رابط کاربری گرافیکی (GUI) با استفاده از ابزارکهای Tkinter است.
Requests: کتابخانهای که با کمک URL دادهها را دریافت میکند. میتوانید آن را با دستور زیر نصب کنید:
text Copy Download pip install requests
روش کار:
- ابتدا باید ازAPI هواشناسی برای دریافت داده از سایت Open Weather Map کمک بگیریم. برای این کار نیاز به تولید یک API Key داریم.
- سپس یک فایل پیکربندی (configuration) ایجاد میکنیم تا کلید API را در آن ذخیره کنیم.
- در نهایت از این فایل پیکربندی در اسکریپت پایتون استفاده خواهیم کرد.
مراحل تولید کلید API :
در سایت Open Weather Map وارد حساب کاربری خود شوید.
به بخش API بروید و در قسمت Current Weather Data روی API Doc کلیک کنید.
در بخش API Call لینک زیر را مشاهده میکنید:
api.openweathermap.org/data/2.5/weather?q={city name}&appid={API key}
روی API key در لینک کلیک کنید تا به صفحه تولید کلید هدایت شوید.
کلید تولید شده چیزی شبیه به این خواهد بود:
text Copy Download 3a7b4c5d6e7f8g9h0i1j2k3l4m5n6o7p8q
مراحل ایجاد فایل پیکربندی:
- یک فایل با نامini ایجاد کنید.
- یک بخش با نام دلخواه (مثلاً[gfg]) درون آن تعریف کنید.
- یک متغیر به نامkey بسازید و کلید API کپیشده را در مقابل آن قرار دهید، به عنوان مثال:
ini Copy Download [gfg] key = 3a7b4c5d6e7f8g9h0i1j2k3l4m5n6o7p8q
اکنون میتوانید از این فایل برای ذخیره ایمن کلید API و استفاده در برنامه هواشناسی خود استفاده کنید.
مراحل ایجاد اسکریپت پایتون:
وارد کردن ماژولهای مورد نیاز:
from configparser import ConfigParser import requests from tkinter import * from tkinter import messagebox
ساخت بدنه رابط کاربری با Tkinter :
# ایجاد شیء اصلی app = Tk() # تنظیم عنوان پنجره app.title("برنامه آب و هوا") # تنظیم اندازه پنجره app.geometry("300x300") # ایجاد عناصر رابط کاربری city_text = StringVar() city_entry = Entry(app, textvariable=city_text) city_entry.pack() Search_btn = Button(app, text="جستجوی آب و هوا", width=12, command=search) Search_btn.pack() location_lbl = Label(app, text="مکان", font={'bold', 20}) location_lbl.pack() temperature_label = Label(app, text="") temperature_label.pack() weather_l = Label(app, text="") weather_l.pack() app.mainloop()
خواندن فایل config.ini و بارگذاری کلید API :
# استخراج کلید از فایل پیکربندی config_file = "config.ini" config = ConfigParser() config.read(config_file) api_key = config['gfg']['api'] url = 'http://api.openweathermap.org/data/2.5/weather?q={}&appid={}'
تابع getweather برای دریافت اطلاعات آب و هوا:
def getweather(city): result = requests.get(url.format(city, api_key)) if result: json = result.json() city = json['name'] country = json['sys']['country'] temp_kelvin = json['main']['temp'] temp_celsius = temp_kelvin - 273.15 weather1 = json['weather'][0]['main'] final = [city, country, temp_kelvin, temp_celsius, weather1] return final else: print
تابع search برای نمایش اطلاعات آب و هوا:
def search(): city = city_text.get() weather = getweather(city) if weather: location_lbl['text'] = '{} ,{}'.format(weather[0], weather[1]) temperature_label['text'] = str(round(weather[3], 2)) + " درجه سانتیگراد" weather_l['text'] = weather[4] else: messagebox.showerror('خطا', "شهر {} یافت نشد".format(city))
برنامه کامل:
from configparser import ConfigParser import requests from tkinter import * from tkinter import messagebox # استخراج کلید API config_file = "config.ini" config = ConfigParser() config.read(config_file) api_key = config['gfg']['api'] url = 'http://api.openweathermap.org/data/2.5/weather?q={}&appid={}' def getweather(city): result = requests.get(url.format(city, api_key)) if result: json = result.json() city = json['name'] country = json['sys']['country'] temp_kelvin = json['main']['temp'] temp_celsius = temp_kelvin - 273.15 weather1 = json['weather'][0]['main'] final = [city, country, temp_kelvin, temp_celsius, weather1] return final def search(): city = city_text.get() weather = getweather(city) if weather: location_lbl['text'] = '{} ,{}'.format(weather[0], weather[1]) temperature_label['text'] = str(round(weather[3], 2)) + " درجه سانتیگراد" weather_l['text'] = weather[4] # ایجاد رابط کاربری app = Tk() app.title("برنامه آب و هوا") app.geometry("300x300") city_text = StringVar() city_entry = Entry(app, textvariable=city_text) city_entry.pack() Search_btn = Button(app, text="جستجوی آب و هوا", width=12, command=search) Search_btn.pack() location_lbl = Label(app, text="مکان", font={'bold', 20}) location_lbl.pack() temperature_label = Label(app, text="") temperature_label.pack() weather_l = Label(app, text="") weather_l.pack() app.mainloop()
نکات مهم:
- حتماً فایلini را با کلید API معتبر پر کنید
- برای تبدیل دمای کلوین به سانتیگراد، 273.15 از مقدار کم میشود
- از تابع round() برای نمایش دمای اعشاری با دو رقم اعشار استفاده شده است
- در صورت عدم یافتن شهر، پیغام خطا نمایش داده میشود
دریافت کلید API از سرویسهای هواشناسی (مثل OpenWeatherMap)
اولین قدم برای ساخت برنامه هواشناسی آنلاین در Python دریافت یک کلید API (API Key) از یک سرویس معتبر است. این سرویس دادههای آبوهوایی را به صورت رایگان (با محدودیتهایی) یا پولی ارائه میدهد. برای دریافت کلید، کافیست در سایت سرویس دهنده ثبتنام کنید و پس از تأیید ایمیل، کلید API را از بخش “API Keys” دریافت نمایید. این کلید برای احراز هویت درخواستهای شما به سرورهای وبسایت ارائه دهنده استفاده میشود.
نوشتن کد برای ارسال درخواست به API
پس از دریافت کلید API، باید با استفاده از کتابخانه requests در پایتون، یک درخواست HTTP GET به آدرس API مورد نظر ارسال کنید. به عنوان مثال برای دریافت اطلاعات آبوهوای یک شهر خاص، میتوانید از endpoint زیر استفاده کنید:
API_KEY = "کلید_API_شما" CITY = "تهران" url = f"http://api.openweathermap.org/data/2.5/weather?q={CITY}&appid={API_KEY}&units=metric" response = requests.get(url) data = response.json()
این کد، دادههای آبوهوایی را به صورت JSON دریافت میکند
پردازش و نمایش دادههای آبوهوا
معمولاً دادههای دریافتی از API شامل دما، رطوبت، سرعت باد، وضعیت جوی (مثل آفتابی، ابری، بارانی) و سایر اطلاعات مفید هستند. با استفاده از کتابخانه json میتوانید این دادهها را استخراج و به شکل خوانا نمایش دهید:
if data["cod"] == 200: weather = data["weather"][0]["description"] temp = data["main"]["temp"] humidity = data["main"]["humidity"] print(f"وضعیت هوا: {weather}\nدما: {temp}°C\nرطوبت: {humidity}%")
طراحی رابط کاربری ساده (GUI یا تحت وب)
برای نمایش اطلاعات به کاربر، میتوانید از Tkinter برای ساخت یک رابط گرافیکی ساده یا از Flask برای ایجاد یک وباپلیکیشن استفاده کنید.
رابط گرافیکی با Tkinter:
import tkinter as tk root = tk.Tk() root.title("برنامه هواشناسی") label = tk.Label(root, text=f"دما: {temp}°C\nوضعیت: {weather}") label.pack() root.mainloop() وباپلیکیشن با Flask: from flask import Flask, render_template app = Flask(__name__) @app.route("/") def weather(): return render_template("weather.html", temp=temp, weather=weather) if __name__ == "__main__": app.run()
تست، اجرا و خطایابی برنامه
پس از تکمیل کدنویسی، باید برنامه را تست و خطایابی کنید. شما باید ببینید که:
- آیا API به درستی پاسخ میدهد؟
- آیا دادهها به شکل صحیح نمایش داده میشوند؟
- آیا رابط کاربری به درستی کار میکند؟
در صورت بروز خطا، از try-except برای مدیریت خطاهای احتمالی (مثل قطعی اینترنت یا نامعتبر بودن کلید API) استفاده کنید. همچنین، لاگگیری (logging) میتواند به رفع اشکالات کمک کند.
چطور این پروژه را توسعه دهیم؟
این برنامه هواشناسی پایه را میتوانید با افزودن قابلیتهای جدید به یک پروژه حرفهای تبدیل کنید. اگر به دنبال تبدیل شدن به یک برنامهنویس حرفهای پایتون هستید، پیشنهاد میکنیم در دوره جامع نخبگان پایتون شرکت کنید تا یاد بگیرید چگونه چنین پروژههایی را گسترش دهید. در ادامه، چند ایده جذاب برای توسعه این برنامه را معرفی میکنیم:
- پیشبینی چندروزه: میتوانید از API های مانند OpenWeatherMap Forecast برای نمایش وضعیت آبوهوا در ۵ یا ۷ روز آینده استفاده کنید.
- جستجوی خودکار موقعیت کاربر: با استفاده از Geolocation API یا کتابخانههایی مثل geopy، شهر کاربر را به صورت خودکار تشخیص دهید.
- ذخیره تاریخچه جستجوها: با کمک SQLite یا فایل JSON، شهرهای جستجو شده را ذخیره و نمایش دهید.
- نمایش تصاویر وضعیت هوا: مثلاً برای “آفتابی” از آیکون ☀️ یا برای “بارانی” از 🌧 استفاده کنید.
- اعلانهای آبوهوایی: با کتابخانههایی مثل plyer، هشدارهایی مثل “امروز بارانی است!” را نمایش دهید.
- تبدیل واحدها: امکان تغییر واحد دما (سانتیگراد به فارنهایت) یا سرعت باد (km/h به m/s) وجود دارد.
- نقشه هواشناسی: با Folium یا Matplotlib، نقشهای از وضعیت جوی شهرها نمایش دهید.
- پشتیبانی از چندین شهر: امکان مقایسه آبوهوای چند شهر به صورت همزمان وجود دارد.
- هواشناسی ساعتبهساعت: نمایش تغییرات دما و شرایط جوی در طول روز امکانپذیر است.
- اتصال به تلگرام یا واتساپ: با APIهای رباتهای پیامرسان، اطلاعات آبوهوا را برای کاربران ارسال کنید.
با این توضیحاتی که ارائه دادیم اگر آمادهاید تا دنیای پایتون را فتح کنید پیشنهاد میکنیم در دوره آموزش پایتون مجموعه دیتا یاد شرکت کنید. با دورههای آموزشی دیتایاد، میتوانید مهارتها را به صورت گام به گام یاد بگیرید و پروژههای واقعی را پیادهسازی کنید! [همین حالا شروع کنید و با همکاران ما در بخش پشتیبانی واتساپ: 0990550199 تماس بگیرید.]
جمعبندی نهایی
ساخت برنامه هواشناسی آنلاین در Python یک پروژه بینظیر برای یادگیری کار با APIها، پردازش دادههای JSON و طراحی رابط کاربری است. با استفاده از کتابخانههایی مانند requests برای دریافت داده، tkinter برای رابط گرافیکی و سرویسهایی مثل OpenWeatherMap، میتوانید یک برنامه کاربردی بسازید که اطلاعات آبوهوایی را به صورت لحظهای نمایش دهد. این پروژه مهارتهای برنامهنویسی شما را تقویت و پایهای عالی برای توسعه اپلیکیشنهای پیشرفتهتر مانند پیشبینی چندروزه یا هشدارهای هواشناسی است. با افزودن قابلیتهای جدید، میتوانید این برنامه را از یک پروژه ساده به یک ابزار حرفهای تبدیل کنید.
سوالات متداول
۱- چگونه میتوان کلید API رایگان از OpenWeatherMap دریافت کرد؟
برای دریافت کلید API رایگان، به سایت OpenWeatherMap بروید. شما باید در این سایت ثبتنام کرده و از بخش API Keys کلید خود را دریافت کنید. این کلید برای دسترسی به دادههای آبوهوایی ضروری است، اما نسخه رایگان آن محدودیت درخواست روزانه دارد.
2- چرا برنامه من خطای “شهر یافت نشد” نمایش میدهد؟
این خطا معمولاً زمانی رخ میدهد که نام شهر را به اشتباه وارد کردهاید یا شهر مورد نظر در پایگاه داده OpenWeatherMap وجود ندارد. مطمئن شوید نام شهر را به انگلیسی و بدون غلط املایی نوشتهاید (برای مثال “Tehran” به جای “تهران”).
3- چگونه میتوان دمای هوا را به فارنهایت نمایش داد؟
برای تبدیل دمای سانتیگراد به فارنهایت، میتوانید از فرمول (temp_celsius * 9/5) + 32 استفاده کنید. همچنین میتوانید مستقیماً در URL درخواست API، پارامتر &units=imperial را اضافه کنید تا دادهها به صورت خودکار به فارنهایت برگردانده شوند.