#!/usr/bin/perl -w
use strict;
use HTML::TokeParser;
use LWP::UserAgent;
my %cities = (
"City"
=> { var => 'adelmax' },
"Elizabeth"
=> { var => 'elizmax' },
"Noarlunga"
=> { var => 'noarmax' },
"Mount Barker"
=> { var => 'mtbkmax' }
);
my $ua = LWP::UserAgent->new();
$ua->timeout(60);
my $request = HTTP::Request->new('GET', 'http://www.bom.gov.au/cgi-bin/wrap_fwo.pl?IDS10034.txt');
my $result = $ua->request($request);
my $content = $result->content;
my $p = HTML::TokeParser->new(\$content);
my @lines;
while (my $tag = $p->get_tag("pre")) {
my $text = $p->get_text("/pre");
@lines = split /\n/, $text;
}
my $adeldesc;
my $cnt;
for my $line (@lines) {
if ($line =~ /^Forecast for/ && !$adeldesc) {
$adeldesc = $lines[$cnt+1];
}
if ($line =~ /^([\w\s]+):\s+Max\s(\d+)/) {
$cities{$1}{max} = $2;
}
$cnt++;
}
my $out = "var adeldesc = $adeldesc\n";
for (keys %cities) {
$out .= qq(var $cities{$_}{var} = "$cities{$_}{max}"\n);
}
open W, ">", "weather.js"
or die "Could not open weather.js for writing:$!\n";
print W $out;
close W;
print <