#!/usr/local/bin/perl
require "weblib.lib";
use Time::Local;
use POSIX "strftime";
$homedir="/home/todd";
require "$homedir/toddweb.env";
$today=time;
$date=strftime("%A, %B %d, %Y %r %Z",localtime($today));
&getparams;
$param{days}=30 unless $param{days};
$|=1;
$style="http://TRConnection.com/trc/trc.css";
print "Content-type: text/xml\n\n";
print <<EOF;
<?xml version="1.0" ?>
<rss version="0.92">
<channel>
<title>The Todd Rundgren Connection News Flash</title>
<link>http://TRConnection.com</link>
<description>All the latest news on Todd Rundgren</description>
<lastBuildDate>$date</lastBuildDate>
<language>en-us</language>
<image>
<title>The Todd Rundgren Connection</title>
<url>http://TRConnection.com/trc/pictures/trc.png</url>
<link>http://TRConnection.com/</link>
<width>97</width>
<height>77</height>
</image>
EOF
$param{days}*=86400;
open(TRCONN,"$homedir/trconn.dat");
while(<TRCONN>){
	chop;
	last if /^EOD$/;
	($section,$articles)=split(/\t/);
	@articles=split(/,/,$articles);
	push(@list,map{$_,$section}@articles);
}
close(TRCONN);
%list=@list;
$artdir="/home/todd/articles";
chdir($artdir);
open(INDEX,"index");
while(<INDEX>){
	chop;
	($article,$title)=split(/:/,$_,2);
	#print "<item>\n<title>$article: $title</title>>\n";
	open(ART,$article);
	$_=join("",<ART>);
	while(/<new/){
		if(s#<new (\d+) expires=(\d+)>(.*?)</new>##s){
			$article{$1,$article}=$3;
			$expires{$1,$article}=$2;
			$title{$1,$article}=$title;
		}
		elsif(s#<new (\d+)>(.*?)</new>##s){
			$article{$1,$article}=$2;
			$title{$1,$article}=$title;
		}
		elsif(s#<new(.*?)</new>##s){
	#		print "<font color=RED>ERROR</font>$1<hr>";
		}
	}
	close(ART);
}
close(INDEX);
foreach $key(reverse sort keys %article){
	($time,$article)=split(/$;/,$key);
	if(length($time) == 12){
		($year,$month,$day,$hour,$minute)=unpack("a4 a2 a2 a2 a2",$time);
		$time=timelocal(0,$minute,$hour,$day,$month-1,$year-1900);
		last if $time < $today-$param{days};
		$time=POSIX::strftime("%A, %B %e, %Y %l:%M %p %Z",localtime($time));
	}
	else{
		($year,$month,$day)=unpack("a4 a2 a2",$time);
		$time=timelocal(0,0,12,$day,$month-1,$year-1900);
		last if $time < $today-$param{days};
		$time=POSIX::strftime("%A, %B %e, %Y",localtime($time));
	}
	print "<item>\n<title>Article updated: $title{$key}</title>\n";
	print "<link>http://TRConnection.com/todd/trconn/$list{$article}#$article</link>\n";
	print "<description>";
	print qq{&lt;img src="http://TRConnection.com/trc/pictures/trc.png"&gt;};
	print "&lt;br&gt;Updated: $time&lt;hr&gt;";
	if($table=$art=~/<tr/){print "&lt;table&gt;";}
	$art=~s/&/&amp;/g;
	($art=$article{$key})=~s/</&lt;/g;
	$art=~s#href=/#href=http://TRConnection.com/#g;
	$art=~s/>/&gt;/g;
	print $art;
	print "&lt;/table&gt;" if $table;
	print "</description>\n";
	print "</item>\n";
}
&latestReviews;
foreach $days(14,30,90,365){
	print <<EOF;
<item>
<link>http://TRConnection.com/news/days=$days</link>
<title>All items updated in last $days days</title>
</item>
EOF
}
print "</channel>\n</rss>\n";
sub latestReviews{
	$REVIEWDIR="/home/todd/www/reviews";
	opendir(DIR,$REVIEWDIR);
	local(@DIR)=grep !/^\./,readdir DIR;
	foreach $dir(@DIR){
		next unless -d "$REVIEWDIR/$dir";
		chdir "$REVIEWDIR/$dir";
		opendir(REV,".");
		@files=grep /\.rev$/,readdir REV;
		foreach $file(@files){
			if(-M $file <= 14){
				print "<item>\n";
				open(FILE,$file);
				print "<description>";
				while(<FILE>){
					last if /^$/;
					s/&/&amp;/g;
					s/</&lt;/g;
					s/>/&gt;/g;
					($title)=/^Title: (.*)/ if /^Title: /;
					($author)=/^Author: (.*)/ if /^Author: /;
					print "$_&lt;br&gt;";
				}
				print "</description>\n";
				print qq{<title>Review: $title by $author</title>\n};
				print qq{<link>http://TRConnection.com/todd/review/$dir/$file</link>\n};
				print "</item>\n";
			}
		}
	}
}
