paint-brush
গ্রহাণু পৃথিবীর কাছাকাছি হলে আপনাকে সতর্ক করার জন্য একটি পাইথন অ্যাপ তৈরি করুনদ্বারা@bogomil
13,337 পড়া
13,337 পড়া

গ্রহাণু পৃথিবীর কাছাকাছি হলে আপনাকে সতর্ক করার জন্য একটি পাইথন অ্যাপ তৈরি করুন

দ্বারা Bogomil Shopov - Бого4m2023/05/09
Read on Terminal Reader
Read this story w/o Javascript

অতিদীর্ঘ; পড়তে

কাছাকাছি পাস করা সবচেয়ে কাছের গ্রহাণু সম্পর্কে প্রতিদিন সতর্কতা পেতে দুটি API একত্রিত করুন। নিরাপদ থাকুন এবং একই সময়ে বিভিন্ন API অন্বেষণ করে মজা করুন
featured image - গ্রহাণু পৃথিবীর কাছাকাছি হলে আপনাকে সতর্ক করার জন্য একটি পাইথন অ্যাপ তৈরি করুন
Bogomil Shopov - Бого HackerNoon profile picture
0-item
1-item
2-item

আমি আজ সকালে জেগে উঠলাম আর্মাগেডন সম্পর্কে চিন্তা করছি এবং যদি একটি গ্রহাণু আমাদের পথে আসে তবে আমরা একটি গ্রহ হিসাবে কতটা ভঙ্গুর। আমি আমার ডেস্ক থেকে উপলব্ধ স্থান এবং প্রযুক্তিগুলি অন্বেষণ করেও আগ্রহী। আমি আপনাকে দেখাব কিভাবে দুটি API একত্রিত করে SMS এর মাধ্যমে সতর্ক করা যায় যখন একটি গ্রহাণু কাছাকাছি চলে যায় (তুলনামূলকভাবে বলা যায়)।

NASA OpenAPI

প্রথম সম্পদ হল নাসার ওপেন এপিআই পোর্টাল । আপনি আপনার ধারনাগুলির জন্য অনেকগুলি দুর্দান্ত ইন্টারফেস ব্যবহার করতে পারেন, তবে এই ক্ষেত্রে যেটি আমাকে আগ্রহী করে তা হল NeoWs (নিয়ার আর্থ অবজেক্ট ওয়েব পরিষেবা)।

আনলক

API সম্পর্কে পড়ার পরে, আপনার যাত্রার প্রথম ধাপ হল একটি API কী প্রাপ্ত করা। এটি একটি ফর্মে আপনার বিবরণ পূরণ করে এবং একটি বৈধ ই-মেইল প্রদান করে করা হয়।


NASA API রেজিস্ট্রেশন ফর্ম দেখানো একটি স্ক্রীন


অনুগ্রহ করে মনে রাখবেন যে বেশিরভাগ API-এর একটি API সীমা প্রতি ঘন্টায় 1000 অনুরোধ রয়েছে৷ এগুলি পরীক্ষা এবং ব্যক্তিগত সুবিধার জন্য উপযুক্ত কিন্তু উৎপাদন-প্রস্তুত ব্যবহারের জন্য নয়

অন্বেষণ

আমাদের ব্যবহারের ক্ষেত্রে তৈরি করতে API দ্বারা ফিরে আসা ডেটা দেখতে কয়েক মিনিট ব্যয় করা যাক।


অনুরোধ (GET)

  • start_date (YYYY-MM-DD) - গ্রহাণু অনুসন্ধানের শুরুর তারিখ
  • শেষ_তারিখ (YYYY-MM-DD) - গ্রহাণু অনুসন্ধানের শেষ তারিখ
  • api_key - পূর্ববর্তী ধাপের পরে আপনি ই-মেইলের মাধ্যমে প্রাপ্ত কী।


প্রতিক্রিয়া

এটি মূল্যবান ডেটা সহ একটি JSON অবজেক্ট ফেরত দেয়, যা আমাদের যা প্রয়োজন তা পেতে আমাদের অবশ্যই কাজ করতে হবে। এখানে তথ্য দেখুন.

আমাদের কাছে একটি কাঠামো রয়েছে যার নাম near_earth_objects যা একটি জটিল কাঠামোতে আমাদের প্রয়োজনীয় বিবরণ ধারণ করে:


  • আনুমানিক_ব্যাস - মিটার, কিলোমিটার, মাইল এবং ফুটে গ্রহাণুর ব্যাস।
  • আপেক্ষিক_বেগ - বস্তুর আপেক্ষিক বেগ
  • miss_distance - কক্ষপথ_বডি থেকে দূরত্ব
  • অরবিটিং_বডি - বেশিরভাগ ক্ষেত্রেই পৃথিবী, তবে আপনি চাইলে আরও বিকল্পগুলি অন্বেষণ করতে পারেন৷


উপরের অনুরোধের প্রতিক্রিয়া হিসাবে প্রাপ্ত JSon অবজেক্ট দেখানো একটি স্ক্রীন।

চালান

তাই আমাদের কাছে সমস্ত বস্তু রয়েছে এবং আমরা নিকটতমটি পেতে চাই এবং প্রতিদিন আমাদের সতর্ক করতে চাই। আসুন এটি করতে আপনার পাইথন দক্ষতা ব্যবহার করি।


 #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."

NeoWs রিক্যাপ

আপনি এ পর্যন্ত কি করেছে?

  1. আপনার কাছে NASA OpenAPI পোর্টালের জন্য একটি API কী আছে
  2. আপনি NeoWs API অন্বেষণ করেছেন
  3. আপনি কাছাকাছি যেতে পারে এমন সমস্ত বস্তু থেকে পৃথিবীর সবচেয়ে কাছের বস্তুটি বের করেছেন।
  4. আপনি এই এনকাউন্টারে নিজেকে সতর্ক করার জন্য একটি বার্তা তৈরি করেছেন।

এসএমএস পাঠাই।

আরেকটি 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' } )

আর্মাগেডন সতর্কতা পান

আপনি এখানে সম্পূর্ণ স্ক্রিপ্ট খুঁজে পেতে পারেন.


সমস্ত টুকরা একসাথে রাখুন এবং আপনি ভাল করেছেন কিনা তা দেখতে আপনার কোড চালান। এখন আপনি আরও ভাল ঘুমাতে পারেন, জেনে আপনি পৃথিবীর দিকে উড়ে আসা প্রতিটি বড় বস্তু সম্পর্কে সতর্ক থাকবেন। অবশ্যই, নাসাকে প্রথমে এটি সনাক্ত করতে হবে।


আপনি যদি ফলাফলটি পছন্দ করেন তবে আপনি এটি একটি ক্রোন কাজে লাগাতে পারেন এবং দিনে একবার এটি ট্রিগার করতে পারেন।


হ্যাপি হ্যাকিং!