Twitterのログ保存用に TweetIrcGateway (TwitterIrcGateway) のスクリプト書いてみた。

きっかけ


Twitterのログ

Twitterは、本家自体が遡れるTweet数が限られてるので、過去の発言をたどり難い。
そのため、掲示板やらでよくある「過去ログを見ろ」という文化はない。
これとゆるい関係によって、同じような質問を何度してもうるさく言われることが少ないだろう。


でも、過去の有益な情報を探したいこともある。
Googleリアルタイム検索あれば、誰がどんな感じのことを言ったかで
検索することもできたのだが、Googleリアルタイム検索はなくなってしまった。
24時間以内ならYahooのリアルタイム検索で探すこともできる。


どちらも、制約があるので、途中までしか遡れない


特に、ちょっと2〜3日前の勉強会をまとめようとしたり、それ関連で
2〜3週間前のTweetを探して、ブログにまとめようとするときには困る。


なので、ログ機能が欲しい場合もある。
Twilog、Twieveなどのサービスは自分の発言とRT、Favしか保存できない。


Twitterクライアントも、ログ機能をもってるものが少ない。
Tweenも手動で保存はできるけど、保存しないとダメだ。


TweetIrcGateway (TwitterIrcGateway) と LimeChat2 で対応

そこで TweetIrcGateway (TwitterIrcGateway)IRCクライアントの LimeChat を併用して使っている。
これで、起動してる限りのTweetは保存できるようになっている。

機能拡張。

それでも、過去のTweetをブログに載せようとすると、ググッても引っかからずに
TweetのStatusIDが分からないこともある。
TweetIrcGateway (TwitterIrcGateway)には、Ruby、または、Python拡張機能が書けるようになっている。


なので、Rubyで書いて対応してみた。(Javaも使えれば、Groovyも使えるんだけどな。。。)


機能仕様

Tweetの内容 (TIG用のTypableMapKey) [StatusID:XXXXXXX]  

後ろにStatusIDを追加することができる。

(orange_clover) [Groovy]エピソード満載なGroovyポロシャツをもう一度制作しよう http://t.co/6k5rQXX3 (vige) [StatusID:117787284002181120]

ソース

  • add_statusid.rb
  • 内容
#!/usr/bin/env ruby

Session.pre_send_message_timeline_status do |sender, e|
  e.text = e.text + " [StatusID:" +  e.status.id.to_s + "]"
end

設定

  1. 「C:\Program Files\TwitterIrcGateway\Bin\Configs\{Twitter ユーザー名}\scripts\add_statusid.rb」 にコピー
  2. #Cosoleに移動
  3. #Cosole で DLR を実行
  4. #Cosole reload を実行(スクリプトが読み込まれるはず)

古いTweetを拾えるかのテスト

Javaはガベージコレクションの関係でVMwareなどの仮想化と相性がわるいらしいから


Togetterでも、つぶやきを読み込むで


URLを指定すれば、読み込めた。

http://twitter.com/lumin/status/17243259501
http://twitter.com/orange_clover/status/17243780286
http://twitter.com/lumin/status/17244007246
http://twitter.com/smzksts/status/17244753787
http://twitter.com/lumin/status/17245198724
http://twitter.com/lumin/status/17245198724
http://twitter.com/lumin/status/17245333082

上のTweetは、1年以上前のものだから、が3000tweetを超えてるとお思うけど。。。

[twitter:@nightmare_tim]
コメントでもらったやりたいことと上の記事の内容があってる?




合わせて仮想化とGCの相性について、現在どうなってるか
教えてくれたらありがたい。