-
--[[
Licensed under GNU General Public License v2
local sky = nil
local settings = function() end
-notification_preset = {}
+yawn_notification_preset = {}
local function fetch_weather()
local url = api_url .. units_set .. city_id
-- widgets won't display
if text == "" or text:match("City not found")
then
+ yawn.icon:set_image(icon_path .. "na.png")
if text == "" then
weather_data = "Service not available at the moment."
yawn.widget:set_text("N/A")
-- Processing raw data
weather_data = text:gsub("<.->", "")
- weather_data = weather_data:match("Current Conditions:.-Full")
+ weather_data = weather_data:match("Current Conditions:.-Full") or ""
+
+ -- may still happens in case of bad connectivity
+ if weather_data == "" then
+ yawn.icon:set_image(icon_path .. "na.png")
+ yawn.widget:set_text("?")
+ return
+ end
+
weather_data = weather_data:gsub("Current Conditions:.-\n", "Now: ")
weather_data = weather_data:gsub("Forecast:.-\n", "")
weather_data = weather_data:gsub("\nFull", "")
sky = sky .. forecast:gsub(" ", ""):gsub("/", "") .. ".png"
-- In case there's no defined icon for current forecast
- f = io.popen(sky)
- if f == nil then
+ if io.open(sky) == nil then
sky = icon_path .. "na.png"
- else
- io.close(f)
end
-- Localization
yawn.icon:set_image(sky)
widget = yawn.widget
- forecast = weather_data:match(": %S+.-,"):gsub(": ", ""):gsub(",", "\n")
+ forecast = weather_data:match(": %S.-,"):gsub(": ", ""):gsub(",", "")
units = units:gsub(" ", "")
settings()
yawn.hide()
notification = naughty.notify({
- preset = notification_preset,
+ preset = yawn_notification_preset,
text = weather_data,
icon = sky,
timeout = t_out