paint-brush
Xây dựng ứng dụng pyton để cảnh báo bạn về các tiểu hành tinh ở gần Trái đất.từ tác giả@bogomil
13,337 lượt đọc
13,337 lượt đọc

Xây dựng ứng dụng pyton để cảnh báo bạn về các tiểu hành tinh ở gần Trái đất.

từ tác giả Bogomil Shopov - Бого4m2023/05/09
Read on Terminal Reader

dài quá đọc không nổi

Kết hợp hai API để nhận thông báo hàng ngày về các tiểu hành tinh gần nhất đi qua gần đó. Giữ an toàn và vui chơi cùng lúc bằng cách khám phá các API khác nhau
featured image - Xây dựng ứng dụng pyton để cảnh báo bạn về các tiểu hành tinh ở gần Trái đất.
Bogomil Shopov - Бого HackerNoon profile picture
0-item
1-item
2-item

Tôi thức dậy sáng nay khi nghĩ về Armageddon và chúng ta là một hành tinh mong manh như thế nào nếu một tiểu hành tinh tấn công chúng ta. Tôi cũng bị hấp dẫn bởi việc khám phá không gian và các công nghệ có sẵn trên bàn làm việc của mình. Tôi sẽ chỉ cho bạn cách kết hợp hai API để được cảnh báo qua SMS khi một tiểu hành tinh đi qua gần đó (nói một cách tương đối).

API mở của NASA

Tài nguyên đầu tiên là cổng API mở của NASA . Bạn có thể sử dụng rất nhiều giao diện tuyệt vời cho ý tưởng của mình, nhưng giao diện mà tôi quan tâm, trong trường hợp này, là NeoWs (Dịch vụ web đối tượng gần Trái đất).

mở khóa

Sau khi đọc về API, bước đầu tiên trong hành trình của bạn là lấy khóa API. Điều này được thực hiện bằng cách điền thông tin chi tiết của bạn vào biểu mẫu và cung cấp e-mail hợp lệ.


Màn hình hiển thị biểu mẫu đăng ký API của NASA


Xin lưu ý rằng hầu hết các API đều có giới hạn API là 1000 yêu cầu mỗi giờ . Chúng phù hợp cho các thử nghiệm và lợi ích cá nhân nhưng không phù hợp để sử dụng trong sản xuất

Khám phá

Hãy dành vài phút để xem dữ liệu do API trả về để xây dựng trường hợp sử dụng của chúng ta.


Yêu cầu (NHẬN)

  • start_date (YYYY-MM-DD) - Ngày bắt đầu tìm kiếm tiểu hành tinh
  • end_date (YYYY-MM-DD) - Ngày kết thúc tìm kiếm tiểu hành tinh
  • api_key - khóa bạn nhận được qua e-mail sau bước trước đó.


Phản hồi

Nó trả về một đối tượng JSON có dữ liệu có giá trị mà chúng ta phải làm việc với dữ liệu này để có được thứ chúng ta cần. Nhìn vào dữ liệu ở đây .

Chúng tôi có một cấu trúc được gọi là near_earth_objects chứa các chi tiết chúng tôi cần trong một cấu trúc phức tạp:


  • đường kính ước tính - đường kính của tiểu hành tinh tính bằng mét, km, dặm và feet.
  • relative_velocity - vận tốc tương đối của đối tượng
  • miss_ distance - khoảng cách từ orbiting_body
  • orbiting_body - trong hầu hết các trường hợp, là Trái đất, nhưng bạn có thể khám phá thêm các tùy chọn khác nếu muốn.


Một màn hình hiển thị đối tượng JSON nhận được dưới dạng phản hồi cho yêu cầu ở trên.

Chạy

Vì vậy, chúng tôi có tất cả các đối tượng đi qua gần đó và muốn lấy đối tượng gần nhất và cảnh báo chúng tôi hàng ngày. Hãy sử dụng các kỹ năng Python của bạn để làm điều đó.


 #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']


Hàm findClosestEncounter giúp bạn tìm vật thể gần Trái đất nhất từ nhóm chứa tất cả những thứ đi qua gần đó. Có thể có một giải pháp tao nhã hơn, nhưng giải pháp này phù hợp với tôi.


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

Làm cho nó có thể đọc được con người.

Vì chúng tôi sẽ gửi SMS nên việc định dạng dữ liệu là một ý tưởng hay. Vui lòng sử dụng định dạng khác.


 #format the data howclose = round(float(how_close)) diameter = round(dia_meter)


Xây dựng thông điệp bạn muốn gửi qua 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."

Bản tóm tắt của NeoW

Anh đã làm gì cho đến nay?

  1. Bạn có khóa API cho cổng thông tin OpenAPI của NASA
  2. Bạn đã khám phá API NeoWs
  3. Bạn đã trích xuất vật thể gần Trái đất nhất từ tất cả các vật thể có thể đi qua gần đó.
  4. Bạn đã tạo một thông điệp để cảnh báo bản thân về cuộc gặp gỡ này.

Hãy gửi tin nhắn SMS đó.

Có một API khác mà tôi muốn giới thiệu trong ví dụ ngắn nhưng hữu ích này - Messagebird.

thả chim

Truy cập trang web của họ và đăng ký để nhận khóa API


Sau khi đăng ký, bạn có thể gửi một số tin nhắn SMS miễn phí đến số điện thoại thực của mình. Hãy thêm chức năng này vào mã Python của bạn.


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

Nhận cảnh báo Armageddon

Bạn có thể tìm thấy kịch bản hoàn chỉnh ở đây .


Đặt tất cả các phần lại với nhau và chạy mã của bạn để xem bạn đã làm tốt chưa. Bây giờ bạn có thể ngủ ngon hơn khi biết rằng bạn sẽ được cảnh báo về mọi vật thể lớn đang bay về phía Trái đất. Tất nhiên, NASA cần phát hiện ra nó trước.


Nếu bạn thích kết quả, bạn có thể đưa nó vào một công việc định kỳ và kích hoạt nó mỗi ngày một lần.


Chúc mừng hack!

L O A D I N G
. . . comments & more!

About Author

Bogomil Shopov - Бого HackerNoon profile picture
Bogomil Shopov - Бого@bogomil
Human. Artist. Hacker: I care about free and open-source software, cybersecurity, privacy, and technology

chuyên mục

BÀI VIẾT NÀY CŨNG CÓ MẶT TẠI...