آموزش ساخت برنامه گرفتن وضعیت آب و هوا از openweather با پایتون
در این قسمت از آموزش به بررسی api سایت openweather می پردازیم و از آن برای گرفتن داده های مربوط به آب و هوای یک شهر استفاده می کنیم. ساختار برنامه ما بدین شکل خواهد بود که پس از گرفتن داده ها و پردازش و انتخاب داده های مورد اهیمت ما اقدام به نگهداری داده در بازه های زمانی تعیین شده در دیتابیس sqlite خواهیم کرد.
مرحله اول- گرفتن داده از openweather
برای گرفتن داده از openweather ابتدا بایستی که در این سایت عضو شده و اقدام به گرفتن api key نمایید که در ویدئو به خوبی این روند توضیح داده شده. سپس با استفاده از کتابخانه requests ساده ترین حالت گرفتن داده از سایت openweather را بر اساس currentweather data انجام می دهیم. قطعه کد زیر تابع گرفتن داده مربوط به این api را به شما نشان می دهد.
در صورت نصب نبودن کتابخانه requests از دستور زیر در ترمینال و یا cmd استفاده نمایید:
pip install requests # for windows
pip3 install requests # for linux & mac
نکته: کلید خود را جایگزین کلید ذکر شده در مثال نمایید
import requests
def get_weather_data(city='Tehran',appid='cb4ca218e1f52b8d80f0dd1f3faec355'):
URL = "https://api.openweathermap.org/data/2.5/weather"
PARAMS = {'q' :city ,'appid' :appid }
r = requests.get(url = URL, params = PARAMS)
return r.json()
print(get_weather_data('Kokkola'))
مرحله دوم - ایجاد حلقه تکرار
کافیه که تابع مورد نظر را با در نظر گرفتن تاخیر زمانی در یک حلقه تکرار قرار دهید.
import requests
import time
def get_weather_data(city='Tehran',appid='cb4ca218e1f52b8d80f0dd1f3faec355'):
URL = "https://api.openweathermap.org/data/2.5/weather"
PARAMS = {'q' :city ,'appid' :appid }
r = requests.get(url = URL, params = PARAMS)
return r.json()
while True:
print(get_weather_data('Kokkola'))
time.sleep(5)
مرحله سوم - پردازش داده
در این قسمت با جدا سازی داده های مورد نیاز و تبدیل timestamp به human date time مقادیر را نرمال سازی کرده و برای ذخیره سازی آماده می کنیم.
import requests
import time
def proccess_data(data):
# change timestamp to human time with:
# time.ctime(timestamp)
return {"city":data['name'],"datetime":time.ctime(int(data['dt'])),"temp":data['main']['temp'],"humidity":data['main']['humidity']}
def get_weather_data(city='Tehran',appid='cb4ca218e1f52b8d80f0dd1f3faec355'):
URL = "https://api.openweathermap.org/data/2.5/weather"
PARAMS = {'q' :city ,'appid' :appid }
r = requests.get(url = URL, params = PARAMS)
return proccess_data(r.json())
while True:
print(get_weather_data('Kokkola'))
time.sleep(5)
مرحله چهارم - ساخت دیتابیس و جدول و تابع Insert
با استفاده از کتابخانه sqlite3 افدام به ساخت توابعی برای کنترل ساخت دیتابیس و جدول کرده و یک تابع نیز برای درج داده در جدول را در نظر می گیریم که برای یادگیری این موضوعات کافیست که به دوره آموزش Sqlite در سایت مراجعه نمایید.
import sqlite3
def sql_connector():
con = sqlite3.connect("weather.db")
cur = con.cursor()
return con,cur
def create_table(con,cur):
cur.execute("CREATE TABLE IF NOT EXISTS weather(name TEXT,datetime TEXT,temp TEXT, humidity TEXT)")
con.commit()
def insert_data(con,cur,data):
cur.execute("INSERT INTO weather values(?,?,?,?)",tuple([v for k,v in data.items()]))
con.commit()
مرحله پنجم - قطعه کد نهایی
حال که همه چیز آماده شده کافیست که قطعات پازل را کنار هم قرار دهیم.
# Author : Ali Bigdeli
# Website: icc-aria.ir
# Project Name : Open Weather
import requests
import time
import sqlite3
def sql_connector():
con = sqlite3.connect("weather.db")
cur = con.cursor()
return con,cur
def create_table(con,cur):
cur.execute("CREATE TABLE IF NOT EXISTS weather(name TEXT,datetime TEXT,temp TEXT, humidity TEXT)")
con.commit()
def insert_data(con,cur,data):
cur.execute("INSERT INTO weather values(?,?,?,?)",tuple([v for k,v in data.items()]))
con.commit()
def proccess_data(data):
return {"city":data['name'],"datetime":time.ctime(int(data['dt'])),"temp":data['main']['temp'],"humidity":data['main']['humidity']}
def get_weather_data(city='Tehran',appid='cb4ca218e1f52b8d80f0dd1f3faec355'):
URL = "https://api.openweathermap.org/data/2.5/weather"
PARAMS = {'q' :city ,'appid' :appid }
r = requests.get(url = URL, params = PARAMS)
return proccess_data(r.json())
con,cur = sql_connector()
create_table(con,cur)
while True:
data_weather = get_weather_data('Tehran')
insert_data(con,cur,data_weather)
print(data_weather)
time.sleep(5)
ثبت دیدگاه
دیدگاه کاربران (0)
دوره های من در مکتبخونه
آموزش طراحی فروشگاه با جنگو
- سطح: پیشرفته 5
آموزش جنگو پیشرفته
- سطح: پیشرفته 4.9
آموزش جنگو Django
- سطح: مقدماتی 4.6
آموزش شیءگرایی در پایتون
- سطح: متوسط 4.3
آموزش میکروپایتون در اینترنت اشیا
- سطح: متوسط 3.8
آخرین پست ها
انتقال پروژه Django از پلتفرم Liara به پلتفرم Hamravesh
- خوب رسیدیم به بخش ترسناکی که برای خیلی ها می تونه کابوس باشه اونم انتقال پروژه از یک پلتفرم به پلتفرم دیگه، اما با این ویدئو مسائل رو براتون خیلی…
- django 1403/05/28
پیاده سازی پروژه Django Channels (ASGI/Websocket) بر روی پلتفرم Hamravesh
- توی این ویدئو درباره نحوه پیاده سازی پروژه های ASGI در جنگو با استفاده از ماژول Channels و Daphne صحبت خواهم کرد و یک نمونه پروژه برای تست رو در…
- django 1403/05/19
پیاده سازی پروژه django بر روی پلتفرم Caprover به همراه Media
- توی این ویدئو نحوه پیاده سازی پروژه جنگو رو به صورت کامل بر روی پلتفرم caprover شرح دادم به طوری که یک پروژه قالب رو آماده سازی کردم و در…
- django 1403/05/15
آخرین دوره ها
آموزش برنامه نویسی Async در پایتون
- 0 63 دانشجو
آموزش ساخت ربات تلگرام با پایتون
-
500000 35000026 دانشجو
آموزش Arduino
- 0 135 دانشجو