X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=data%2Frbot%2Fplugins%2Fweather.rb;h=5da949e4d8787e6532ad3dd91bbd67451d0cfea2;hb=41ea4232df0ed0b3f922b0476444ca8e38f3301f;hp=a3550fb9fbc58930977694626d52b8124f81c711;hpb=95968ce9b07a35cf0c196491c4e050150e556bea;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/data/rbot/plugins/weather.rb b/data/rbot/plugins/weather.rb index a3550fb9..5da949e4 100644 --- a/data/rbot/plugins/weather.rb +++ b/data/rbot/plugins/weather.rb @@ -252,26 +252,30 @@ class WeatherPlugin < Plugin end def wu_check_special(xml) - if spec_match = xml.match(%r{]*>([^<]+)}) + specials = [] + # We only scan the first half to prevent getting the advisories twice + xml[0,xml.length/2].scan(%r{]*>([^<]+)}) do special = { :url => "http://mobile.wunderground.com"+$1, - :special => $2.dup + :type => $2.dup, + :special => $3.dup } + spec_rx = Regexp.new("(?:.+?)\\s+(.+?)\\s+\\s+\\s+", Regexp::MULTILINE) spec_xml = @bot.httputil.get(special[:url]) - if spec_xml and spec_td = spec_xml.match(/\s*\s*(.*?)\s*<\/td>\s*<\/tr>\s*<\/table>/m) - return special.merge(:text => $1.ircify_html) - else - return special + if spec_xml and spec_td = spec_xml.match(spec_rx) + special.merge!(:text => spec_td.captures.first.ircify_html) end - else - return nil + specials << special end + return specials end def wu_out_special(m, xml) return unless @bot.config['weather.advisory'] - special = wu_check_special(xml).merge(:underline => Underline) - if special + specials = wu_check_special(xml) + debug specials + specials.each do |special| + special.merge!(:underline => Underline) if special[:text] m.reply("%{underline}%{special}%{underline}: %{text}" % special) else