PlaggerでRSS to RSSフィルタを作る
この日記のサイドバーに表示している「最近のブックマーク」「最近の被ブックマークコメント」は表示を調整するためにCGIでRSSを整形している(ref. ヒビノキロク - サイドバーのブックマーク)。これを試しにPlaggerを使ってやってみたら、とても簡単にできた。
- 最近のブックマーク用
package Plagger::Plugin::Filter::HatenaBookmark; use strict; use base qw( Plagger::Plugin ); sub register { my($self, $context) = @_; $context->register_hook( $self, 'update.entry.fixup' => \&filter, ); } sub filter { my($self, $context, $args) = @_; my $summary = $args->{entry}->{summary}; my $tags = $args->{entry}->{tags}; my $body = join('', map { "[$_]" } @{$tags}) . $summary; $args->{entry}->{body} = Plagger::Text->new(type => 'text', data => $body); } 1;
plugins: - module: Subscription::Config config: feed: - url: http://b.hatena.ne.jp/nozom/rss - module: Filter::HatenaBookmark - module: Publish::Feed config: format: RSS dir: /var/www/html/ filename: recent-bookmark.rss
- 最近の被ブックマークコメント用
package Plagger::Plugin::Filter::HatenaBookmarkComment; use strict; use base qw( Plagger::Plugin ); sub register { my($self, $context) = @_; $context->register_hook( $self, 'update.entry.fixup' => \&filter, ); } sub filter { my($self, $context, $args) = @_; my $summary = $args->{entry}->{summary}; my $tags = $args->{entry}->{tags}; my $id = $args->{entry}->{author}; my $body = join('', map { "[$_]" } @{$tags}) . $summary . ' by id:' . $id; $args->{entry}->{body} = Plagger::Text->new(type => 'text', data => $body); } 1;
plugins: - module: Subscription::Config config: feed: - url: http://b.hatena.ne.jp/bookmarklist?mode=rss&url=http://d.hatena.ne.jp/nozom/ - module: Filter::HatenaBookmarkComment - module: Publish::Feed config: format: RSS dir: /var/www/html/ filename: recent-bookmarked.rss
モジュール名はあまりいい名前が思いつかなかったので適当。