Bu sabah Armageddon'u ve önümüze bir asteroit gelirse gezegen olarak ne kadar kırılgan olacağımızı düşünerek uyandım. Ayrıca alanı ve masamdaki teknolojileri keşfetmek de ilgimi çekiyor. Yakından bir asteroit geçtiğinde (göreceli olarak konuşursak) SMS yoluyla uyarılmak için iki API'yi nasıl birleştireceğinizi göstereceğim. NASA OpenAPI'si İlk kaynak . Fikirleriniz için tonlarca harika arayüz kullanabilirsiniz, ancak bu durumda beni ilgilendiren NASA'nın açık API portalıdır NeoW'lardır (Dünyaya Yakın Nesne Web Hizmeti). Kilidini aç API hakkında bilgi sahibi olduktan sonra yolculuğunuzun ilk adımı bir API anahtarı edinmektir. Bu, bilgilerinizi bir forma doldurup geçerli bir e-posta sağlayarak yapılır. Çoğu API'nin API sınırına sahip olduğunu lütfen unutmayın. Testler ve kişisel fayda için uygundur ancak üretime hazır kullanıma uygun değildir. saatte 1000 isteklik Keşfetmek Kullanım örneğimizi oluşturmak için API'nin döndürdüğü verileri görmek için birkaç dakikamızı ayıralım. İstek (GET) start_date (YYYY-AA-GG) - Asteroit aramasının başlangıç tarihi end_date (YYYY-AA-GG) - Asteroit aramasının bitiş tarihi api_key - önceki adımdan sonra e-posta yoluyla aldığınız anahtar. Yanıt İhtiyacımız olanı elde etmek için üzerinde çalışmamız gereken, değerli veriler içeren bir JSON nesnesi döndürür. bakın. Buradaki verilere Karmaşık bir yapı içerisinde ihtiyacımız olan detayları içeren adında bir yapımız var: near_earth_objects tahmini_çap - asteroitin metre, kilometre, mil ve fit cinsinden çapı. göreceli_velocity - nesnenin göreceli hızı miss_distance - uzaklık yörüngedeki_cisimden Orbiting_body - çoğu durumda Dünya'dır, ancak isterseniz daha fazla seçeneği keşfedebilirsiniz. Koşmak Yani yakınımızdan geçen tüm nesneler var ve en yakın olanı alıp bizi her gün uyarmak istiyoruz. Bunu yapmak için Python becerilerinizi kullanalım. #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 işlevi, yakınlarınızdan geçen her şeyin arasından Dünya'ya en yakın nesneyi bulmanıza yardımcı olur. Belki daha zarif bir çözüm vardır, ancak bu benim için iyi çalışıyor. 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)) İnsanların okuyabileceği hale getirin. SMS göndereceğimiz için verileri biçimlendirmek iyi bir fikirdir. Başka bir biçimlendirme kullanmaktan da çekinmeyin. #format the data howclose = round(float(how_close)) diameter = round(dia_meter) SMS ile göndermek istediğiniz mesajı oluşturun. #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." NeoW'un özeti Şimdiye kadar ne yaptın? NASA OpenAPI portalı için bir API anahtarınız var NeoWs API'sini keşfettiniz Yakınınızdan geçebilecek tüm nesnelerden Dünya'ya en yakın nesneyi çıkardınız. Kendinizi bu karşılaşma konusunda uyarmak için bir mesaj hazırladınız. O SMS'i gönderelim. Bu kısa ama yararlı örnekte tanıtmak istediğim başka bir API daha var: Mesaj Kuşu. Kuşu serbest bırak Bir API anahtarı almak için web sitelerini ziyaret edin ve kaydolun Kayıt olduktan sonra gerçek telefon numaranıza birkaç SMS mesajı gönderebilirsiniz. Bu işlevselliği Python kodunuza ekleyelim. ücretsiz #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' } ) Kıyamet Uyarısını Alın bulabilirsiniz. Komut dosyasının tamamını burada Tüm parçaları bir araya getirin ve iyi iş çıkarıp çıkarmadığınızı görmek için kodunuzu çalıştırın. Artık Dünya'ya doğru uçan her büyük nesne hakkında uyarılacağınızı bilerek daha iyi uyuyabilirsiniz. Elbette önce NASA'nın bunu tespit etmesi gerekiyor. Sonucu beğenirseniz, onu bir cron işine koyabilir ve günde bir kez tetikleyebilirsiniz. Mutlu Hackingler!