#!/usr/bin/perl use LWP::Simple; use LWP::UserAgent; use HTTP::Request; use HTTP::Response; use HTML::LinkExtor; # allows you to extract the links off of an HTML page. # tag filename with datestamp my $tag; # where to dump saved files my $savedir="/usr/weather"; my $debug =""; # Get the all the values for current time ($Second, $Minute, $Hour, $Day, $Month, $Year, $WeekDay, $DayOfYear, $IsDST) = localtime(time); $Year =~s/^10/200/; $Month++; $Minute = &prettify ($Minute); $Hour = &prettify ($Hour); $Day = &prettify ($Day); $Month = &prettify ($Month); $tag="$Year.$Month.$Day.$Hour.$Minute"; $savedir = $savedir."/$Year.$Month.$Day"; mkdir ($savedir); my $savefile = "$savedir/$tag.hfxradar.gif"; &dprint ("Saving page to $savefile"); getpage ("http://weatheroffice.ec.gc.ca/radar/index_e.html?id=XGO", "XGO_CAPPI.*GIF", $savefile); $savefile = "$savedir/$tag.atlradar.gif"; &dprint ("Saving page to $savefile"); getpage ("http://weatheroffice.ec.gc.ca/radar/index_e.html?id=ERN", "COMPOSITE_ERN.*GIF", $savefile); $savefile = "$savedir/$tag.natradar.gif"; &dprint ("Saving page to $savefile"); getpage ("http://weatheroffice.ec.gc.ca/radar/index_e.html", "COMPOSITE_NAT.*GIF", $savefile); sub prettify { # $number = prettify ($number) # Add a leading 0 if required local ($number) = pop(@_); if ($number < 10) { $number = "0$number"; } return ($number); } sub getpage { # getpage (urltoget, patternmatch, filetosave) # Does the grunt work pulling down the page local ($filesave) = pop(@_); local ($pat) = pop(@_); local ($URL) = pop(@_); &dprint ("filesave $filesave, pat $pat, url $URL"); my $linkfound = ""; $browser = LWP::UserAgent->new(); $browser->timeout(10); local ($request) = HTTP::Request->new(GET => $URL); local ($response) = $browser->request($request); if ($response->is_error()) {printf "%s\n", $response->status_line;} $contents = $response->content(); local ($page_parser) = HTML::LinkExtor->new(undef, $URL); $page_parser->parse($contents)->eof; @links = $page_parser->links; foreach $link (@links) { if ($$link[2] =~ m/$pat/ && !$linkfound) { $linkfound = $$link[2]; &dprint ("Found link $linkfound"); } } $content = get($linkfound); if ($content) { open IMAGE, ">$filesave" || die ("Could not save to $filesave: $!"); print IMAGE $content; close IMAGE; } else { &dprint ("Not writing empty file to $filesave"); } } sub dprint { # prints out a debug message if debug enabled if ($debug) { local ($message) = pop(@_); print $message."\n"; } }