カラクリスタ

「輝かしい青春」なんて失かった人のブログ

Plagger::Plugin::Publish::File

概要: 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 からのオートディスカバリをやってみる。

追記

一部修正。たぶん直ったはず。

FIXME