Mythweb-rss.pl
From MythTV Official Wiki
Author | roach |
Description | A perl script to provide a RSS source for recorded programs, allowing integration on some media players. |
Supports |
This is a quick RSS source plugin / extender for mythweb.
Source code
#!/usr/bin/perl -w # # Provides RSS for recorded programs. # # @url $URL$ # @date $Date$ # @version $Revision$ # @author $Author$ # @license GPL # # Install : put in the same directory as mythweb.pl, read below about config.xml # Includes # requires Net::UPnP::QueryResponse # requires .mythtv/config.xml for the uid of the web server. use DBI; use MythTV; use CGI qw/:standard/; use XML::RSS; use DateTime; # Connect to mythbackend my $Myth = new MythTV({'connect' => 0}); # Connect to the database $dbh = $Myth->{'dbh'}; # set url my $mythweburl = "http://".$ENV{'SERVER_NAME'}; my $mythicon = $mythweburl."skins/default/img/tv.png"; # execute my $sth = $dbh->prepare('SELECT chanid,UNIX_TIMESTAMP(starttime),title,description,basename,hostname FROM recorded ORDER BY starttime DESC LIMIT 100') or die "Couldn't prepare statement: " . $dbh->errstr; $sth->execute(); my $rss = new XML::RSS (version => '2.0'); my $rowcounter = 0; while (@data = $sth->fetchrow_array()) { my $chanid = $data[0]; my $starttimets = $data[1]; my $title = $data[2]; my $description = $data[3]; my $basename = $data[4]; my $hostname = $data[5]; my $link = $mythweburl."/pl/stream/".$chanid."/".$starttimets.".asx"; # dont know my $thumb = $mythweburl."/tv/get_pixmap/".$hostname."/".$chanid."/".$starttimets."/100/56/-1/".$basename.".100x56x-1.png"; # post date $dt = DateTime->from_epoch( epoch => $starttimets ); $postdate = $dt->day_abbr.", ".$dt->day." ".$dt->month_abbr." ".$dt->year." ".$dt->hms." ".$dt->time_zone_short_name; $rss->add_item( title => "$title", link => "$link", description => "$description", enclosure => { url => "$thumb", type => "image/png", }, pubDate => "$postdate", guid => "$basename", ); # no examples of just pulling the first row from teh array in dbi so $rowcounter ++; if ($rowcounter == 1) { $dt = DateTime->from_epoch( epoch => $starttimets ); $rssdate = $dt->datetime(); }; }; $sth->finish; $dbh->disconnect; $rss->channel( title => "mythweb", link => "$mythweburl", description => "Most recent mythtv recordings", dc => { date => "$rssdate", subject => "MythTV Recordings", creator => 'your@email.here', publisher => 'your@email.here', language => 'en-us', }, syn => { updatePeriod => "hourly", updateFrequency => "1", updateBase => "1901-01-01T00:00+00:00", } ); $rss->image( title => "MythWeb RSS", url => "$mythicon", link => "$mythweburl", dc => { creator => "MythTV", }, ); print CGI->header('text/xml'); print $rss->as_string