#!/usr/bin/perl
use Apache::Request;
use Apache::Server;
my $ALBUMURL = "http://photos.lairdweb.com/webcam";
my $IMAGEDIR = "/var/media/photos/webcam";
my $IMAGEURL = "/webcam";
my $request = Apache::Request->new(shift);
# my $log = $request->server->log;
my $uri = $request->uri;
# $log->info("archive.pl called");
$request->content_type('text/html');
$request->send_http_header;
OutputHeader($request);
OutputDayGrid($request);
OutputFooter($request);
return(Apache::Constants::OK);
#exit(0);
sub OutputHeader
{
my ($r) = @_;
print <
\n";
print "\n";
my $lastyear = $year - 1;
print " < $lastyear \n";
print "Webcam Archives for $year \n";
print "\n";
if($year == $curyear)
{
print " \n";
}
else
{
my $nextyear = $year + 1;
print "$nextyear > \n";
}
print "
$datestring\n";
if(-e "$IMAGEDIR/$year/$day/daytime.mpg")
{
print " \n";
}
if($events{$day} =~ /\w/)
{
print "
$events{$day}\n";
}
else
{
print "
\n";
}
print "
Generated: $date
EOS ; } ### UTIL FUNCTIONS # Return all the days which have image directories and at least one image sub getdays { my ($year) = @_; my @dirs; for(my $date = 0; $date < 367; $date++) { my $day = sprintf("%03d",$date); if(-d "$IMAGEDIR/$year/$day") { opendir(DIR,"$IMAGEDIR/$year/$day"); my @files = readdir(DIR); foreach my $file (@files) { if($file =~ /\d+\.jpg/) { push(@dirs,$day); last; } } } } return @dirs; } # Get the image closest to 1:00 PM (sort of solar noon) sub getnoonimg { my($year,$day) = @_; for(my $delta = 0; $delta < 700; $delta++) { # check for plus/minus delta my $plustime = $day . sprintf("%04d",1300 + $delta) . ".jpg"; my $minustime = $day . sprintf("%04d",1300 - $delta) .".jpg"; print("\n"); return $plustime if(-e "$IMAGEDIR/$year/$day/$plustime"); return $minustime if(-e "$IMAGEDIR/$year/$day/$minustime"); } } # Translate the day and year into a date string sub getdate { my($year,$doy) = @_; use Date::Calc; use DateTime; ($year,$month,$day) = Date::Calc::Add_Delta_Days($year,1,1, $doy - 1); $dt = DateTime->new( year => $year, month => $month, day => $day, time_zone => 'America/Denver' ); my $datestring = $dt->day_name . ", " . $dt->month_name . " " . $dt->day . ", " . $dt->year; return $datestring; } sub parseevents { my($year) = @_; my %events = {}; # open the events file if( open(EVENTS,"$IMAGEDIR/$year/.events") ) { while(