मैं आज सुबह आर्मागेडन के बारे में सोच कर उठा और अगर कोई क्षुद्रग्रह हमारे रास्ते में आता है तो हम एक ग्रह के रूप में कितने नाजुक हैं। मैं अंतरिक्ष की खोज और अपने डेस्क से उपलब्ध तकनीकों को लेकर भी उत्सुक हूं। मैं आपको दिखाऊंगा कि जब कोई क्षुद्रग्रह पास से गुजर रहा हो (अपेक्षाकृत बोल रहा हो) तो एसएमएस के जरिए अलर्ट होने के लिए दो एपीआई को कैसे जोड़ा जाए।
पहला संसाधन नासा का खुला एपीआई पोर्टल है। आप अपने विचारों के लिए बहुत सारे महान इंटरफेस का उपयोग कर सकते हैं, लेकिन इस मामले में जो मुझे रूचि देता है वह नियोडब्ल्यू (नियर अर्थ ऑब्जेक्ट वेब सर्विस) है।
एपीआई के बारे में पढ़ने के बाद, आपकी यात्रा का पहला कदम एपीआई कुंजी प्राप्त करना है। यह आपके विवरण को एक फॉर्म में भरकर और एक वैध ई-मेल प्रदान करके किया जाता है।
कृपया ध्यान दें कि अधिकांश एपीआई में प्रति घंटे 1000 अनुरोधों की एपीआई सीमा होती है। वे परीक्षण और व्यक्तिगत लाभ के लिए उपयुक्त हैं लेकिन उत्पादन-तैयार उपयोग के लिए नहीं
हमारे उपयोग के मामले को बनाने के लिए एपीआई द्वारा लौटाए गए डेटा को देखने के लिए कुछ मिनट बिताएं।
अनुरोध (जीईटी)
प्रतिक्रिया
यह मूल्यवान डेटा के साथ एक 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."
अभी तक आपने क्या किया है?
एक और एपीआई है जिसे मैं इस संक्षिप्त लेकिन उपयोगी उदाहरण में पेश करना चाहता हूं - मैसेजबर्ड।
उनकी वेबसाइट पर जाएं और एपीआई कुंजी प्राप्त करने के लिए पंजीकरण करें
पंजीकरण के बाद, आप अपने वास्तविक फोन नंबर पर भेजे गए कुछ मानार्थ एसएमएस संदेश भेज सकते हैं। आइए इस कार्यक्षमता को अपने पायथन कोड में जोड़ें।
#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' } )
आप पूरी स्क्रिप्ट यहां पा सकते हैं।
सभी टुकड़ों को एक साथ रखें और यह देखने के लिए अपना कोड चलाएं कि आपने अच्छा किया है या नहीं। अब आप बेहतर नींद ले सकते हैं, यह जानकर आप पृथ्वी की ओर उड़ने वाली हर बड़ी वस्तु के प्रति सतर्क रहेंगे। बेशक, नासा को पहले इसका पता लगाने की जरूरत है।
यदि आप परिणाम पसंद करते हैं, तो आप इसे क्रॉन जॉब में डाल सकते हैं और इसे दिन में एक बार ट्रिगर कर सकते हैं।
हैप्पी हैकिंग!