sub Weather {
my ($args) = @_;
- &::performStrictReply(&queryText($args));
+ &::performStrictReply(&queryText($args, 'weather'));
+ return;
+}
+
+sub Metar {
+ my ($args) = @_;
+ &::performStrictReply(&queryText($args, 'metar'));
return;
}
sub queryText {
my ($station) = shift;
- $station = uc($station);
+ my ($wxmode) = shift;
my $result;
+ $station = uc($station);
+ $station =~ s/for //i;
+
if ($no_weather) {
return 0;
} else {
}
my $ua = new LWP::UserAgent;
- $ua->proxy('http', $::param{'httpProxy'}) if (&::IsParam("httpProxy"));
+ $ua->proxy('http', $::param{'httpProxy'}) if (&::IsParam('httpProxy'));
$ua->timeout(10);
my $request = new HTTP::Request('GET', "http://weather.noaa.gov/weather/current/$station.html");
- my $response = $ua->request($request);
+ my $response = $ua->request($request);
if (!$response->is_success) {
if ($response->code == 404) {
return "I can't find station code \"$station\""
. " (see http://www.nws.noaa.gov/oso/site.shtml"
+ . " or http://www.nws.noaa.gov/tg/siteloc.shtml"
. " for ICAO locations codes).";
} else {
- return "Something failed in connecting to the NOAA web"
+ return 'Something failed in connecting to the NOAA web'
. " server. Try again later.";
}
}
$content = $response->content;
- $content =~ s|.*?current weather conditions.*?<BR>([^<]*?)\s*<.*?</TR>||is;
+ $content =~ s|.*?<BODY[^>]*>||is;
+ #$content =~ s|.*?current weather conditions.*?<BR>([^<]*?)\s*<.*?</TR>||is;
+ $content =~ s|.*?current weather conditions[^<]*(<[^>]+>\s*)+||is;
+ $content =~ s|([^<]*?)\s*<.*?</TR>||is;
my $place = $1;
chomp $place;
$min_temp = $1;
if ($time) {
+ if ($wxmode eq 'metar' && defined($feat{'ob'})) {
+ return ('METAR ' . $place . ": " . $feat{'ob'});
+ }
+
$result = "$place; $id; last updated: $time";
foreach (sort keys %feat) {
next if $_ eq 'ob';