cosmo/backend/test_nasa_sbdb.py

52 lines
1.6 KiB
Python

"""
Test NASA SBDB service directly
"""
import asyncio
from datetime import datetime, timedelta
from app.services.nasa_sbdb_service import nasa_sbdb_service
async def test_nasa_sbdb():
"""Test NASA SBDB API directly"""
# Calculate date range
date_min = datetime.utcnow().strftime("%Y-%m-%d")
date_max = (datetime.utcnow() + timedelta(days=365)).strftime("%Y-%m-%d")
print(f"Querying NASA SBDB for close approaches...")
print(f"Date range: {date_min} to {date_max}")
print(f"Max distance: 1.0 AU")
events = await nasa_sbdb_service.get_close_approaches(
date_min=date_min,
date_max=date_max,
dist_max="1.0",
body="Earth",
limit=10,
fullname=True
)
print(f"\nRetrieved {len(events)} events from NASA SBDB")
if events:
print("\nFirst 3 events:")
for i, event in enumerate(events[:3], 1):
print(f"\n{i}. {event.get('des', 'Unknown')}")
print(f" Full name: {event.get('fullname', 'N/A')}")
print(f" Date: {event.get('cd', 'N/A')}")
print(f" Distance: {event.get('dist', 'N/A')} AU")
print(f" Velocity: {event.get('v_rel', 'N/A')} km/s")
# Test parsing
parsed = nasa_sbdb_service.parse_event_to_celestial_event(event)
if parsed:
print(f" ✓ Parsed successfully")
print(f" Title: {parsed['title']}")
print(f" Body ID: {parsed['body_id']}")
else:
print(f" ✗ Failed to parse")
else:
print("No events found")
if __name__ == "__main__":
asyncio.run(test_nasa_sbdb())