GrowlでTwitter
今までTwitterrificを使ってたんだけど、うっとおしくなってきたので、ターミナルでTwitterを表示するスクリプトを作りました。やっぱターミナルだよね。
下記のページを参考というかほぼパクらしていただきました。ありがとうございました。
ターミナルにTwitterのメッセージが流れます。GrowlでTwitterが読めます。
#!/usr/bin/env ruby require 'net/http' require 'kconv' require 'json' require 'base64' require File.join(File.dirname(__FILE__), 'Growl') class Twitterminal def initialize(user, pass) @notifier = register Net::HTTP.version_1_2 @req = Net::HTTP::Get.new("/statuses/friends_timeline.json") @req.basic_auth user,pass end def register #アイコンに使うNSImageを生成 icon = icon=OSX::NSImage.alloc.initWithContentsOfFile( File.join(File.dirname(__FILE__), 'app.icns')) #GrowlNotifierを生成 notifier = GrowlNotifier.new('Twitter', ['new Message'], nil, icon) #登録実行 notifier.register notifier end def crowl trap("SIGINT") { exit! 0 } trap("SIGHUP") { exit! 0 } trap("SIGTERM") { exit! 0 } prev = Time.at(0) while true show(prev); prev = Time.now sleep(30) end end def show(prev) json = Net::HTTP.start('twitter.com',80) {|http| http.request(@req).body } JSON.parse(json).reverse.each do |st| created_at = Time.parse(st['created_at']) next if (created_at - prev) < 0 puts "-----" puts "#{st['user']['screen_name']} #{created_at.strftime('%Y/%m/%d %X')}" puts "#{st['text']}" @notifier.notify("new Message", "#{st['user']['screen_name']}", "#{st['text']}", nil, nil, true, -2) end end end user = ARGV.shift pass = ARGV.shift Twitterminal.new(user, pass).crowl