メタデータが指定できる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個ぐらい)アンテナ作るために作ったプラグインはあるんだけど、 コードがちょっと微妙なので公開は多分しない。 まあ、ちょっとした問題に対してアドホックに対処するためのプラグインとかあるし。
っていうかテスト書いてない……。