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 {
$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) {
}
$content = $response->content;
- $content =~ s|.*?current weather conditions.*?<BR>([^<]*)<.*?</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;
- $content =~ s|.*?<TR>(?:\s*<[^>]+>)*\s*([^<]+)\s<.*?</TR>||is;
- $place .= $1;
chomp $place;
$content =~ s|.*?<TR>(?:\s*<[^>]+>)*\s*([^<]+)\s<.*?</TR>||is;
$content =~ s|.*?conditions at.*?</TD>||is;
- $content =~ s|.*?<OPTION SELECTED>\s+([^<]+)\s<OPTION>.*?</TR>||s;
+ #$content =~ s|.*?<OPTION SELECTED>\s+([^<]+)\s<OPTION>.*?</TR>||s; # local time
+ $content =~ s|.*?<BR>\s+([^<]+?)\s*</FORM>.*?</TR>||s; # UTC
my $time = $1;
$time =~ s/-//g;
$time =~ s/\s+/ /g;
$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';