diff options
Diffstat (limited to 'data')
-rw-r--r-- | data/rbot/plugins/weather.rb | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/data/rbot/plugins/weather.rb b/data/rbot/plugins/weather.rb index c241daa8..b5835447 100644 --- a/data/rbot/plugins/weather.rb +++ b/data/rbot/plugins/weather.rb @@ -202,9 +202,8 @@ class WeatherPlugin < Plugin else m.reply "couldn't parse weather data from #{where}" end - when /<a href="\/global\/stations\// - stations = xml.scan(/<a href="\/global\/stations\/(.*?)\.html">/) - m.reply "multiple stations available, use 'weather station <code>' where code is one of " + stations.join(", ") + when /<a href="\/(?:global\/stations|US\/\w\w)\// + wu_weather_multi(m, xml) else debug xml m.reply "something went wrong with the data from #{where}..." @@ -226,6 +225,19 @@ class WeatherPlugin < Plugin txt end + def wu_weather_multi(m, xml) + stations = xml.scan(/<td>\s*<a href="\/(?:global\/stations|US\/(\w\w))\/(.*?)\.html">(.*?)<\/a>\s*:\s*(.*?)<\/td>/m) + m.reply "multiple stations available, use 'weather station <code>' or 'weather <city, state>' as appropriate, for one of the following (current temp shown):" + stations.map! { |ar| + if ar.first # US state + "%s, %s (%s): %s" % [ar[1], ar[0], ar[2], wu_clean(ar[3])] + else # non-US station + "station %s (%s): %s" % [ar[1], ar[2], wu_clean(ar[3])] + end + } + m.reply stations.join("; ") + end + def wu_weather_filter(stuff) txt = wu_clean(stuff) |