class CurrentConditions
def initialize(station)
@station = station
- @url = "http://www.nws.noaa.gov/data/current_obs/#{@station.upcase}.xml"
+ @url = "http://www.nws.noaa.gov/data/current_obs/#{URI.encode @station.upcase}.xml"
@etag = String.new
@mtime = Time.mktime(0)
@current_conditions = String.new
m.reply "couldn't parse weather data from #{where}"
end
wu_out_special(m, xml)
- when /<a href="\/(?:global\/stations|US\/\w\w)\//
+ when /<a href="\/auto\/mobile[^\/]+\/(?:global\/stations|[A-Z][A-Z])\//
wu_weather_multi(m, xml)
else
debug xml
def wu_weather_multi(m, xml)
# debug xml
- stations = xml.scan(/<td>\s*(?:<a href="([^?"]+\?feature=[^"]+)"\s*[^>]*><img [^>]+><\/a>\s*)?<a href="\/(?:global\/stations|US\/(\w\w))\/([^"]*?)\.html">(.*?)<\/a>\s*:\s*(.*?)<\/td>/m)
+ stations = xml.scan(/<td>\s*(?:<a href="([^?"]+\?feature=[^"]+)"\s*[^>]*><img [^>]+><\/a>\s*)?<a href="\/auto\/mobile[^\/]+\/(?:global\/stations|([A-Z][A-Z]))\/([^"]*?)\.html">(.*?)<\/a>\s*:\s*(.*?)<\/td>/m)
# debug stations
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|