diff --git a/weather.go b/weather.go new file mode 100644 index 0000000..c8e4a50 --- /dev/null +++ b/weather.go @@ -0,0 +1,129 @@ +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) { + var em string + switch icon { + case "Clouds": + em = "☁️" + case "Drizzle": + em = "🌧️" + case "Rain": + em = "🌧️" + case "Snow": + em = "❄️" + case "Clear": + em = "☀️" + default: + em = "☀️" + } + fmt.Print(em) +} + +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("⚙️TESTING⚙️\n") + + 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) +}