আমি আজ সকালে জেগে উঠলাম আর্মাগেডন সম্পর্কে চিন্তা করছি এবং যদি একটি গ্রহাণু আমাদের পথে আসে তবে আমরা একটি গ্রহ হিসাবে কতটা ভঙ্গুর। আমি আমার ডেস্ক থেকে উপলব্ধ স্থান এবং প্রযুক্তিগুলি অন্বেষণ করেও আগ্রহী। আমি আপনাকে দেখাব কিভাবে দুটি API একত্রিত করে SMS এর মাধ্যমে সতর্ক করা যায় যখন একটি গ্রহাণু কাছাকাছি চলে যায় (তুলনামূলকভাবে বলা যায়)।
প্রথম সম্পদ হল নাসার ওপেন এপিআই পোর্টাল । আপনি আপনার ধারনাগুলির জন্য অনেকগুলি দুর্দান্ত ইন্টারফেস ব্যবহার করতে পারেন, তবে এই ক্ষেত্রে যেটি আমাকে আগ্রহী করে তা হল NeoWs (নিয়ার আর্থ অবজেক্ট ওয়েব পরিষেবা)।
API সম্পর্কে পড়ার পরে, আপনার যাত্রার প্রথম ধাপ হল একটি API কী প্রাপ্ত করা। এটি একটি ফর্মে আপনার বিবরণ পূরণ করে এবং একটি বৈধ ই-মেইল প্রদান করে করা হয়।
অনুগ্রহ করে মনে রাখবেন যে বেশিরভাগ API-এর একটি API সীমা প্রতি ঘন্টায় 1000 অনুরোধ রয়েছে৷ এগুলি পরীক্ষা এবং ব্যক্তিগত সুবিধার জন্য উপযুক্ত কিন্তু উৎপাদন-প্রস্তুত ব্যবহারের জন্য নয়
আমাদের ব্যবহারের ক্ষেত্রে তৈরি করতে API দ্বারা ফিরে আসা ডেটা দেখতে কয়েক মিনিট ব্যয় করা যাক।
অনুরোধ (GET)
প্রতিক্রিয়া
এটি মূল্যবান ডেটা সহ একটি JSON অবজেক্ট ফেরত দেয়, যা আমাদের যা প্রয়োজন তা পেতে আমাদের অবশ্যই কাজ করতে হবে। এখানে তথ্য দেখুন.
আমাদের কাছে একটি কাঠামো রয়েছে যার নাম near_earth_objects যা একটি জটিল কাঠামোতে আমাদের প্রয়োজনীয় বিবরণ ধারণ করে:
তাই আমাদের কাছে সমস্ত বস্তু রয়েছে এবং আমরা নিকটতমটি পেতে চাই এবং প্রতিদিন আমাদের সতর্ক করতে চাই। আসুন এটি করতে আপনার পাইথন দক্ষতা ব্যবহার করি।
#Settings and URL to conect to NASA API #Get your free API key from here: https://api.nasa.gov/ ad_today = date.today().strftime("%Y-%m-%d") url = "https://api.nasa.gov/neo/rest/v1/feed?start_date="+ad_today+"&end_date="+ad_today+"&api_key=[your keu]" #Hadle the responce json response = requests.request("GET", url) response.encoding = 'utf-8' jsn = response.json() if "near_earth_objects" in jsn: base = jsn['near_earth_objects'][ad_today] i = findClosestEncounter(base) #extract the data we need to create the alert name = base[i]['name'] to_appear = base[i]['close_approach_data'][0]['close_approach_date_full'] how_close = base[i]['close_approach_data'][0]['miss_distance']['kilometers'] dia_meter = base[i]['estimated_diameter']['meters']['estimated_diameter_max']
FindClosestEncounter ফাংশন আপনাকে কাছাকাছি থাকা সমস্ত জিনিসের বালতি থেকে পৃথিবীর সবচেয়ে কাছের বস্তুটি খুঁজে পেতে সহায়তা করে। হয়তো একটি আরো মার্জিত সমাধান আছে, কিন্তু এটি আমার জন্য ভাল কাজ করে।
def findClosestEncounter(jd): # a simple function for discovering the nearest object for the day from all registered objects asteroids = [] for i in range(0, len(jd)): asteroids.insert(i,jd[i]['close_approach_data'][0]['miss_distance']['kilometers']) return asteroids.index(min(asteroids))
যেহেতু আমরা একটি এসএমএস পাঠাব, ডেটা ফর্ম্যাট করা একটি ভাল ধারণা। পাশাপাশি অন্য ফর্ম্যাটিং ব্যবহার করতে দ্বিধা বোধ করুন।
#format the data howclose = round(float(how_close)) diameter = round(dia_meter)
আপনি SMS এর মাধ্যমে যে বার্তা পাঠাতে চান সেটি তৈরি করুন।
#build the message alert ="The nearest asteroid for today is "+ name+". It will be "+str(howclose)+" km away with a diameter of "+str(diameter)+" meters."
আপনি এ পর্যন্ত কি করেছে?
আরেকটি API আছে যা আমি এই সংক্ষিপ্ত কিন্তু সহায়ক উদাহরণে পরিচয় করিয়ে দিতে চাই - মেসেজবার্ড।
তাদের ওয়েবসাইটে যান এবং একটি API কী পেতে নিবন্ধন করুন৷
রেজিস্ট্রেশনের পরে, আপনি আপনার আসল ফোন নম্বরে বিতরিত কিছু প্রশংসামূলক SMS বার্তা পাঠাতে পারেন। আপনার পাইথন কোডে এই কার্যকারিতা যোগ করা যাক।
#SMS client #Get your free API key from here: https://developers.messagebird.com/api/#api-endpoint sms = messagebird.Client("your API key here") #Prepare and send the message to a phone number of your choice. # Change the name "Asteroid" to something you want. It will appear as a sender message = sms.message_create( 'Asteroid', '+yourphonenumner', alert, { 'reference' : 'Asteroid' } )
আপনি এখানে সম্পূর্ণ স্ক্রিপ্ট খুঁজে পেতে পারেন.
সমস্ত টুকরা একসাথে রাখুন এবং আপনি ভাল করেছেন কিনা তা দেখতে আপনার কোড চালান। এখন আপনি আরও ভাল ঘুমাতে পারেন, জেনে আপনি পৃথিবীর দিকে উড়ে আসা প্রতিটি বড় বস্তু সম্পর্কে সতর্ক থাকবেন। অবশ্যই, নাসাকে প্রথমে এটি সনাক্ত করতে হবে।
আপনি যদি ফলাফলটি পছন্দ করেন তবে আপনি এটি একটি ক্রোন কাজে লাগাতে পারেন এবং দিনে একবার এটি ট্রিগার করতে পারেন।
হ্যাপি হ্যাকিং!