Hatena::ブログ(Diary)

Magical Diary このページをアンテナに追加 RSSフィード

2009年08月05日

Plaggerを使ってフィード情報IRCに投げる

Plaggerを使ってRSS/Atomフィード情報IRCにpostするためにPlaggerを使った。

まずは、Plaggerの設定ファイルYAML記述UTF-8で書いて ~/.plagger/feed-irc.yml に保存する

# ~/.plagger/feed-irc.yml (utf-8で書く)
global:
  assets_path: /usr/local/share/Plagger/assets
plugins:
  - module: Subscription::Config
    config:
      feed:
        - "http://www.example.com/index.rss"
        - "http://www.example.jp/sakura-tan-haahaa.rss"
  - module: Filter::Rule
    rule:
      module: Deduped
      path: "/home/yasu/.plagger/feed-irc.db"
  - module: Notify::IRC
    config:
      nickname: hogebot
      server_host: localhost
      server_port: 6667
      server_password: 
      server_channels:
        - #さくらたんハァハァ
      charset: utf-8
      announce: notice

チャンネル名に日本語を入れると文字化けする*1ので、plagger-ircbot に以下の修正を加える。(英語チャンネル名なら必要ない。)

--- plagger-ircbot.orig	Wed Aug  5 20:28:12 2009
+++ plagger-ircbot	Wed Aug  5 22:17:01 2009
@@ -86,6 +86,7 @@
 {
     my ( $kernel, $heap, $msg ) = @_[ KERNEL, HEAP, ARG0 ];
     eval {
+        utf8::decode($msg);
         for my $channel (@{ $config->{server_channels} }) {
             if ($config->{announce} =~ /action/i) {
                 $kernel->post( bot => ctcp => $channel, "ACTION $msg");

Plagger-ircbotをバックグラウンドで起動して、plagger を実行してやればOK。実際はCronから起動することになるだろう。なお、module: Deduped を使っているので、一度処理したURLは次回起動時には処理されない。(これを忘れるとえらいことになる。)

% plagger-ircbot -c ~/.plagger/feed-irc.yml &
% plagger -c ~/.plagger/feed-irc.yml

初回起動時はフィードに含まれるすべてのURLをpostするので注意。Tracのtimelineをpostする場合は、max=50 (デフォルト) ではなく、max=5 程度に設定しておくのが良いだろう。

*1:設定ファイルYAML が読み込む際には、utf-8フラグを付けているが、update 関数に渡されるメッセージはなぜかutf-8フラグが付いていないので、それらの文字列を結合した際に文字化けが発生する。

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

トラックバック - http://d.hatena.ne.jp/hirata_yasuyuki/20090805/plagger