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

概要: メタデータが指定できる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

nyarla が大体

Scrapbox でコメントや意見を書く