新しもの好きのダウンロード RSS
車輪?
- Hatena::Rss http://r.hatena.ne.jp/oppara/
- Firefox
#!/path/to/perl use strict; use warnings; use lib( './lib' ); use Encode; use CGI::Carp qw( fatalsToBrowser ); use Data::Dumper; use XML::RSS; use WWW::Atarashimonozuki::Scraper; my $CHARSET = 'utf8'; my $TITLE = '新しもの好きのダウンロード'; my $DESC = 'Mac で使えるフリーソフト(無料ソフト)、フリーウェア、シェアウェア、製品アップデータの新着情報。'; my $RIGHTS = 'Copyright(c) 1996-2007 Atsushi Hayakawa.'; my $o = WWW::Atarashimonozuki::Scraper->new(); my @result = $o->scrape(); my $rss = new XML::RSS( version => '1.0' ); $rss->channel( title => _decode( $TITLE ), link => 'http://mac.page.ne.jp/', description => _decode( $DESC ), dc => { date => $o->{last_modified}, language => 'ja', rights => $RIGHTS, }, ); foreach my $item ( @result ) { $rss->add_item( title => get_title( $item ), link => $item->{url}, description => _decode( $item->{desc} ) . get_byte( $item ), dc => { date => $item->{date}, }, ); } print qq{Content-type: application/xml\n\n}; print $rss->as_string; sub get_title { my $item = shift; my $title = _decode( $item->{name} ); $title .= ' (' . $item->{lang} . ') '; $title .= get_title_desc( $item ); return $title; } sub get_title_desc { my $item = shift; my @desc; push( @desc, '9' ) if $item->{is_os9}; push( @desc, 'X' ) if $item->{is_osx}; push( @desc, 'ppc' ) if $item->{is_ppc}; push( @desc, 'intel' ) if $item->{is_intel}; push( @desc, 'ub' ) if $item->{is_ub}; push( @desc, 'widget' ) if $item->{is_widget}; if ( @desc ) { return '[' . join( ', ', @desc ) . ']'; } return ''; } sub get_byte { my $item = shift; return $item->{byte} ? ' (' . $item->{byte} . ')' : ''; } sub _decode { return decode( $CHARSET, shift ); }