古いentryからDedupedしつつ1件ずつPublishするyaml
「サンプルコードによるPerl入門」を、最初の記事から順にメールで読みたいなあと思って書いてみた。
昨日のPlugin::Expressionを使ってます。
global: ... plugins: - module: Subscription::Config config: feed: http://d.hatena.ne.jp/taraburo/rss2 - module: Expression config: hooks: hook: update.feed.fixup expression: | my ($self, $context, $args) = @_; my $dedup = Plagger::Rule->new({ module => 'Deduped', path => '/path/to/deduped.db', }); my @entries = grep { $dedup->{deduper}->is_new($_); } $args->{feed}->entries; my $last_entry; if (@entries) { $last_entry = pop @entries; $dedup->{deduper}->add($last_entry); $context->log(debug => "deduper add entry: " . $last_entry->title); } $args->{feed}->{entries} = $last_entry ? [ $last_entry ] : []; - module: Publish::Gmail config: ...
こんなんしなくてもPluginとRule組み合わせればもっとスマートにいけるような気がするけど気にしない。
最初はFilter::ReverseとFilter::Ruleでいけるかと思ったんだけどなあ。
- module: Filter::Reverse - module: Filter::Rule rule: - module: RecentN count: 1 - module: Deduped
RecentNで1件に削ってそれをDedupedしてくれるわけじゃないんですね。