ã¦ã§ãä¸ã§é²è¦§ã§ããRSSãªã¼ããDIYãã¦ã¿ãã
ãæãªã®ã§ã¦ã§ãä¸ã§é²è¦§ã§ããRSSãªã¼ããDIYãã¦ã¿ãã
ãhttp://heiligzwei.s317.xrea.com/antena.html
ããããã¯ã¦ãªRSSã§ããããããã¨è¨ããããã ããæGigazineã®ãã¨ã1æéæ¯ã«è¨äºãæ´æ°ãããµã¤ãã«ç»é¢ãå é ãããã¨é常ã«ãã£ã¨ãããã®ã§ãåã¨ãã¦ã¯ãã£ã¼ãæ¯ã«æå¤§è¡¨ç¤ºä»¶æ°ãè¨å®ã§ããªãã¨ã¤ã¤ã³ãªã®ã§ããã
ãã¨ããããã§ãXML::FeedPP(http://www.kawa.net/works/perl/feedpp/feedpp.html)ã¨ããã¢ã¸ã¥ã¼ã«ã使ã£ã¦perlã§RSSãªã¼ããä½ã£ã¦ã¿ãã®ã ãã10ãµã¤ããããç»é²ããæç¹ã§é常ã«åä½ãéããªããã¤ã©ã¤ã©ã
ãããã§jQueryæå
¥ã
ã表示ã®é
ãã«ãã´ãªã¯Now Loadingãã¦ãããã®ã§ããªãã¤ã©ã¤ã©æã¯åæ¸ã§ããã¨æãã
ããã¨FeedPPã¯ãã£ã¼ãã®å½¢å¼(RSS0.9ã1.0ã2.0ãAtomãªã©)ãå¤å¥ãã¦èªåçã«è§£éãã¦ãããç¹ã§XML::RSSããé¥ãã«ä¾¿å©ãªã®ã ããããã¤ãã®ãã£ã¼ãã¯ãã¼ã¹ã§ããªãæ§ã§ãããDesignWalkerããã®http://feeds.feedburner.jp/designwalkerã¿ããã«contenté¨åãé·ãã¨ãã¿ã°ãå¤ãã¨ããããã£ã¼ããèªã¿è¾¼ããªãã®ããªãã¨æãã
ãantena.cgiã®ã½ã¼ã¹é¨åã¯ãããªæãã
#!/usr/bin/perl use strict; use lib qw(../cpan); use LWP::Simple; use Time::Local; use XML::FeedPP; use CGI; my $query = new CGI; print <<EOM; Content-type: text/html <html> <body> EOM my $words = $query->param('words'); $words =~ tr/,/|/; my @urls = split(",", $query->param('url')); my @outputs; my $i = 0; foreach my $url (@urls){ my $i2 = 0; ($url, my $limit) = split("&", $url); my $feed = XML::FeedPP->new($url); my $date; my $modified; foreach my $item ($feed->get_item()){ my $flag = 0; if ($item->title() =~ /$words/ || !$words){ $flag = 1; } my $category; if (ref($item->category()) eq 'ARRAY'){ foreach my $cat (@{$item->category()}){ if(ref($cat) eq 'HASH'){ $category = $category.value(%$cat); }else{ $category = $category.$cat; } } }else{ $category = $item->category(); } if ($category =~ /$words/){ $flag = 1; } if ($item->pubDate() =~ /(\d{4})-0?(\d{1,2})-0?(\d{1,2})T(\d{2}):(\d{2}):(\d{2}).+/){ $modified = timelocal($6, $5, $4, $3, $2 - 1, $1); $date = "$2æ$3æ¥ $4:$5"; }elsif ($item->pubDate() =~ /(\d{4})-0?(\d{1,2})-0?(\d{1,2})/){ $modified = timelocal(0, 0, 0, $3, $2 - 1, $1); $date = "$2æ$3æ¥"; }else{ $modified = time; } my $expiredate = time - ($query->param('expire') * 86400); if ($expiredate > $modified){ $flag = 0; } if ($limit && $i2 > $limit - 1){ $flag = 0; } if ($flag == 0){ next;} $outputs[$i][0] = $item->link(); $outputs[$i][1] = $item->title(); $outputs[$i][2] = $feed->link(); $outputs[$i][3] = $feed->title(); $outputs[$i][4] = $date; $outputs[$i][5] = $modified; $i++; $i2++ } } @outputs = sort {$b->[5] <=> $a->[5]} @outputs; my $j = 0; for my $output(@outputs){ print <<EOM; <div class="headline"><a class="headline" href="@$output[0]" target="_blank">@$output[1]</a></div> <div><a class="site" href="@$output[2]" target="_blank"><span class="site">@$output[3]</span></a> ã<span class="date">@$output[4]</span></div> EOM if($j == $query->param('count') - 1){last;} $j++; } print <<EOM; </body> </html> EOM