mirror of https://github.com/lcpz/lain.git
weather: icons based on localtime; closes pull #198
This commit is contained in:
parent
6fd1eecd43
commit
ef872db5dc
|
@ -15,14 +15,11 @@ local setmetatable = setmetatable
|
||||||
local borderbox = {}
|
local borderbox = {}
|
||||||
|
|
||||||
local function worker(relbox, s, args)
|
local function worker(relbox, s, args)
|
||||||
local where = args.position or 'top'
|
local where = args.position or 'top'
|
||||||
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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
2
wiki
|
@ -1 +1 @@
|
||||||
Subproject commit ac3af8c33cc593af15b85f68e20c262e847d566b
|
Subproject commit d567782c4314edc851b86a1ca4f853b238774f2e
|
Loading…
Reference in New Issue