إنشاء برنامج لعرض الطقس بلغة البرمجة بايثون
في هذه المقالة سوف نتعلم أساسيات استخدام API مع بايثون. سننشئ برنامج بسيط يستدعي البيانات من واجهة برمجة التطبيقات الخاصة بموقع Openweathermap ونعرض النتيجة للمستخدم.
1- الحصول علي مفتاح API
Openweathermap هي خدمة توفر بيانات الطقس ، بما في ذلك بيانات الطقس الحالية والتنبؤات لمطوري خدمات الويب وتطبيقات الهاتف المحمول.
لتحصل علي مفتاح API عليك التوجه إلى موقع OpenWeatherMap والتسجيل للحصول على خطة مجانية إذا لم تكن قد قمت بذلك بالفعل. ثم قم بزيارة قسم API للحصول على مفتاحك الخاص. يمكنك استخدام المفتاح الافتراضي أو إنشاء مفتاح جديد كما تريد. قد تضطر إلى الانتظار لفترة من الوقت حتى يتم التحقق من مفتاحك.
2- إنشاء البرنامج
سنحتاج إلي مكتبة requests
لنحصل علي البيانات لذا سيتم استدعائها
في السطر الأول.
import requests
ثم ندع مفتاح API في متغير
import requests
api = 'Your Api Key Here'
والآن سنقوم بإنشاء دالة لتحتوي علي الكود الخاص بنا ثم نطلب من المستخدم كتابة اسم المدينة المطلوبة
import requests api = 'Your Api Key Here' def get_weather(): # set current city city = input('write city name: ')
والآن سنضع متغير للرابط الخاص بالـ Api
import requests api = 'Your Api Key Here' def get_weather(): # set current city city = input('write city name: ') # weather api url = f'http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api}'
والآن حان دور مكتبة requests
لسحب البيانات في شكل
json
import requests api = 'Your Api Key Here' def get_weather(): # set current city city = input('write city name: ') # weather api url = f'http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api}' # request weather data response = requests.get(url).json()
والآن سنقوم بتجربة الكود لنري ما الناتج وستكون التجربة علي مدينة القاهرة علي سبيل المثال
write city name: cairo
{'coord': {'lon': 31.25, 'lat': 30.06}, 'weather': [{'id': 751, 'main': 'Sand', 'description': 'sand', 'icon': '50d'}], 'base': 'stations', 'main': {'temp': 298.15, 'feels_like': 289.62, 'temp_min': 298.15, 'temp_max': 298.15, 'pressure': 1013, 'humidity': 19}, 'visibility': 4000, 'wind': {'speed': 9.3, 'deg': 210}, 'clouds': {'all': 40}, 'dt': 1607351711, 'sys': {'type': 1, 'id': 2514, 'country': 'EG', 'sunrise': 1607315902, 'sunset': 1607352907}, 'timezone': 7200, 'id': 360630, 'name': 'Cairo', 'cod': 200}
حتي الآن نحن علي الطريق الصحيح وفي الخطوة القادمة سنقوم بتقطيع البيانات لعرضها
بشكل منظم، واذا نظرت في البيانات في المثال السابق ستجد عنصر يسمي
weather
وهذا هو ما سنتعامل معاه لنجد أحوال الطقس وعنصر يسمي
main
وهذا لدرجات الحرارة والآن هيا بنا لنري كيف.
import requests api = 'Your Api Key Here' def get_weather(): # set current city city = input('write city name: ') # weather api url = f'http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api}' # request weather data response = requests.get(url).json() # weather data weather = response['weather'] # status status = weather[0]['main'] # description description = weather[0]['description']
في الكود السابق تم استدعاء العنصر weather
والعنصر هو من نوع
البيانات list
أي أن له فهرس وقيمة ولهذا اخترنا رقم الفهرس 0 لأنه
به عدة بيانات اخري لا نحتاجها ونحتاج حالة الطقس والوصف فقط وهذا موضح كيف
استدعيناهم بالكود السابق، وفي الكود التالي سنقوم باستدعاء البيانات الخاصة
بدرجات الحرارة.
import requests api = 'Your Api Key Here' def get_weather(): # set current city city = input('write city name: ') # weather api url = f'http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api}' # request weather data response = requests.get(url).json() # weather data weather = response['weather'] # status status = weather[0]['main'] # description description = weather[0]['description'] # temrature data temprature = response['main'] # current temprature temp = temprature['temp'] # min temprature temp_min = temprature['temp_min'] # max temprature temp_max = temprature['temp_max'] # pressure pressure = temprature['pressure'] # humidity humidity = temprature['humidity']
في الكود السابق تم إضافة عنصر main
وهو لدرجة الحرارة و الدرجة
الصغرى والقصوي والضغط والرطوبة وتم اضافة متغير لكل منهما حتي نتسطيع طباعتهم
للمستخدم بشكل أنيق ومنظم وفي الكود التالي نكون قد أنهينا البرنامج بشكل بسيط
ويمكنك التعديل وإضافة أفكار جديدة للتطوير.
import requests api = 'Your Api Key Here' def get_weather(): # set current city city = input('write city name: ') # weather api url = f'http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api}' # request weather data response = requests.get(url).json() # weather data weather = response['weather'] # status status = weather[0]['main'] # description description = weather[0]['description'] # temrature data temprature = response['main'] # current temprature temp = temprature['temp'] # min temprature temp_min = temprature['temp_min'] # max temprature temp_max = temprature['temp_max'] # pressure pressure = temprature['pressure'] # humidity humidity = temprature['humidity'] # print weather data print(f'weather now: {status}\ndescription: {description}') # print temprature data print(f'temprature now: {temp}\nmin:{temp_min}\nmax: {temp_max}\npressure: {pressure}\nhumidity: {humidity}') if __name__ == '__main__': get_weather()
إليك بعض نتائج البرنامج لعدة مدن مختلفة:
النتيجة الأولي لمدينة دبي
write city name: dubai
weather now: Clouds
description: scattered clouds
temprature now: 298.3
min:298.15
max: 298.71
pressure: 1016
humidity: 50
النتيجة الثانية لمدينة نيويورك
write city name: new york
weather now: Clear
description: clear sky
temprature now: 274.86
min:273.71
max: 276.15
pressure: 1011
humidity: 59
النتيجة الثالثة لمدينة لندن
write city name: london
weather now: Mist
description: mist
temprature now: 275.78
min:275.37
max: 276.15
pressure: 997
humidity: 93
وبهذا نكون قد انتهينا من إنشاء برنامج لعرض بيانات الطقس بلغة البرمجة بايثون، وأتمني منكم الدعم بالتعليق لتحفيزي بالإستمرار في نشر الدروس والمقالات التعليمية ❤❤.
ادعمنا بتعليق