package main import ( "encoding/json" "flag" "fmt" "log" "os" "strings" "github.com/briandowns/openweathermap" ) var apiKey = "91dbd7a9a3ab3f06b9d944d42d76faf8" var zipCode = 30310 var units = "C" func init() { //flag.StringVar(&apiKey, "api", "", "API key for openweathermap.com") flag.IntVar(&zipCode, "zip", 30310, "zip code for weather location") } type output struct { Text string `json:"text"` Alt string `json:"alt"` Tooltip string `json:"tooltip"` } func main() { flag.Parse() c, err := openweathermap.NewCurrent(units, "en", apiKey) if err != nil { log.Fatal("failed to create current weather service:", err) } if err := c.CurrentByZip(zipCode, "us"); err != nil { log.Fatal("failed to get local weather:", err) } today := c.Weather[0] // fmt.Printf("%s %.0f°C %d%%", today.Description, c.Main.Temp, c.Main.Humidity) json.NewEncoder(os.Stdout).Encode(&output{ Text: fmt.Sprintf("%0.f°C %d%% %s", c.Main.Temp, c.Main.Humidity, weatherIcon(today.Description)), Alt: fmt.Sprintf("%s %.0f°C %d%% %s", today.Description, c.Main.Temp, c.Main.Humidity, weatherIcon(today.Description)), Tooltip: fmt.Sprintf("%s %.0f°C %d%% %s\r%.0f°/%.0f°", today.Description, c.Main.Temp, c.Main.Humidity, weatherIcon(today.Description), c.Main.TempMax, c.Main.TempMin), }) } func containsOf(ref string, cmp ...string) bool { for _, x := range cmp { if strings.Contains(ref, x) { return true } } return false } func weatherIcon(desc string) string { d := strings.ToLower(desc) switch { case containsOf(d, "clear", "sunny"): return "" case containsOf(d, "partly cloudy", "clouds"): return "" case containsOf(d, "cloudy"): return "" case containsOf(d, "overcast"): return "" case containsOf(d, "mist", "fog", "haze"): return "" case containsOf(d, "patchy rain", "drizzle", "light rain"): return "" case containsOf(d, "thunder"): return "" case containsOf(d, "freezing", "sleet", "hail", "ice"): return "" case containsOf(d, "rain"): return "" case containsOf(d, "blizzard", "heavy snow"): return "" case containsOf(d, "snow"): return "" default: return "" } }