paint-brush
पृथ्वी के करीब क्षुद्रग्रहों के लिए आपको सतर्क करने के लिए एक पायटन ऐप बनाएं।द्वारा@bogomil
13,337 रीडिंग
13,337 रीडिंग

पृथ्वी के करीब क्षुद्रग्रहों के लिए आपको सतर्क करने के लिए एक पायटन ऐप बनाएं।

द्वारा Bogomil Shopov - Бого4m2023/05/09
Read on Terminal Reader

बहुत लंबा; पढ़ने के लिए

पास से गुजरने वाले निकटतम क्षुद्रग्रहों के बारे में प्रतिदिन अलर्ट होने के लिए दो एपीआई को मिलाएं। अलग-अलग एपीआई एक्सप्लोर करके एक ही समय में सुरक्षित रहें और मज़े करें
featured image - पृथ्वी के करीब क्षुद्रग्रहों के लिए आपको सतर्क करने के लिए एक पायटन ऐप बनाएं।
Bogomil Shopov - Бого HackerNoon profile picture
0-item
1-item
2-item

मैं आज सुबह आर्मागेडन के बारे में सोच कर उठा और अगर कोई क्षुद्रग्रह हमारे रास्ते में आता है तो हम एक ग्रह के रूप में कितने नाजुक हैं। मैं अंतरिक्ष की खोज और अपने डेस्क से उपलब्ध तकनीकों को लेकर भी उत्सुक हूं। मैं आपको दिखाऊंगा कि जब कोई क्षुद्रग्रह पास से गुजर रहा हो (अपेक्षाकृत बोल रहा हो) तो एसएमएस के जरिए अलर्ट होने के लिए दो एपीआई को कैसे जोड़ा जाए।

नासा ओपनएपीआई

पहला संसाधन नासा का खुला एपीआई पोर्टल है। आप अपने विचारों के लिए बहुत सारे महान इंटरफेस का उपयोग कर सकते हैं, लेकिन इस मामले में जो मुझे रूचि देता है वह नियोडब्ल्यू (नियर अर्थ ऑब्जेक्ट वेब सर्विस) है।

अनलॉक

एपीआई के बारे में पढ़ने के बाद, आपकी यात्रा का पहला कदम एपीआई कुंजी प्राप्त करना है। यह आपके विवरण को एक फॉर्म में भरकर और एक वैध ई-मेल प्रदान करके किया जाता है।


नासा एपीआई पंजीकरण फॉर्म दिखाने वाली एक स्क्रीन


कृपया ध्यान दें कि अधिकांश एपीआई में प्रति घंटे 1000 अनुरोधों की एपीआई सीमा होती है। वे परीक्षण और व्यक्तिगत लाभ के लिए उपयुक्त हैं लेकिन उत्पादन-तैयार उपयोग के लिए नहीं

अन्वेषण करना

हमारे उपयोग के मामले को बनाने के लिए एपीआई द्वारा लौटाए गए डेटा को देखने के लिए कुछ मिनट बिताएं।


अनुरोध (जीईटी)

  • start_date (YYYY-MM-DD) - क्षुद्रग्रह खोज के लिए प्रारंभ तिथि
  • end_date (YYYY-MM-DD) - क्षुद्रग्रह खोज के लिए समाप्ति तिथि
  • api_key - वह कुंजी जिसे आपने पिछले चरण के बाद ई-मेल के माध्यम से प्राप्त किया था।


प्रतिक्रिया

यह मूल्यवान डेटा के साथ एक JSON ऑब्जेक्ट लौटाता है, जिसे हमें वह प्राप्त करने के लिए काम करना चाहिए जिसकी हमें आवश्यकता है। यहां डेटा देखें।

हमारे पास एक संरचना है जिसे नियर_अर्थ_ऑब्जेक्ट्स कहा जाता है जिसमें वे विवरण होते हैं जिनकी हमें एक जटिल संरचना में आवश्यकता होती है:


  • अनुमानित_व्यास - मीटर, किलोमीटर, मील और पैरों में क्षुद्रग्रह का व्यास।
  • सापेक्ष_वेग - वस्तु का सापेक्ष वेग
  • miss_distance - परिक्रमा_निकाय से दूर की दूरी
  • orbiting_body - ज्यादातर मामलों में, पृथ्वी है, लेकिन अगर आप चाहें तो और विकल्प तलाश सकते हैं।


उपरोक्त अनुरोध की प्रतिक्रिया के रूप में प्राप्त JSON ऑब्जेक्ट दिखाने वाली एक स्क्रीन।

दौड़ना

इसलिए हमारे पास पास से गुजरने वाली सभी वस्तुएं हैं और हम निकटतम को प्राप्त करना चाहते हैं और हमें प्रतिदिन सचेत करना चाहते हैं। ऐसा करने के लिए अपने Python कौशल का उपयोग करें।


 #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)


वह संदेश बनाएं जिसे आप एसएमएस के माध्यम से भेजना चाहते हैं।


 #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. आपने इस मुठभेड़ के बारे में खुद को सचेत करने के लिए एक संदेश तैयार किया है।

चलिए वह एसएमएस भेजते हैं।

एक और एपीआई है जिसे मैं इस संक्षिप्त लेकिन उपयोगी उदाहरण में पेश करना चाहता हूं - मैसेजबर्ड।

पक्षी को छोड़ दो

उनकी वेबसाइट पर जाएं और एपीआई कुंजी प्राप्त करने के लिए पंजीकरण करें


पंजीकरण के बाद, आप अपने वास्तविक फोन नंबर पर भेजे गए कुछ मानार्थ एसएमएस संदेश भेज सकते हैं। आइए इस कार्यक्षमता को अपने पायथन कोड में जोड़ें।


 #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' } )

आर्मागेडन अलर्ट प्राप्त करें

आप पूरी स्क्रिप्ट यहां पा सकते हैं।


सभी टुकड़ों को एक साथ रखें और यह देखने के लिए अपना कोड चलाएं कि आपने अच्छा किया है या नहीं। अब आप बेहतर नींद ले सकते हैं, यह जानकर आप पृथ्वी की ओर उड़ने वाली हर बड़ी वस्तु के प्रति सतर्क रहेंगे। बेशक, नासा को पहले इसका पता लगाने की जरूरत है।


यदि आप परिणाम पसंद करते हैं, तो आप इसे क्रॉन जॉब में डाल सकते हैं और इसे दिन में एक बार ट्रिगर कर सकते हैं।


हैप्पी हैकिंग!