#!/usr/bin/env python3 import requests from rich import print from rich.panel import Panel from rich.prompt import Prompt from rich.columns import Columns api_key = Prompt.ask("Enter your Api Key", password=True) city_name = Prompt.ask("Enter your City", default="Göttingen") base_url = "https://api.openweathermap.org/data/2.5/weather?" complete_url = base_url + "appid=" + api_key + "&q=" + city_name response = requests.get(complete_url) data = response.json() print() match response.status_code: case 200: info_main = data["main"] info_weather = data["weather"] current_temperature = info_main["temp"] current_pressure = info_main["pressure"] current_humidity = info_main["humidity"] weather_description = info_weather[0]["description"] print(Columns([ Panel(f"[blue]{round(current_temperature - 273.15, 2)}°C", title="[bold]Temperature"), Panel(f"[blue]{current_pressure}hPa", title="[bold]Atmospheric Pressure"), Panel(f"[blue]{current_humidity}%", title="[bold]Humidity"), Panel(f"[blue]{weather_description}", title="[bold]Description"), ])) case _: if "message" in data: print(Panel(data["message"], title=f"[bold red]Error: {response.status_code}", expand=False)) else: print(Panel("unknown error", title=f"[bold red]Error: {response.status_code}", expand=False))