2008/02/24 Sun [長年日記]
TwitterのReplyを監視する
Twitterをやっていると、いつのまにかタイムラインをダラダラ読んでしまうので、基本的にMoodBlast*1でつぶやくだけにしている。
たまにwebからログを見た時に、気付かぬうちに replies を貰ってたりする事がある。気付かぬうちも何も見てないからなんだけど。
それは気になるけどP3とかを使うとこれまたついついタイムラインを読みふけってしまう。という事で、定期的にTwitter API経由でrepliesをポーリングして、変化があったらRuby-Growlを使ってGrowlで通知する様にした。
15分ぐらいで出来るかなと思ったけど、1時間以上もこれを動かすのに費やした。コードは動けば良いのですぐ書き上がるのだけど、OSXでポーリングするあたりで苦戦。launchdの設定がXMLベースでよくわからなかったので、試行錯誤して時間を無駄にしたあげく結局妥協してcronで動かすという最悪の結末。
なんにしても時間取られてますね。
#!/opt/local/bin/ruby -Ku
#$DEBUG = true
$VERBOSE = true
require 'rubygems'
require 'ruby-growl'
require 'open-uri'
require 'rss'
require 'pstore'
module Twitter
AUTH_INFO = ['userid', 'password']
REPLIES = 'http://twitter.com/statuses/replies.rss'
DATABASE = '/Users/bulkitem/twitter/data.txt'
class Status
attr_accessor :uid, :date, :status, :guid
def initialize
@uid = nil
@date = nil
@status = nil
@guid = nil
end
end
class RepliesWatch
def initialize(notifer)
@notifer = notifer
@data = nil
@update = false
end
def load
db = PStore.new(Twitter::DATABASE)
db.transaction do
@data = db['guid']
end
@data = Hash.new if @data.nil?
end
def save
if @update
db = PStore.new(Twitter::DATABASE)
db.transaction do
db['guid'] = @data
end
end
end
def get
open(Twitter::REPLIES, {:http_basic_authentication => Twitter::AUTH_INFO}) do |f|
if f.status == ['200', 'OK']
begin
rss = RSS::Parser::parse(f.read)
rescue RSS::InvalidRSSError
rss = RSS::Parser::parse(f.read, false)
end
tmp = Hash.new
obj = Twitter::Status.new
rss.items.each do |item|
obj.uid, obj.status = item.title.split(': ', 2)
obj.date = item.pubDate
obj.guid = item.guid
unless @data.has_key?(obj.guid.to_s)
@notifer.notify("ruby-growl Notification", obj.uid, obj.status)
@update = true
end
tmp.store(obj.guid.to_s, obj.dup)
end
@data = tmp
end
end
end
end
end
begin
tw = Twitter::RepliesWatch.new(Growl.new('localhost', "ruby-grow", ["ruby-growl Notification"]))
tw.load()
tw.get()
tw.save()
rescue Exception => e
puts e.to_s
end
しかし、なんでRepliesWatchのコンストラクタにGrowlインスタンス渡してるのか意味が分からん設計だなぁ。
*1 投稿用UIだけを持っているクライアント。Twitter以外にもTumblr等のサービスにも一括投稿が出来たりする。私はTwitter投稿用にしか使ってないけど。
さんさん録
最近はこうの史代続きですが。
今回は定年後の男性と、息子家族の生活の話で、退職後妻に先立たれ息子家族と同居する事になった男性が主夫としてやりがいを感じたり、気付きを得たり、感慨に耽ったり、世話を焼いたりする話。
周囲は色々ある物の、家族は平和で*1淡々としている。先立った妻が残した「奥田家の記録」がタイトルさんさん録の由来なんだけど、この生活ノート自体は意外と話に絡んでくる事無くテーマと思われる主夫業もそんなに存在感は無い。やっぱり人間ドラマ中心。
あんまり可愛く無い孫として描かれている乃菜が、個人的には設定に反して愛らしかった。2巻で完結。読みやすくてありがたい。
*1 視点の問題もあるでしょうが。
- [PR] 夜は短し歩けよ乙女 の 森見登美彦
- [PR] 鹿男あをによし の 万城目学



