»
S
I
D
E
B
A
R
«
IRCのメッセージをQuartzComposerに表示
June 17th, 2007 by mootoh

SocketReaderPatchの応用例として、IRCで流れるメッセージを、QuartzComposerに表示させてみました。

qcbot

ScreenCast (QuickTime)

ダウンロード

qc.rb

インストール

  • rbot を Rubygem などでインストールする
  • インストールしたrbotのディレクトリ (Rubygemの場合は /opt/local/lib/ruby/gems/1.8/gems/rbot-0.9.10) の /data/rbot/plugins/ に、qc.rb をコピーする

つかいかた

  • SocketReaderPatch を使うQuartzComposerのCompositionを開いておく (サーバ側のSocketをlistenしておく)
  • 適当なサーバ、チャンネルにrbotを常駐させる (rbotのマニュアルを参照)

これで、QuartzComposerにIRCのログが表示されるようになります。

コード

たったこれだけ。

    require 'kconv'
 
    class QCPlugin < Plugin
      PORT = 12345
 
      def initialize
        super
        @sock = TCPSocket.new('localhost', PORT)
      end
 
      def listen(m)
        return unless m.kind_of?(PrivMessage)
 
        @sock.print Kconv.toutf8(m.message)
      end
 
      def help(plugin, topic="")
        "QuartzCompositor from IRC log"
      end
 
      def privmsg(m)
        #puts m.message
      end
    end
    plugin = QCPlugin.new
    plugin.register("qc")

その他

元々は、Ruby会議2日目に思いついたネタだったので、かれこれ1週間たってしまいました。長かった。 RubyCococaでやろうとか、dRubyだとか何かと野心的にアプローチをとってみたのですが、けっきょくはSocketでごりごり書くというオーソドックスなスタイルに。

それにしても、SocketReaderPatchをつくるときにもqc.rbのときにも、オブジェクト指向の生産性の高さを実感しました。 既存の振舞いをほんの少しカスタマイズしたいときの継承の威力というか。


Leave a Reply

»  Substance: WordPress   »  Style: Ahren Ahimsa