# {{{ Weather
bar_applet("weather", 0) do |wmii, bar|
require 'net/http'
require 'time'
ausgabe = ""
Thread.new do
agent = 'ruby-wmii #{WMIIRC_VERSION} (#{WMIIRC_RELEASE_DATE})'
metar = wmii.plugin_config["ollis-plugins:weather"]["metar"] || ["eddv"]
metar = metar.to_s
loop do
http = Net::HTTP.new('weather.noaa.gov', 80)
page = http.start do
req = Net::HTTP::Get.new('http://weather.noaa.gov/pub/data/observations/metar/decoded/'+metar.upcase+'.TXT', 'User-Agent' => agent)
http.request(req).body
end
page = page.to_a
page[0] = "Location: " + page[0].chomp
page[1] = "Date: " + page[1].chomp
feld = Hash.new
feld["Wind"], feld["Relative Humidity"], feld["Sky conditions"] = '','','';
page.each do |line|
name, wert = line.split(/\s*:\s*/, 2)
feld[name] = wert
end
temperature = feld["Temperature"].scan(/\((.+)\)/).to_s
temperature.sub!(/ /, '° ')
ort = feld["Location"].scan(/(^[^)]+\))/).to_s
date = feld["Date"].scan(/\/ ([0-9]{4})\.([0-9]{2})\.([0-9]{2}) ([0-9]{2})([0-9]{2}) UTC/)
year, month, day, hour, minute = date[0][0..4]
gmt_time = Time.gm(year, month, day, hour, minute, 0)
localtime = gmt_time.localtime
bar.data = temperature.chomp
ausgabe = <<EOF
Current conditions at #{ort}
Last updated #{localtime}
Wind: #{feld["Wind"].chomp}
Temperature: #{temperature}
Relative Humidity: #{feld["Relative Humidity"].chomp}
Sky conditions: #{feld["Sky conditions"].chomp}
EOF
sleep 15*60
end
end
xmessagebox = "xmessage -center -buttons quit:0 -default quit -file -"
fl = lambda{ wmii.write "/view/ctl", "select 0" }
toggle_fl = lambda{ sleep 2; wmii.write "/view/ctl", "select toggle" }
bar.on_click(MOUSE_BUTTON_LEFT){ fl[]; system "echo '#{ausgabe}' | wmiisetsid #{xmessagebox} &"; toggle_fl[] }
end