RubyでTwitter APIをたたいてみた
今日はRubyを使ってみた.Rubyを使って,Twitter API をたたいてみた.今回は DOM を使わずに,ストリーム読み込み(SAX的)な方法で読み込んだ.XMLを全解析しない分,こちらのほうが読み込みが速い.
例によって,初めてのルビーなので書き方は見よう見まね.一応クラスを使っているのでオブジェクト指向っぽさを醸し出している.
PHP と比較して,Ruby はコードがすっきり簡潔になるような気がする.'$'記号が無いからかな.
ところで,Windows のスクリプティングには,PowerShell が一番.Windows 使いは,なによりこいつを習得すべきだ.
下が,フォローしている人の一覧を表示する Ruby コード.
例によって,初めてのルビーなので書き方は見よう見まね.一応クラスを使っているのでオブジェクト指向っぽさを醸し出している.
PHP と比較して,Ruby はコードがすっきり簡潔になるような気がする.'$'記号が無いからかな.
ところで,Windows のスクリプティングには,PowerShell が一番.Windows 使いは,なによりこいつを習得すべきだ.
下が,フォローしている人の一覧を表示する Ruby コード.
require 'rexml/parsers/streamparser'
require 'rexml/parsers/baseparser'
require 'rexml/streamlistener'
require 'open-uri'
class MyListener
include REXML::StreamListener
def initialize()
@tagStack = []
@id = nil
@screenName = nil
@userList = Hash.new()
@nextCursor = 0
end
def userList()
return @userList
end
def nextCursor()
return @nextCursor
end
def tag_start(name, attrs)
@tagStack.push(name)
end
def text(value)
if @tagStack[-2] == "user"
if @tagStack[-1] == "id"
@id = value
elsif @tagStack[-1] == "screen_name"
@screenName = value
end
elsif @tagStack[-1] == "next_cursor"
@nextCursor = value;
end
end
def tag_end x
@tagStack.pop()
if x == "user"
userList[@id] = {'id' => @id, 'screenName' => @screenName}
end
end
end
source = open("http://twitter.com/statuses/followers/haoka.xml") { |u| u.read }
listener = MyListener.new
REXML::Parsers::StreamParser.new(source, listener).parse
listener.userList.each do
|id, user|
print id, ": ", user['screenName'], "\n"
end
コメント