MSN Messengerに送るプラグインって無いのかな?というわけでちょっと書いてみた。
- 別に見なくてもいいけど気になる
- ログに残さなくて良い
- がんがん更新される
というFeedがあって、そのエントリはメッセンジャーに送れるといいなあと思ったのです。探してみたけど上手く見つからず。
お知らせとか
- タイムアウト処理を実装しました。
- ウェイトを実装しました。一気にメッセージが送られてくるとメッセンジャーがしばらく固まってしまうので、メッセージの間隔を指定できるようにしました。
- 文字化け直しました。適当にやり過ぎた。。。処理中はutf8フラグを付けたままにしておいて、最終的に出力するときにencodeするようにしようね。お兄さんとの約束だぞ(*^ー゚)b
- hookをちょっと真面目に使いました。Publish::Debugをコピって作っていたので、Feedが複数個あると複数回ログインするようになっていました。この修正で、複数個Feedがあっても1回しかログインしないようになりました。(それでも新着エントリがある度にログインするので、plagger-ircbotのようなものを作った方が良いと思います)
- 途中で終了できるようにしました。"quit","exit","die","bye"のいずれかのメッセージを送信すると途中で終了させることができます。工夫すれば対話的に操作できますね。
- Google Code Archive - Long-term storage for Google Code Project Hosting.に置かせていただきました。(id:Seacolorさんありがとうございました。)よってソース置き場をこのエントリからGoogleCodeに移動しました→MSN.pm
- configの「wait」を「interval」に変えました。
Net::MSN
POE::Component::Client::MSNが上手く動かない。というかPOE::Component::Client::HTTPが壊れてるっぽい。
なのでNet::MSNにしてみました。
- 何故かLiveMessenger相手ではNLNとかILNとかが来ないのでNet::MSNに動的にパッチを当ててます(BEGINブロックの( $cmd eq 'LST' )のところ)。オンラインかオフラインか分からないのでちょっと困った感じ。
- LSTの終わりが分からんのでQNGを独自に拾っています(BEGINブロックの( $cmd eq 'QNG' )のところ)。※QNGはLSTの終わりではないけど、これで取り敢えずは上手く行くので。
- リンクのアンカーを貼ったりするには、Net::MSN::SB#sendmsgにパッチ当ててtext/htmlにしないといけないかもです。
config.yaml
--- plugins: - module: Subscription::Config config: feed: - url: http://d.hatena.ne.jp/holidays-l/ - module: Filter::Rule rule: module: Deduped - module: Summary::Auto - module: Publish::MSN config: email: 通知して欲しいアカウント bot: email: ボットのアカウント password: ボットのパスワード timeout: 60 interval: 3