From 50afc48fdc1e437102e574811a73c2367bc4e30d Mon Sep 17 00:00:00 2001 From: Nick White Date: Fri, 5 Feb 2021 15:42:18 +0000 Subject: Capture all data available so verbose mode is more useful --- weather.go | 45 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/weather.go b/weather.go index dad9f2d..996b3e4 100644 --- a/weather.go +++ b/weather.go @@ -139,11 +139,19 @@ var TypeDescription = map[int]string{ // Our prefered struct type Weather struct { + airquality int date string - time string - temperature float64 + feelsliketemp float64 + humidity int + maxuv int precipitation int + pressure int + temperature float64 + time string + visibility int weathertype int + winddir string + windgust float64 windspeed float64 } @@ -165,9 +173,15 @@ func processBBC(b []byte) []Weather { for _, report := range f.Detailed.Reports { w.date = report.LocalDate w.time = report.Timeslot + w.feelsliketemp = float64(report.FeelsLikeTemperatureC) + w.humidity = report.Humidity w.temperature = float64(report.TemperatureC) w.precipitation = report.PrecipitationProbabilityInPercent + w.pressure = report.Pressure + w.visibility = estimateVisibility(report.Visibility) w.weathertype = report.WeatherType + w.winddir = report.WindDirectionFull + w.windgust = float64(report.GustSpeedMph) w.windspeed = float64(report.WindSpeedMph) weather = append(weather, w) } @@ -175,12 +189,35 @@ func processBBC(b []byte) []Weather { return weather } +// estimateVisibility returns a rough number of meters +// of vilibility based on descriptive text. +func estimateVisibility(s string) int { + switch s { + case "Good": + return 10000 + case "Moderate": + return 5000 + case "Poor": + return 500 + default: + return 0 + } +} + func parseMetWeather(wp WeatherParams) Weather { var w Weather - w.temperature = wp.T + w.airquality = wp.AQIndex + w.feelsliketemp = wp.F + w.humidity = wp.H + w.pressure = wp.P w.precipitation = wp.PP + w.temperature = wp.T + w.maxuv = wp.UV + w.visibility = wp.V w.weathertype = wp.WT + w.winddir = wp.WD + w.windgust = wp.WG w.windspeed = wp.WS * mpsToMphMultiplier return w @@ -268,7 +305,7 @@ func main() { fmt.Printf("%18s, Temp: %4.1f°C, ", desc, w.temperature) fmt.Printf("Rain: %2d%%, Wind: %4.1fmph\n", w.precipitation, w.windspeed) if *verbose { - fmt.Printf(" %+v\n", w) + fmt.Printf("%+v\n\n", w) } } } -- cgit v1.2.3