You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.0 KiB
Python
40 lines
1.0 KiB
Python
import requests
|
|
|
|
|
|
class Asteroid:
|
|
BASE_API_URL = "https://api.nasa.gov/neo/rest/v1/neo/{}?api_key=DEMO_KEY"
|
|
|
|
def __init__(self, spk_id):
|
|
self.api_url = self.BASE_API_URL.format(spk_id)
|
|
|
|
def get_data(self):
|
|
return requests.get(self.api_url).json()
|
|
|
|
@property
|
|
def name(self):
|
|
return self.get_data()["name"]
|
|
|
|
@property
|
|
def diameter(self):
|
|
return int(
|
|
self.get_data()["estimated_diameter"]["meters"][
|
|
"estimated_diameter_max"
|
|
]
|
|
)
|
|
|
|
@property
|
|
def closest_approach(self):
|
|
closest = {"date": None, "distance": float("inf")}
|
|
|
|
for approach in self.get_data()["close_approach_data"]:
|
|
distance = float(approach["miss_distance"]["lunar"])
|
|
if distance < closest["distance"]:
|
|
closest.update(
|
|
{
|
|
"date": approach["close_approach_date"],
|
|
"distance": distance,
|
|
}
|
|
)
|
|
|
|
return closest
|