Plagger::Plugin::Subscription::Config::File

読了まで:約1分


概要: メタデータが指定できる 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 が書かれたテキストファイルを指定、 metatagはファイルで指定されたすべての URL に適用される。

最近アップしてるプラグインは Plagger でアンテナ作るためだったりする。 具体的には、

  • Subscription::XPath::Config
  • Filter::ForceDate
  • Filter::SortEntries
  • Publish::Template

あたり。

他にも(といっても 2 個ぐらい)アンテナ作るために作ったプラグインはあるんだけど、 コードがちょっと微妙なので公開は多分しない。 まあ、ちょっとした問題に対してアドホックに対処するためのプラグインとかあるし。

っていうかテスト書いてない……。

#FIXME

にゃるら(カラクリスタ)

『輝かしい青春』なんて失かった人。
次に備えて待機中。

今は趣味でプログラミングをして
生活しています。