package main import ( "fmt" "time" "github.com/fatih/color" ) type WeatherAPI struct { Coord Coord `json:"coord"` Weather []Weather `json:"weather"` Base string `json:"base"` Main Main `json:"main"` Visability int64 `json:"visibility"` Wind Wind `json:"wind"` Rain Rain `json:"rain"` Clouds Cloud `json:"cloud"` DT int64 `json:"dt"` Sys Sys `json:"sys"` TimeZone int `json:"timezone"` ID int `json:"id"` Name string `json:"name"` COD int `json:"cod"` } type Coord struct { Lon float64 `json:"lon"` Lat float64 `json:"lat"` } type Weather struct { ID int `json:"id"` Main string `json:"main"` Description string `json:"description"` Icon string `json:"icon"` } type Main struct { Temp float64 `json:"temp"` Feels_like float64 `json:"feels_like"` Temp_min float64 `json:"temp_min"` Temp_max float64 `json:"temp_max"` Pressure float64 `json:"pressure"` Humidity float64 `json:"humidity"` } type Wind struct { Speed float64 `json:"speed"` Deg float64 `json:"deg"` Gust float64 `json:"gust"` } type Rain struct { T1h float64 `json:"1h"` } type Cloud struct { All int `json:"all"` } type Sys struct { Types int `json:"type"` Id int64 `json:"id"` Country string `json:"country"` Sunrise int64 `json:"sunrise"` Sunset int64 `json:"sunset"` } func iconToEmoji(icon string) { //info. from https://openweathermap.org/weather-conditions var emoji string switch icon { case "Clouds": emoji = "☁️" case "Drizzle": emoji = "🌧️" case "Rain": emoji = "🌧️" case "Snow": emoji = "❄️" case "Clear": emoji = "☀️" case "Mist": emoji = "🌫️" case "Tornado": emoji = "🌪️" case "Thunderstorm": emoji = "⛈" default: emoji = "️❓" } fmt.Print(emoji) } func printWeather(data WeatherAPI) { weatherData := data white := color.New(color.FgWhite) boldWhite := white.Add(color.Bold) dt := time.Now() boldWhite.Println(dt.Format("01/02/2006 15:04")) str_loc := weatherData.Name str_code := weatherData.Sys.Country str_weather := weatherData.Weather[0].Main str_weather_detail := weatherData.Weather[0].Description str_weather_icon := weatherData.Weather[0].Main str_temp := weatherData.Main.Temp str_temp_fl := weatherData.Main.Feels_like str_temp_min := weatherData.Main.Temp_min str_temp_max := weatherData.Main.Temp_max str_sunset := time.Unix(weatherData.Sys.Sunset, 0) str_sunrise := time.Unix(weatherData.Sys.Sunrise, 0) //str_wind_speed := weatherData.Wind.Speed boldWhite.Printf("📍Location: ") fmt.Printf("%v, %v\n", str_loc, str_code) boldWhite.Printf("Weather:") iconToEmoji(str_weather_icon) fmt.Printf(" %v (%v)\n", str_weather, str_weather_detail) boldWhite.Printf("🌡️ Temp: ") fmt.Printf("%v°C (Feels like: %v°C)\n(Min: %v°C, Max: %v°C)\n", str_temp, str_temp_fl, str_temp_min, str_temp_max) boldWhite.Printf("🌅Sunrise: ") fmt.Printf("%v\t", str_sunrise.Format("15:04")) boldWhite.Printf("🌇Sunset: ") fmt.Printf("%v\n", str_sunset.Format("15:04")) //fmt.Printf("Wind Speed: %vm/s", str_wind_speed) }