概要: メタデータが指定できる Subscription::File
Plagger で Web アンテナ作るのに一行一 URL のファイルで購読サイトを管理するのが便利なので、 Subscription::File 使ってたんだけど、メタデータ付加できないよー、と言うことで適当にでっち上げた。
package Plagger::Plugin::Subscription::Config::File;
use strict;
use warnings;
use base qw( Plagger::Plugin::Subscription::Config );
sub load {
my ( $self, $context ) = @_;
my $uri = URI->new( $self->conf->{file} )
or $context->error("config 'file' is missing");
$uri->scheme('file') unless $uri->scheme;
my @urls= ();
for ( split /\n/, Plagger::Util::load_uri($uri)) {
s/\#.*//;
next if /^\s*$/;
push @urls, $_;
}
my $feeds = [];
for my $url ( @urls ) {
my $data = {};
$data->{'url'} = $url;
$data->{'meta'} = $self->conf->{'meta'};
$data->{'tag'} = $self->conf->{'tag'};
push @{ $feeds }, $data;
}
$self->conf->{'feed'} = $feeds;
shift @_;
$self->SUPER::load( @_ );
}
1;
__END__
Subscription::File の改変物なので、ライセンスは Subscription::File と同じく Perl のライセンスで。
設定はこんな感じ
plugins:
- module: Subscription::Config::File
config:
file: /path/to/uri/list.txt
meta:
name: value
tag:
- foo
- bar
- baz
file
には一行一 URL が書かれたテキストファイルを指定、
meta
とtag
はファイルで指定されたすべての URL に適用される。
最近アップしてるプラグインは Plagger でアンテナ作るためだったりする。 具体的には、
- Subscription::XPath::Config
- Filter::ForceDate
- Filter::SortEntries
- Publish::Template
あたり。
他にも(といっても 2 個ぐらい)アンテナ作るために作ったプラグインはあるんだけど、 コードがちょっと微妙なので公開は多分しない。 まあ、ちょっとした問題に対してアドホックに対処するためのプラグインとかあるし。
っていうかテスト書いてない……。
#FIXME