#!/usr/bin/perl # database settings $dbhost = "localhost"; $dbname = "tivo2podcast"; $dbuser = "tivo2podcast"; $dbpass = "password"; $outputPath = "/usr/local/apache/htdocs/tivo"; ######################################################################### use DBI; use File::stat; $lastid = 0; $dbh1 = DBI->connect( "dbi:mysql:dbname=$dbname", $dbuser, $dbpass ) or die "Cannot connect to database: $DBI::errstr"; $dbh2 = DBI->connect( "dbi:mysql:dbname=$dbname", $dbuser, $dbpass ) or die "Cannot connect to database: $DBI::errstr"; $sth1 = $dbh1->prepare ( "select p.name, p.programid " . "from programs p " . " left join episodes e on p.programid = e.programid " . "where e.grabbed = 't'" ) or die "Cannot prepare open SQL: $DBI::errstr"; $sth1->execute or die "Cannot execute open SQL: $DBI::errstr"; while ( @row1 = $sth1->fetchrow_array ) { $program = $row1[0]; $programid = $row1[1]; if ( $programid != $lastid ) { # because the above select statement will result in multiples $lastid = $programid; print "making $outputPath/" . fsescape( $program ) . ".rss\n"; open( F, ">$outputPath/" . fsescape( $program ) . ".rss" ) or die "Can't open rss file\n"; print F "\n"; print F "\n"; print F " \n"; print F " $program (from TiVo)\n"; print F " http://www.anders.com/\n"; print F " $program (Downloaded by TiVo 2 Podcast)\n"; print F " $program\n"; print F " $program\n"; print F " en\n"; print F " TiVO 2 Podcast\n"; print F " \n"; print F " Anders Brownworth\n"; print F " tivo2podcast-rss\@example.com\n"; print F " \n"; print F " tivo2podcast-rss\@example.com\n"; print F " \n"; print F " http://www.example.com/images/podcast.jpg\n"; print F " $program\n"; print F " http://www.example.com/\n"; print F " \n"; print F " $program\n"; print F " \n"; print F " No\n"; print F " tivo2podcast\n"; print F " 1440\n\n"; $sth2 = $dbh2->prepare ( "select name, airdate, file, datecreated " . "from episodes e " . "where programid = $programid " . " and grabbed = 't'" . "order by datecreated" ) or die "Cannot prepare open SQL: $DBI::errstr"; $sth2->execute or die "Cannot execute open SQL: $DBI::errstr"; while ( @row2 = $sth2->fetchrow_array ) { $episode = $row2[0]; $airdate = $row2[1]; $file = $row2[2]; $datecreated = $row2[3]; if ( $st = stat( "$outputPath/$file" ) ) { my $length = $st->size; print F " \n"; print F " $program: $episode\n"; print F " TiVo 2 Podcast\n"; print F " $program: $episode - $airdate\n"; print F " $episode - $airdate\n"; print F " $program: $episode - $airdate\n"; print F " \n"; print F " http://1.2.3.4/tivo/$file\n"; print F " $datecreated\n"; print F " Entertainment\n"; print F " \n"; print F " No\n"; print F " 30:00\n"; print F " tivo2podcast\n"; print F " \n\n"; } } print F " \n"; print F "\n"; print "done.\n\n"; close( F ); } } sub fsescape { my $text = pop @_; $text =~ s/ /_/g; $text =~ s/\W//g; return $text; }