google analytic
  • سوالی دارید؟
  • ۰۹۳۵-۲۲۳-۶۲۷۲
  • info@icc-aria.ir

هیچ نتیجه ای یافت نشد ! ...

آموزش ساخت برنامه گرفتن وضعیت آب و هوا از openweather با پایتون

آموزش ساخت برنامه گرفتن وضعیت آب و هوا از 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)

 

اشتراک گذاری:
ثبت دیدگاه
نام *
ایمیل*
دیدگاه *
7دیدگاه
  • زینب
    7 months, 3 weeks ago

    واقعا عالی بود ممنون از زحماتتون

  • amir
    1 year, 4 months ago

    سلام ویدیوهاتون عالی هستن بشتر دوره هارو میبینم و لذت میرم نکته ای که هست من برای نصب ماژول های مختلف که میخاستم از دستور pip استفاده کنم با اروری بر میخوردم که به این اشاره داشت که دستور "pip"ناشناخته هستش اگه میشه یه راهنمایی بکنید

    • علی بیگدلی
      1 year, 4 months ago

      در زمان نصب پایتون تیک مربوط به نصب pip رو احتمالا نزدید یا path رو هم نزدید توی دوره جنگو مقدماتی برای نصب پایتون توضیح مفصلی براش دادم می تونید به مکتبخونه و دوره جنکو مقدماتی سر بزنید و بخش فصل اولش که رایگان هستش رو ببینید

  • مهدی محمدی
    2 years, 1 month ago

    سلام خدمت شما اموزش هاتون حرف نداره لطفا اموزش جدید بزارید

    • علی بیگدلی
      2 years, 1 month ago

      نظر لطفتونه، تلاش بر همین هستش که آموزش های بیشتری قرار بگیره

  • رضا افشار
    2 years, 1 month ago

    سلام لطفا اموزش های بیشتری بزارید تشکر خیلی عالی هستین

    • علی بیگدلی
      2 years, 1 month ago

      چشم تلاشم رو خواهم کرد تا آموزش های بیشتری رو آماده کنم اما مسئله ای که هستش دوره های فعلی باید تمام بشن