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