diff options
author | Giuseppe Bilotta <giuseppe.bilotta@gmail.com> | 2007-11-08 23:59:26 +0000 |
---|---|---|
committer | Giuseppe Bilotta <giuseppe.bilotta@gmail.com> | 2007-11-08 23:59:26 +0000 |
commit | 7c5c0101174090565bc079863fe3980e9f7752ee (patch) | |
tree | 29a65c7ed4f8fdbcfdc0fb58d1cb661e18925623 /data | |
parent | 249166efbb959b92011b3b0ef55ca071983f68db (diff) |
weather plugin: properly support multiple US and non-US stations
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) |