SHAMIL SHAHBAZ AWAN commited on
Commit
59307f6
Β·
verified Β·
1 Parent(s): 87f7faf

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +38 -31
app.py CHANGED
@@ -37,48 +37,55 @@ llm = ChatGoogleGenerativeAI(
37
  def space_events_agent():
38
  """
39
  Fetches and formats upcoming space events from NASA's EONET API.
40
-
41
  Returns:
42
- dict: A dictionary with a concise and well-formatted summary of recent space-related events.
 
 
 
 
43
  """
44
  import os
45
  import requests
46
- from datetime import datetime
47
 
48
  base_url = "https://eonet.gsfc.nasa.gov/api/v2.1/events"
49
  params = {"api_key": os.getenv("NASA_API_KEY")}
50
-
51
  try:
52
- response = requests.get(base_url, params=params, timeout=5) # Set a timeout to avoid long waits
53
  response.raise_for_status()
54
- except requests.exceptions.RequestException as e:
55
- return {"output": f"πŸš€ **Space Events Agent:** Unable to fetch data. Error: {str(e)}"}
56
-
57
  events = response.json().get("events", [])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
 
59
- # Filter events related to space (exclude wildfires, icebergs, general disasters)
60
- space_related = [
61
- event for event in events
62
- if any(cat.get("title", "").lower() in ["meteor", "asteroid", "space debris", "solar activity", "geomagnetic storm"]
63
- for cat in event.get("categories", []))
64
- ]
65
-
66
- if not space_related:
67
- return {"output": "πŸš€ **Space Events Agent:** No major space-related events at the moment."}
68
-
69
- # Sort events by date (latest first)
70
- space_related = sorted(space_related, key=lambda e: e.get("geometries", [{}])[0].get("date", ""), reverse=True)
71
-
72
- # Limit to top 5 latest events
73
- formatted_events = "\n".join([
74
- f"πŸ”­ **{event.get('title', 'Unknown Event')}**\n"
75
- f"πŸ“… Date: {event.get('geometries', [{}])[0].get('date', 'N/A')}\n"
76
- f"πŸ“ Location: {event.get('geometries', [{}])[0].get('coordinates', 'Unknown')}\n"
77
- f"πŸ”Ž Category: {event.get('categories', [{}])[0].get('title', 'Unknown')}\n"
78
- for event in space_related[:5]
79
- ])
80
-
81
- return {"output": f"πŸš€ **Latest Space Events:**\n\n{formatted_events}"}
82
 
83
  def astronomy_image_agent(user_input: str):
84
  """
 
37
  def space_events_agent():
38
  """
39
  Fetches and formats upcoming space events from NASA's EONET API.
40
+
41
  Returns:
42
+ dict: A dictionary with the formatted space events or a message if no events are found.
43
+ Raises:
44
+ HTTPError: If the request to the NASA API fails.
45
+ Note:
46
+ Requires NASA API key set in the environment variable `NASA_API_KEY`.
47
  """
48
  import os
49
  import requests
 
50
 
51
  base_url = "https://eonet.gsfc.nasa.gov/api/v2.1/events"
52
  params = {"api_key": os.getenv("NASA_API_KEY")}
53
+
54
  try:
55
+ response = requests.get(base_url, params=params)
56
  response.raise_for_status()
57
+ except Exception as e:
58
+ return {"output": f"πŸš€ **Space Events Agent:** Error fetching events: {str(e)}"}
59
+
60
  events = response.json().get("events", [])
61
+ if events:
62
+ event_details = []
63
+ for event in events:
64
+ title = event.get('title', 'N/A')
65
+ # Retrieve category using safe defaults
66
+ category = (event.get('categories', [{}])[0]).get('title', 'Unknown Category')
67
+ geometries = event.get('geometries', [])
68
+ if geometries:
69
+ first_geometry = geometries[0]
70
+ coordinates = first_geometry.get('coordinates', 'Unknown Location')
71
+ event_date = first_geometry.get('date', 'Unknown Date')
72
+ else:
73
+ coordinates = 'Unknown Location'
74
+ event_date = 'Unknown Date'
75
+
76
+ detail = (
77
+ f"**Event:** {title}\n"
78
+ f"**Category:** {category}\n"
79
+ f"**Location:** {coordinates}\n"
80
+ f"**Date:** {event_date}\n"
81
+ )
82
+ event_details.append(detail)
83
+
84
+ formatted_events = "\n".join(event_details)
85
+ return {"output": f"πŸš€ **Space Events Agent:**\n\n{formatted_events}"}
86
+ else:
87
+ return {"output": "πŸš€ **Space Events Agent:** No events found at the moment."}
88
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
 
90
  def astronomy_image_agent(user_input: str):
91
  """