#!/usr/bin/env python3

import requests
import json
import sys

API_KEY = "99631af2d6db903d1f689c7d2cb13764"
CITY_ID = "5809844"
UNITS = "metric"

def celsius_to_fahrenheit(celsius):
    return (celsius * 9 / 5) + 32


def get_weather_icon(description):
    icons = {
        "clear sky": "☀️",
        "few clouds": "🌤️",
        "scattered clouds": "🌥️",
        "broken clouds": "☁️",
        "overcast clouds": "☁️",
        "shower rain": "🌦️",
        "light rain": "🌧️",
        "rain": "🌧️",
        "moderate rain": "🌧️",
        "thunderstorm": "⛈️",
        "snow": "❄️",
        "mist": "🌫️",
        "haze": "🌫️",
        "smoke": "🌫️",
        "fog": "🌫️",
    }
    return icons.get(description, "❓")


try:
    response = requests.get(
        f"http://api.openweathermap.org/data/2.5/weather?id={CITY_ID}&units={UNITS}&appid={API_KEY}"
    )
    response.raise_for_status()
    weather_data = response.json()
    #print(weather_data)

    weather_desc = weather_data["weather"][0]["description"]
    #print(weather_desc)
    temp_c = round(weather_data["main"]["temp"])
    temp_f = round(celsius_to_fahrenheit(temp_c))
    weather_icon = get_weather_icon(weather_desc)

    print(f"{weather_icon} {temp_c}°C / {temp_f}°F")

except requests.exceptions.RequestException as e:
    print(f"Error: {e}")
    print(json.dumps({"text": "", "tooltip": "Could not retrieve weather data"}))
    sys.exit(1)

except json.JSONDecodeError:
    print("Error: Failed to parse JSON response")
    print(response.content)
    sys.exit(1)
