]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - data/rbot/plugins/weather.rb
weather plugin: properly support multiple US and non-US stations
[user/henk/code/ruby/rbot.git] / data / rbot / plugins / weather.rb
index c241daa832f0e8a97f7fd317592478006aca8c0a..b58354471e302101fe349c51d4b5622b2dc3f100 100644 (file)
@@ -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)