概要: Feed か Entry の URL の一覧を出力する。
Plagger に登録されたエントリの URL 一覧を出力したい、と言うことで作ってみた。
package Plagger::Plugin::Publish::File; use strict; use warnings; use base qw(Plagger::Plugin); use Array::Uniq qw(uniq); sub init { my $self = shift; $self->SUPER::init(@_); $self->{'url'} = []; } sub register { my ( $self, $c ) = @_; $c->register_hook( $self, 'publish.entry' => $self->can('add'), 'publish.finalize' => $self->can('publish'), ); } sub add { my ( $self, $c, $args ) = @_; if ( $self->conf->{'entry_url'} ) { push @{ $self->{'url'} }, $args->{'entry'}->link; } else { push @{ $self->{'url'} }, $args->{'feed'}->url; } } sub publish { my ( $self, $c ) = @_; my $out = q{}; for my $url ( uniq sort { $a cmp $b } @{ $self->{'url'} } ) { $out .= "$url\n"; } my $path = $self->conf->{'filename'}; $c->log(info => "writing output to $path"); open my $fh, ">:utf8", $path or $c->error("$path: $!"); print $fh $out; close $fh; } 1; __END__
ライセンスは Perl と同等で、設定はこんな感じ。
plugins: - module: Subscription::Config config: feed: http://nyarla.net/blog - module: Publish::File config: entry_url: 1 filename: /path/to/entry_list.txt
設定のentry_url
を真に設定すると Plagger に登録されたすべての エントリ の URL を、
逆に偽に設定すると フィード の URL の一覧を出力する。
SBM からのオートディスカバリをやろうと思ったものの、Plagger のエントリの URL 一覧を 取得できそうなのが見つからなかったため作ってみた次第。 あとこのプラグインで出力したファイルは Subscription::File で購読できると思う。
あとで SBM からのオートディスカバリをやってみる。
追記
一部修正。たぶん直ったはず。