|
|
|
|
@ -197,15 +197,18 @@ def calculate_meteor_shower_data(year: int) -> list[MeteorShower]:
|
|
|
|
|
|
|
|
|
|
for shower_id, shower_info in METEOR_SHOWERS.items():
|
|
|
|
|
# Calculate peak date based on solar longitude
|
|
|
|
|
peak_date = calculate_solar_longitude_date(
|
|
|
|
|
year, shower_info["peak_solar_longitude"]
|
|
|
|
|
)
|
|
|
|
|
peak_longitude = shower_info["peak_solar_longitude"]
|
|
|
|
|
assert isinstance(peak_longitude, (int, float))
|
|
|
|
|
peak_date = calculate_solar_longitude_date(year, peak_longitude)
|
|
|
|
|
|
|
|
|
|
# Calculate activity period
|
|
|
|
|
activity_start = calculate_solar_longitude_date(
|
|
|
|
|
year, shower_info["activity_start"]
|
|
|
|
|
)
|
|
|
|
|
activity_end = calculate_solar_longitude_date(year, shower_info["activity_end"])
|
|
|
|
|
start_longitude = shower_info["activity_start"]
|
|
|
|
|
assert isinstance(start_longitude, (int, float))
|
|
|
|
|
activity_start = calculate_solar_longitude_date(year, start_longitude)
|
|
|
|
|
|
|
|
|
|
end_longitude = shower_info["activity_end"]
|
|
|
|
|
assert isinstance(end_longitude, (int, float))
|
|
|
|
|
activity_end = calculate_solar_longitude_date(year, end_longitude)
|
|
|
|
|
|
|
|
|
|
# Calculate moon phase at peak
|
|
|
|
|
moon_illumination, moon_phase_desc = calculate_moon_phase(peak_date)
|
|
|
|
|
@ -235,9 +238,9 @@ def calculate_meteor_shower_data(year: int) -> list[MeteorShower]:
|
|
|
|
|
"peak": peak_formatted,
|
|
|
|
|
"active": active_formatted,
|
|
|
|
|
"rate": f"{shower_info['rate_min']}-{shower_info['rate_max']} meteors per hour",
|
|
|
|
|
"radiant": shower_info["radiant_ra"].split("h")[0]
|
|
|
|
|
"radiant": str(shower_info["radiant_ra"]).split("h")[0]
|
|
|
|
|
+ "h "
|
|
|
|
|
+ shower_info["radiant_dec"],
|
|
|
|
|
+ str(shower_info["radiant_dec"]),
|
|
|
|
|
"moon_phase": moon_phase_desc,
|
|
|
|
|
"visibility": shower_info["visibility"],
|
|
|
|
|
"description": shower_info["description"],
|
|
|
|
|
@ -255,7 +258,7 @@ def calculate_meteor_shower_data(year: int) -> list[MeteorShower]:
|
|
|
|
|
meteor_data.append(meteor_shower)
|
|
|
|
|
|
|
|
|
|
# Sort by peak date
|
|
|
|
|
meteor_data.sort(key=lambda x: datetime.strptime(x["peak_date"], "%Y-%m-%d"))
|
|
|
|
|
meteor_data.sort(key=lambda x: datetime.strptime(str(x["peak_date"]), "%Y-%m-%d"))
|
|
|
|
|
|
|
|
|
|
return meteor_data
|
|
|
|
|
|
|
|
|
|
|