plagger で backtick
plagger のみで backtick れるじゃんと、miyagawaさんにつっこまれたのでやってみた。
まず Plugin::Notify::Stdout を書いた。
package Plagger::Plugin::Notify::Stdout;
use strict;
use warnings;
use base qw/Plagger::Plugin/;
sub register {
my ( $self, $c ) = @_;
$c->register_hook(
$self,
'publish.feed' => \&update,
'publish.finalize' => \&finalize,
);
$self->{count} = 0;
}
sub update {
my ( $self, $c, $args ) = @_;
$self->{count} += $args->{feed}->count if $args->{feed}->count;
}
sub finalize {
my ( $self, $c, $args ) = @_;
if (defined $self->{count}) {
$self->conf->{format}
? printf $self->conf->{format}, $self->{count}
: print $self->{count};
print "\n";
}
}
ので下記のように backtick.yaml を作る
global:
timezone: Asia/Tokyo
log:
level: error
plugins:
- module: Subscription::Config
config:
feed: "https://username:password@mail.google.com/mail/feed/atom/!!Plagger" # !!Plagger はラベル名
- module: Plagger::Plugin::Aggregator::Simple
- module: Notify::Stdout
config:
format: "Plagger(%d) "
で、あとは .screenrc で
backtick 3 0 60 ${HOME}/plagger/plagger -c ${HOME}/.plagger/config/backtick.yaml
とか書いておけば 60 秒ごとに plagger が実行され、hardstatus とか caption とかで %3` とかけばそこにに plagger の出力が出る。
3 ていうのは backtick で指定した最初の数字 (僕がすでに0 1 2とIDを使ってるので3ってこと)