BurnerBot / utils /weather.py
Abhlash's picture
Remove __pycache__ directories
b0cf9c2
import os
import requests
from datetime import datetime
import logging
from config import WEATHER_API_KEY, GROQ_API_KEY
from .weather_agent import WeatherAgent
# Set up logging
logger = logging.getLogger(__name__)
# Initialize the weather agent with API key
weather_agent = WeatherAgent(groq_api_key=GROQ_API_KEY)
def get_weather():
"""Fetch weather data from OpenWeather API"""
logger.info("Attempting to fetch weather data from OpenWeather API")
# Coordinates for Black Rock Desert, Nevada
lat = 40.7864
lon = -119.2065
# Use Current Weather Data API endpoint
url = f"https://api.openweathermap.org/data/2.5/weather?lat={lat}&lon=-119.2065&units=imperial&appid={WEATHER_API_KEY}"
logger.info(f"Using API key: {WEATHER_API_KEY[:5]}...")
logger.info(f"Using URL: {url}")
try:
logger.info("Making request to OpenWeather API")
response = requests.get(url)
if response.status_code == 401:
logger.error(f"OpenWeather API key is invalid or expired. Status: {response.status_code}")
logger.error(f"Response text: {response.text}")
return None
response.raise_for_status()
data = response.json()
logger.info("Successfully received weather data")
# Format current weather data
forecast = [{
"date": datetime.fromtimestamp(data['dt']).strftime("%Y-%m-%d"),
"high": round(data['main']['temp_max']),
"low": round(data['main']['temp_min']),
"conditions": data['weather'][0]['main'],
"description": data['weather'][0]['description'],
"wind_speed": round(data['wind']['speed']),
"humidity": data['main']['humidity'],
"feels_like": round(data['main']['feels_like']),
"pressure": data['main']['pressure'],
"visibility": data['visibility']
}]
logger.info(f"Processed weather data successfully")
return forecast
except requests.exceptions.RequestException as e:
logger.error(f"Error fetching weather data: {str(e)}")
if hasattr(e.response, 'text'):
logger.error(f"API Response: {e.response.text}")
return None
def format_weather_report(forecast):
"""Get AI-enhanced weather report"""
logger.info("Formatting weather report with AI analysis")
try:
report = weather_agent.analyze_weather_data(forecast)
logger.info("Successfully generated AI weather analysis")
return report
except Exception as e:
logger.error(f"Error in AI analysis, falling back to basic format: {str(e)}")
return weather_agent.format_basic_forecast(forecast)