rssを生成するスクリプト。
ほぼ頂き物そのままで、順番をいじっただけに近い(^^;
まずはテンプレート
<HTML> [% ... %] <TITLE>[% title %]</TITLE> [% ... %] <li><em>Date</em>: [% doc %]</li> [% ... %]
perlスクリプトの方。
元の作者に敬意を表して、ttrss-multi.plと名付けた。
#!/usr/bin/perl # ttrss-multi.pl - Generate feed from a site which is grabbable with Template::Extract. # # usage: perl ttrss-multi.pl example.tt http://www.example.com/ http://www.dada.com/ # # 2004.01.11 Naoya Ito# 2004.10.17 Hisaki Shibata use strict; use warnings; use LWP::Simple; use Template::Extract; use XML::RSS; use FileHandle; use URI; #if (@ARGV < 2) { # print STDERR "usage: $0 <template> <url> [<url>]\n"; # exit(1); #} eval { local $/; # read from file at once my $fh = FileHandle->new( shift ) or die "cannot open template: $!"; my $template = $fh->getline; $fh->close; my $obj = Template::Extract->new; my $rss = XML::RSS->new; $rss->channel( title => "search luky.org rss service.", link => "http://search.luky.org/index.rdf", description => "search.luky.org Linux related New coming ML posts."); my $count = @ARGV ; print STDERR $count; while($count--){ my $uri = URI->new( shift ); my $document = LWP::Simple::get($uri); my $ext = $obj->extract( $template, $document); $rss->add_item( title => $ext->{title}, link => URI->new_abs($ext->{link}, $uri), description => $ext->{doc}, ); }; print $rss->as_string; }; if (my $err = $@) { die; }
上記のスクリプトをshellでくるんで
perl /hoge/ttrss-multi.pl /hoge/mhonarc.tt `cat /hoge/rdfargs.txt|xargs` > /hogehoge/index.rdfみたいな感じで動かす。