package main import ( "encoding/json" "io/ioutil" "log" "net/http" ) type Weather struct { STATUS string LANG string UNIT string SERVER_TIME uint16 LOCATION []float32 API_STATUS string TZSHIFT uint16 API_VERSION string RESULT Result } type Result struct { STATUS string O3 float32 CO float32 TEMPERATURE float32 PM10 float32 SKYCON string CLOUDRATE float32 AQI float32 DSWRF float32 VISIBILITY float32 HUMIDITY float32 SO2 float32 ULTRAVIOLET Ultraviolet PRES float32 PM25 float32 NO2 float32 PERCIPITATION Precipitation COMFORT Comfort WIND Wind } type Ultraviolet struct { INDEX int DESC string } type Precipitation struct { NEAREST Nearest LOCAL Local } type Nearest struct { STATUS string DISTANCE float32 INTENSITY float32 } type Local struct { STATUS string INTENSITY int DATASOURCE string } type Comfort struct { INDEX int DESC string } type Wind struct { DIRECTION float32 SPEED float32 } var iconurl = conf.ICONURL // 获取天气 func get_weather() { result, _ := http.Get("https://api.caiyunapp.com/v2/TAkhjf8d1nlSlspN/113.960256,22.541454/realtime.json") body, _ := ioutil.ReadAll(result.Body) log.Println(string(body)) data := Weather{} json.Unmarshal(body, &data) var icon string switch data.RESULT.SKYCON { case "CLEAR_DAY": icon = iconurl + "CLEAR_DAY.png" case "CLEAR_NIGHT": icon = iconurl + "CLEAR_NIGHT.png" case "PARTLY_CLOUDY_DAY": icon = iconurl + "PARTLY_CLOUDY_DAY.png" case "PARTLY_CLOUDY_NIGHT": icon = iconurl + "PARTLY_CLOUDY_NIGHT.png" case "CLOUDY": icon = iconurl + "icon/CLOUDY.png" case "RAIN": icon = iconurl + "RAIN.png" case "SNOW": icon = iconurl + "SNOW.png" case "WIND": icon = iconurl + "WIND.png" case "HAZE": icon = iconurl + "HAZE.png" } insert_db(data, icon) } func insert_db(data Weather, icon string) { stmt, _ := db.Prepare(`INSERT INTO weather ( skycon, icon_url, o3, co, so2, no2, temperature, humidity, pm25, pm10, cloudrate, aqi, dswrf, visibility, ultraviolet_desc, pres, precipitation_nearest_distance, precipitation_nearest_intensity, precipitation_local_intensity, comfort_desc, wind_direction, wind_speed) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`) stmt.Exec( data.RESULT.SKYCON, icon, data.RESULT.O3, data.RESULT.CO, data.RESULT.SO2, data.RESULT.NO2, data.RESULT.TEMPERATURE, data.RESULT.HUMIDITY, data.RESULT.PM25, data.RESULT.PM10, data.RESULT.CLOUDRATE, data.RESULT.AQI, data.RESULT.DSWRF, data.RESULT.VISIBILITY, data.RESULT.ULTRAVIOLET.DESC, data.RESULT.PRES, data.RESULT.PERCIPITATION.NEAREST.DISTANCE, data.RESULT.PERCIPITATION.NEAREST.INTENSITY, data.RESULT.PERCIPITATION.LOCAL.INTENSITY, data.RESULT.COMFORT.DESC, data.RESULT.WIND.DIRECTION, data.RESULT.WIND.SPEED) }