hitode909の日記

以前はプログラミング日記でしたが、今は子育て日記です

最近のTemtterプラグイン

最近プラグインを作ったりしてTermtterが便利になってきたので,ご紹介です.

Gemにはまだ入っていません

最近作ったプラグインなので,gem termtterには,まだ入っていません.GithubのTermtterをcloneしてbin/termtterを使うと,今回紹介するプラグインが使えます.
https://github.com/jugyo/termtter

UserStream受信する

Termtterはデフォルトでは定期的にタイムラインを取得しに行くが,user_streamプラグインを利用すると,UserStreamを受信できます.
favoriteされた,followされた,statusをdeleteした,listに追加されたり外されたりした,といったイベントも流れてきて便利です.
Termtterはデフォルトでは定期的にタイムラインを取得しに行くので,1分くらいは何か入力したりすることができますが,UserStreamで1秒ごとに何か流れてくると,日本語を打ったりするのが不便です.そこで,TermtterをIRCサーバーにして,IRCクライアントから利用すると便利です.

IRCサーバーにする

irc_gwプラグインを使うと,TermtterがIRCサーバーになります.#termtterチャンネルからTermtterの全ての機能を利用できます.gem net-ircが必要です.
デフォルトで16669番をlistenします.ポートはconfigで変更できます.

config.plugins.irc_gw.port = 6669

パスワードで認証とかはしないので,Termtterをサーバーで動かして外部に公開等する際はtiarra等を使うとよいです.


発言するには,普通にIRCに発言するようにします.

こんにちは

コマンドを実行するには,/つきでコマンドを入力します.

/search テスト

コマンド: の形式でもコマンドを実行できます.MacのLimeChatでは,コマンドを途中まで入力してタブを押すと,補完されて,この形になります.

search: テスト


iPhoneのLimeChatから利用すると便利で,evalコマンドを使うと,iPhoneからRubyのコードを実行することができます.
例えば,以下のようにして,現在時刻を知ることができます.iPhoneからRubyのコードを実行して現在時刻を知ることができ,大変便利です.

> eval Time.now
=> 2011-02-13 13:50:22 +0900

MacのLimeChatとiPhoneのLimeChatで動作確認しています.

短縮URLを展開してタイトルをつける

Termtterには短縮URLを展開するプラグインが4種類あります.
appendtitleプラグインを使うと,短縮URLを展開して,ページのタイトルを追加することができます.

例えば,以下のbit.lyのURLが貼られたツイートが,

便利なウェブサービスです http://bit.ly/fHJ1N9

以下のように,bit.lyが展開され,リンク先のページのタイトルを含むツイートになります.

便利なウェブサービスです http://b.hatena.ne.jp/ (はてなブックマーク)

bit.lyのリンクを片っ端から開いていく必要がなくなり,便利です.

MongoDBにログを貯める

mongoプラグインを使うと,UserStreamで受信したタイムラインやイベントをMongoDBに保存することができます.
ローカルにMongoDBが動いていて,gem mongoが必要です.
mongoプラグインを使うと,MongoDBを用いたコマンドが定義されます.

mongo_favsコマンド

mongo_favsコマンドを使うと,MongoDBのログからfavstarみたいなのを生成できます.以下のように,自分の発言のうち,最近favoriteされたり,RTされたりしたものを表示します.

> mongo_favs
(中略)
fav(12) fuba, nknh, seiichirou2, nomolk, riko, todesking, cale_dat, romanticanti, gotical, hanazulu, sinenai, herrenmoral RT(4) fuba, mori_dev, todesking, cale_dat 努力温泉芸者っていうバンドやりたい
fav(1) tily gem easy_mplayer,かっこいいしよくできてるけど,pauseするとunpauseできない,irbでMPlayerのインスタンスを評価すると勝手に再生されるfav(1) siyo さらなる「#!」URL批判 - karasuyamatenguの日記 http://htn.to/abMK5v
fav(1) cxx BBT2公開されたら使おうと思いながら2年くらい経ってる
RT(1) technolize 人肉のレシピ 1品 [クックパッド] 簡単おいしいみんなのレシピが92万品 http://htn.to/eHouJh

favstarを見に行く必要がなくなり,便利です.

mongo_searchコマンド

mongo_searchコマンドで,MongoDBからツイートを検索できます.
データベースを全文検索できるので,Twitterの検索APIにはインデックスが作られないようなキーワードでも検索でき,便利です.


また,受信したログが全て保存されているので,他のアプリケーションからデータを利用でき,役立ちます.

リプライをim.kayacに通知する

im_kayacプラグインを使うと,リプライを受信した瞬間にim.kayacに通知できます.設定したキーワードを受信もできます.
iPhoneLimeChatはバックグラウンド実行していると,自動的に10分ほどで接続が切れるので,このように通知が来るのは便利です.
gem im-kayacが必要です.

readlineがないとおかしくなる

readlineがないと,おかしくなることがります.readlineがないと,Readline.readlineがスレッドコンテキストの切り替えをブロックして,タイムラインが流れてこず,エンターキーを連打すると少し流れてくる,といった状態になります.
rvmを利用している場合は,rvmがreadlineのパッケージを管理しているので,それを利用するとよいです.
こんな感じです.

rvm package install readline
rvm install 1.9.2 -C --with-readline-dir=$HOME/.rvm/usr
rvm install 1.8.7 -C --with-readline-dir=$HOME/.rvm/usr


readlineが入っているかどうかは,irbを起動して,C-rを入力します.

(reverse-i-search)`':

と表示されれば,readlineが入っています.

termtter configです

ぼくのtermtter configです.上に述べたプラグインを読み込んで,細かい設定をしています.

config.token_file = "~/.termtter/token"

# 発言する際に確認を求めない
config.confirm = false
# 標準出力に色をつけない
config.plugins.stdout.colors = [0]
# デフォルトでは開発者が発言すると赤く光るが,色をつけたくないので,抑制する
config.plugins.stdout.sweet_color = 0

# プラグインをロード
Termtter::Client.init do |t|
  t.plug 'irc_gw'
  t.plug 'user_stream'
  t.plug 'appendtitle'
  t.plug 'mongo'
end


Termtterは便利ですが,便利なプラグインが200個くらいあって,何がどういう機能を持っていて,どれがメンテナンスされているのか全く分からないので,ほしい機能は自作すると良いです.