weather: icons based on localtime; closes pull #198

This commit is contained in:
copycat-killer 2016-05-29 17:13:52 +02:00
parent 6fd1eecd43
commit ef872db5dc
4 changed files with 26 additions and 13 deletions

View File

@ -19,10 +19,7 @@ local function worker(relbox, s, args)
local color = args.color or '#FFFFFF' local color = args.color or '#FFFFFF'
local size = args.size or 1 local size = args.size or 1
local box = nil local box = nil
local wiboxarg = { local wiboxarg = { position = nil, bg = color }
position = nil,
bg = color
}
if where == 'top' if where == 'top'
then then

View File

@ -29,8 +29,7 @@ local function worker(args)
function update() function update()
local f = io.open(tempfile) local f = io.open(tempfile)
if f ~= nil if f then
then
coretemp_now = tonumber(f:read("*all")) / 1000 coretemp_now = tonumber(f:read("*all")) / 1000
f:close() f:close()
else else

View File

@ -18,9 +18,11 @@ local wibox = require("wibox")
local math = { floor = math.floor } local math = { floor = math.floor }
local mouse = mouse local mouse = mouse
local os = { time = os.time }
local string = { format = string.format, local string = { format = string.format,
gsub = string.gsub } gsub = string.gsub }
local tonumber = tonumber
local setmetatable = setmetatable local setmetatable = setmetatable
-- OpenWeatherMap -- OpenWeatherMap
@ -36,6 +38,7 @@ local function worker(args)
local current_call = args.current_call or "curl -s 'http://api.openweathermap.org/data/2.5/weather?id=%s&units=%s&lang=%s&APPID=%s'" local current_call = args.current_call or "curl -s 'http://api.openweathermap.org/data/2.5/weather?id=%s&units=%s&lang=%s&APPID=%s'"
local forecast_call = args.forecast_call or "curl -s 'http://api.openweathermap.org/data/2.5/forecast/daily?id=%s&units=%s&lang=%s&cnt=%s&APPID=%s'" local forecast_call = args.forecast_call or "curl -s 'http://api.openweathermap.org/data/2.5/forecast/daily?id=%s&units=%s&lang=%s&cnt=%s&APPID=%s'"
local city_id = args.city_id or 0 -- placeholder local city_id = args.city_id or 0 -- placeholder
local utc = args.utc or 0
local units = args.units or "metric" local units = args.units or "metric"
local lang = args.lang or "en" local lang = args.lang or "en"
local cnt = args.cnt or 5 local cnt = args.cnt or 5
@ -70,6 +73,7 @@ local function worker(args)
weather.forecast_update() weather.forecast_update()
end end
weather.notification = naughty.notify({ weather.notification = naughty.notify({
text = weather.notification_text, text = weather.notification_text,
icon = weather.icon_path, icon = weather.icon_path,
@ -117,11 +121,24 @@ local function worker(args)
function weather.update() function weather.update()
local cmd = string.format(current_call, city_id, units, lang, APPID) local cmd = string.format(current_call, city_id, units, lang, APPID)
async.request(cmd, function(f) async.request(cmd, function(f)
local pos, err local pos, err, icon
weather_now, pos, err = json.decode(f, 1, nil) weather_now, pos, err = json.decode(f, 1, nil)
if not err and weather_now and tonumber(weather_now["cod"]) == 200 then if not err and weather_now and tonumber(weather_now["cod"]) == 200 then
weather.icon_path = icons_path .. weather_now["weather"][1]["icon"] .. ".png" -- weather icon based on localtime
now = os.time() - (utc * 3600)
sunrise = tonumber(weather_now["sys"]["sunrise"])
sunset = tonumber(weather_now["sys"]["sunset"])
icon = weather_now["weather"][1]["icon"]
if sunrise <= now and now <= sunset then
icon = string.gsub(icon, "n", "d")
else
icon = string.gsub(icon, "d", "n")
end
weather.icon_path = icons_path .. icon .. ".png"
widget = weather.widget widget = weather.widget
settings() settings()
else else

2
wiki

@ -1 +1 @@
Subproject commit ac3af8c33cc593af15b85f68e20c262e847d566b Subproject commit d567782c4314edc851b86a1ca4f853b238774f2e