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
コメント