Notify::Pizzaネタ、大人気です。びっくり。
わくわくさせてくれるフレームワーク Plagger と、おもしろいことをするための言語 Perl (笑)に多くの人が興味を持つことになってくれたのなら、わざわざ面倒な方法でピザ頼んだかいがあったというものです。
OSCON での miyagawa さんによる Plagger のプレゼン にもネタとしていれてくださるということで、タイミング的にもよかった。外人にわかりやすく寿司じゃなくてピザにしておいてよかったw
実は日本時間で25日のうちに、今サンフランシスコの miyagawa さんが Filter::BreakEntriesToFeeds への config: use_entry_title オプションを反映(plagger:r1143)、また URI::Fetch の UserAgent 固定問題を Ben が 修正してくれました 。
手が早いのは Perl Hacker の美徳。さすがです、and tnx.

これで、Plagger標準の環境で、『Googleで○○と検索すると○○』ができるようになりました!
例えば、
「あとで」で始まる単語を検索すると指定のアドレスにその内容を含んだメールを飛ばす
をしたければ、以下のように Subscription::Config から Publish::Gmail までをつないでやればよい感じです。
global:
# for google search history
user_agent:
agent: Mozilla/5.0
timezone: Asia/Tokyo
log:
level: debug
plugins:
- module: Subscription::Config
config:
feed: https://www.google.com/searchhistory/?output=rss
- module: UserAgent::AuthenRequest
config:
host: www.google.com:443
auth: basic
realm: Google Search History
username: your-google-id
password: your-google-password
- module: Filter::BreakEntriesToFeeds
config:
use_entry_title: 1
- module: Filter::Rule
rule:
- module: Deduped
- expression: $args->{feed}->title =~ /^あとで/
- module: Publish::Gmail
config:
mailto: your-email-address@example.com
mailfrom: plagger@example.com
mailroute:
via: sendmail
IDやPass認証をURLの中に入れず、新しくできたUserAgent::AuthenRequestを使ってみました。
これで、以下のようなメールが届くようになります。

いい感じ。
ちなみに、Publish::Gmail は必ずしも Gmail宛じゃなくてよいです。ここを会社のアドレスにして、『「会社で・・」』というように検索すると・・というのも直感的かと。あ、というか、Filter::Rule 以下を次のようにして、別々に振り分けるのがより実用的かもしれません。
- module: Filter::Rule
rule:
- module: Deduped
- module: Publish::Gmail
rule:
- expression: $args->{feed}->title =~ /^あとで/
config:
mailto: 自宅メール
mailfrom: plagger@example.com
mailroute:
via: sendmail
- module: Publish::Gmail
rule:
- expression: $args->{feed}->title =~ /^会社で/
config:
mailto: 会社メール
mailfrom: plagger@example.com
mailroute:
via: sendmail
Plagger 0.7.9に合わせ修正しました。
0.7.8 未満ではちょっと工夫する必要がありました。$args->{feed}->title が UTF8文字列なのに対し、YAML内の文字がただの UTF8バイトだからです。
以下のようにバイトに合わせるか、
expression: pack('C0A*', $args->{feed}->title) =~ /^はらへった/
UTF8文字列とするか
rule:
- module: Expression
keyword_pattern: "あとで"
expression: |
$args->{feed}->title =~
Encode::decode('utf-8', $self->{keyword_pattern})
する必要がありました。
ただし、これは0.7.9で設定ファイル内の文字をutf8アップグレードするように変更になったため、解消しています。上の例も0.7.9以降用な感じに変えました。
Plagger 0.7.9 is released, with lots of quality improvements and various important fixed to the core, e.g. decode YAML config as UTF-8 by default.