]>
git.madduck.net Git - etc/awesome.git/blobdiff - widgets/weather.lua
madduck's git repository
Every one of the projects in this repository is available at the canonical
URL git://git.madduck.net/madduck/pub/<projectpath> — see
each project's metadata for the exact URL.
All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@ git. madduck. net .
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
SSH access, as well as push access can be individually
arranged .
If you use my repositories frequently, consider adding the following
snippet to ~/.gitconfig and using the third clone URL listed for each
project:
[url "git://git.madduck.net/madduck/"]
insteadOf = madduck:
local timeout_forecast = args.timeout or 86400 -- 24 hrs
local current_call = "curl -s 'http://api.openweathermap.org/data/2.5/weather?id=%s&units=%s&lang=%s'"
local forecast_call = "curl -s 'http://api.openweathermap.org/data/2.5/forecast/daily?id=%s&units=%s&lang=%s&cnt=%s'"
local timeout_forecast = args.timeout or 86400 -- 24 hrs
local current_call = "curl -s 'http://api.openweathermap.org/data/2.5/weather?id=%s&units=%s&lang=%s'"
local forecast_call = "curl -s 'http://api.openweathermap.org/data/2.5/forecast/daily?id=%s&units=%s&lang=%s&cnt=%s'"
- local city_id = args.city_id
+ local city_id = args.city_id or 0 -- placeholder
local units = args.units or "metric"
local lang = args.lang or "en"
local cnt = args.cnt or 7
local units = args.units or "metric"
local lang = args.lang or "en"
local cnt = args.cnt or 7
f:close()
weather_now, pos, err = json.decode(j, 1, nil)
f:close()
weather_now, pos, err = json.decode(j, 1, nil)
- if tonumber(weather_now["cod"]) == 200 then
+ if not err and weather_now ~= nil and tonumber(weather_now["cod"]) == 200 then
weather.notification_text = ''
for i = 1, weather_now["cnt"] do
local f = assert(io.popen(string.format(date_cmd, weather_now["list"][i]["dt"])))
weather.notification_text = ''
for i = 1, weather_now["cnt"] do
local f = assert(io.popen(string.format(date_cmd, weather_now["list"][i]["dt"])))
weather.notification_text = weather.notification_text .. "\n"
end
end
weather.notification_text = weather.notification_text .. "\n"
end
end
+ else
+ weather.icon_path = icons_path .. "na.png"
+ weather.notification_text = "API/connection error or bad/not set city ID"
f:close()
weather_now, pos, err = json.decode(j, 1, nil)
f:close()
weather_now, pos, err = json.decode(j, 1, nil)
- if err then
- weather.widget.set_text("N/A")
- weather.icon:set_image(icons_path .. "na.png")
- elseif tonumber(weather_now["cod"]) == 200 then
+ if not err and weather_now ~= nil and tonumber(weather_now["cod"]) == 200 then
weather.icon_path = icons_path .. weather_now["weather"][1]["icon"] .. ".png"
weather.icon:set_image(weather.icon_path)
widget = weather.widget
settings()
weather.icon_path = icons_path .. weather_now["weather"][1]["icon"] .. ".png"
weather.icon:set_image(weather.icon_path)
widget = weather.widget
settings()
+ else
+ weather.widget._layout.text = " N/A " -- tries to avoid textbox bugs
+ weather.icon:set_image(icons_path .. "na.png")
- newtimer("weather", timeout, weather.update)
- newtimer("weather_forecast", timeout, weather.forecast_update)
+ weather.attach(weather.widget)
+
+ newtimer("weather-" .. city_id, timeout, weather.update)
+ newtimer("weather_forecast" .. city_id, timeout, weather.forecast_update)
return setmetatable(weather, { __index = weather.widget })
end
return setmetatable(weather, { __index = weather.widget })
end