পাইথন দিয়ে এপিআই ব্যবহার – ১ম পর্ব

পৃথিবীতে বিভিন্ন প্রতিষ্ঠান প্রয়োজনীয় অনেক ডেটা সংগ্রহ ও সংরক্ষণ করে। সেই সঙ্গে তারা এপিআই (API)-এর মাধ্যমে সেসব ডেটা যেন অন্যরা পেতে পারে, তার ব্যবস্থাও রাখে। অনেক সময় সেই ডেটা পেতে হলে যেই এপিআই ব্যবহার করতে হয়, সেজন্য মূল্য পরিশোধ করতে হয়, আবার কখনও কখনও বিনামূল্যেও অনেক ডেটা পাওয়া যায়। আবহাওয়া সংক্রান্ত ডেটা, শেয়ার বাজারের ডেটা, মুদ্রার বিনিময় হার, ভৌগলিক বিভিন্ন ডেটা ইত্যাদি অনেক রকমের ডেটাই এপিআই ব্যবহার করে পাওয়া যায়। এখন এই লেখায় আমরা দেখবো, পাইথন প্রোগ্রামে আবহাওয়া সংক্রান্ত এপিআই ব্যবহার করে কিভাবে তথ্য সংগ্রহ ও সংরক্ষণ করতে হয়।

আমরা যদি Weather API লিখে গুগলে সার্চ করি, তাহলে প্রথম পৃষ্ঠাতেই ওপেন ওয়েদার ম্যাপ-এর একটি লিঙ্ক আসবে (https://openweathermap.org/api)। এখানে বিভিন্ন এপিআই আছে, যেখানে বর্তমান সময়ের আবহাওয়ার তথ্য পাওয়া যায়, আবার আবহাওয়ার পূর্বাভাস (forecast) পাওয়ার জন্যও সেখানে এপিআই আছে। আমরা দেখবো বর্তমান সময়ের আবহাওয়ার তথ্য কিভাবে পেতে পারি। সেজন্য আমাদের যেতে হবে Current weather data সেকশনে। এখন, এই এপিআই ব্যবহার করার জন্য একটি এপিআই কি (API Key) প্রয়োজন হবে, আর এই বিষয়ে বিস্তারিত লেখা আছে https://openweathermap.org/appid লিঙ্কে। ওখানে গিয়ে appid (যা আসলে API Key) সেই সম্পর্কে জেনে নিতে হবে। নতুন যেকোনো এপিআই ব্যবহার করার সময় আমাদেরকে ডকুমেন্টেশন পড়ার অভ্যাস তৈরি করতে হবে। অনেক সময় ডকুমেন্টেশন না পড়ে কেবল উদাহরন বা নমুনা কোড দেখলেই বুঝা যায় যে এপিআই কীভাবে ব্যবহার করতে হবে, তবে আমার পরামর্শ হবে, সবসময় ডকুমেন্টেশন পড়ার চেষ্টা করা। তাতে হয়ত ঘণ্টা খানেক বেশি সময় লাগবে, কিন্তু একটা জিনিস ভালোভাবে জানা হয়ে গেলে ব্যবহার করা সহজ হয় এবং অনাকাঙ্খিত অনেক ঝামেলা এড়ানো যায়।

ওপেন ওয়েদার ম্যাপের এপিআই কি পেতে হলে সেখানে সাইন আপ করতে হবে বা একাউন্ট তৈরি করতে হবে। একাউন্ট তৈরি হয়ে গেলে https://home.openweathermap.org/api_keys পেজ থেকে এপিআই কি পাওয়া যাবে এবং প্রয়োজন হলে নতুন এপিআই কি তৈরি করতে হবে।
এখন আমরা চলে যাব, এপিআই-এর ডকুমেন্টেশনে, যেখান থেকে জানা যাবে যে, এপিআই কীভাবে ব্যবহার করতে হবে। ডকুমেন্টেশনের লিঙ্ক হচ্ছে https://openweathermap.org/current। আমরা ঢাকা শহরের জন্য আবহাওয়ার তথ্য জানতে চাইব, আর সেজন্য city id ব্যবহার করতে হবে। ঢাকা শহরের city id জানার জন্য http://bulk.openweathermap.org/sample/ ওয়েবপেজ থেকে city.list.josn ফাইলটি ডাউনোড করে dhaka লিখে সেই ফাইলে সার্চ করতে হবে। তো আমি এভাবে জানতে পারলাম যে, ঢাকার city id হচ্ছে 1337179. তাহলে ওয়েব ব্রাউজারে আমরা যদি http://api.openweathermap.org/data/2.5/weather?id=1337179&APPID=xyz ঠিকানায় যাই, তাহলে আমরা ঢাকা শহরের আবহাওয়ার তথ্য দেখতে পাবো। xyz-এর জায়গায় এপিআই কি বসাতে হবে। এখন, এই তথ্য আমরা পাইথন প্রোগ্রামের সাহায্যে পাওয়ার ব্যবস্থা করবো। এজন্য আমরা requests মডিউল ব্যবহার করবো। এই মডিউল সম্পর্কে উদাহরণসহ আলোচনা করেছি “পাইথন দিয়ে প্রোগ্রামিং শেখা দ্বিতীয় খণ্ড” বইতে।

import requests

URL = "http://api.openweathermap.org/data/2.5/weather"
payload = {"id": "1337179", "APPID": "7dd241yyyycd16xxxx"}

r = requests.get(URL, params=payload)

print(r.text)

প্রোগ্রামটি রান করলে নিচের মতো একটি আউটপুট পাবো –

{"coord":{"lon":90.42,"lat":24.17},"weather":[{"id":721,"main":"Haze","description":"haze","icon":"50n"}],"base":"stations","main":{"temp":300.15,"pressure":1001,"humidity":88,"temp_min":300.15,"temp_max":300.15},"visibility":3500,"wind":{"speed":3.6,"deg":90},"clouds":{"all":75},"dt":1564268448,"sys":{"type":1,"id":9145,"message":0.0091,"country":"BD","sunrise":1564269901,"sunset":1564317863},"timezone":21600,"id":1337179,"name":"Dhaka Division","cod":200}

এখন আমরা এই আউটপুট কপি করে https://jsonformatter.org/json-pretty-print ওয়েবসাইটে বসিয়ে সুন্দর করে দেখতে পারি। অথবা পাইথন প্রোগ্রামটি একটু পরিবর্তন করেও দেখা যায়। আগের কোডে নিচের দুটি লাইন যুক্ত করতে হবে – 

result = r.json()
print(json.dumps(result, indent=4))

আর প্রোগ্রামের শুরুতে json মডিউল ইমপোর্ট করতে হবে। এখন প্রোগ্রাম রান করলে সুন্দরভাবে আউটপুট দেখা যাবে। 

আমাদের দরকার আজকের দিনের বর্তমান তাপমাত্রা, যেটি আমরা পাব result[“main”][“temp”]-এ। আর সেই সঙ্গে বাতাসের আর্দ্রতার তথ্যও আমরা নেব, আর সেটি পাব result[“main”][“humidity”]-তে। এখন তাপমাত্রা আমরা কোন এককে পাচ্ছি? এটি ডকুমেন্টেশন পড়লেই বুঝা যাবে (এখানে – https://openweathermap.org/current#current_JSON)। 

আমাদের প্রোগ্রামটি এখন দাঁড়াচ্ছে এমন – 

import requests
import json

BASE_URL = "http://api.openweathermap.org/data/2.5/weather"

payload = {"id": "1337179", "APPID": "7dd241yyyycd16xxxx"}

r = requests.get(BASE_URL, params=payload)
result = r.json()

print("Temperature", result["main"]["temp"])
print("Humidity", result["main"]["humidity"])

পরের লেখায় আমরা দেখবো, কিভাবে এই তথ্য আমরা একটি ডেটাবেজে সংরক্ষণ করতে পারি।

নোট – ওপরের প্রোগ্রামগুলোতে 7dd241yyyycd16xxxx এর বদলে নিজের একাউন্ট থেকে সঠিক APP ID বসাতে হবে।

Leave a Reply