TimeLineAPI使ってみました / その2 Timtter

もう一つ、Twitterへの投稿をTimeLineに淡々とポストするというアプリも作ってみました。「すべてのプログラムはフィルタである」という、大学時代に感銘を受けた言葉に従って(曲解して)*1TwitterクライアントのProxyとして動作します。

http://homepage3.nifty.com/moro/timtter-0.1.tgz

現時点ではTwitterPodと一緒に使うことを念頭においてますが、http://twitter.com/statuses/friends_timeline.xmlにアクセスし、最新情報を取得するというアプリであれば使えるんじゃないかと思ってます。

下準備

こちらのアーカイブをダウンロードして、任意のところで展開します。使うためのステップは以下のような感じです。
1. sqlite3-rubyをgemでインストールする
2. 設定ファイルを編集する
3. friends情報や一回ポストしたstatusを覚えておくためのDBを作る
4. 起動する
5. Twitterクライアントの設定を変更する

一つずつ順を追って説明します。

sqlite3-rubyをgemでインストールする

これは何も考えず、gem install sqlite3-rubyでOK。ちなみに今回はActiveRecordは使ってません。途中で、使えば良かったと何度も後悔しましたが。

設定ファイルを編集する

展開したアーカイブ中の./timtter.confを編集します。RubyのHashですので、【キー】=>【値】になっています。RSpecのところで説明したのと同じ方法で:timeline_keyと:timeline_idを指定します。

$timtter_conf = {
  :timeline_key => "your timeline key",
  :timeline_id  => Integer(timeline_id),
  :port         => Integer(8080),
  :database     => "./timtter.db",
  :log            => "./timtter.log",
}
friends情報や一回ポストしたstatusを覚えておくためのDBを作る

TimtterではTimeLineの縦軸をトラックレーンのように使ってます。いまは全ユーザを0〜9のどれかの値に適当にプロットしてますが、そのへんの値の設定や、ポストしたstatusを覚えておくためのDBを作ってます。あとTwitterのユーザ画像もキャッシュしてます。

下記のようにコマンドをうって初期化します。Twitterのユーザ名、パスワードを聞かれるので教えてあげてください。ちなみにこのパスワードなんかは保存されないので安心してください。

$ruby ./timtter_proxy.rb --init
Twitter username :your_user_name
Twitter password (not remembered) :your_password
.............

あとcurseを使ってないので、入力したパスワードがそのまま画面に表示されます。ごめんなさい。初期か処理が終わったら^Lとかして画面をクリアすることを推奨します。。。

起動する

ここまで終わればあとは起動するだけです。8080番で起動します。

$ ruby ./timtter_proxy.rb
Twitterクライアントの設定を変更する

最後、TwitterクライアントでこのProxyを使うための設定をします。Preference...でEnable Proxyにチェックを入て、下記の設定をしてください

Server localhost
Port 8080

8080じゃまずいという人は、timtter.confの:portを書き換えてくれればOKです。

サンプル

こんな感じでポストされます。

http://timeline.nifty.com/portal/show/2983

以上、これらアプリでバグを見つけたらmoronatural_at_gmail.comまでよろしくお願いします。自分が便利なので機能拡張もしていきたいと思います。とりあえず、

  • Twitterのstatusの中にURLがあればTimeLineの【できごと】関連URLに入れる
  • Twitterのstatusの中に画像のURLがあれば【できごと】の画像をそっちにする??
  • 表示するユーザとそのレーンをもっといろいろカスタマイズできるようにする

とかはやりたいと思ってます。ということでよろしくお願いします。