RubyでTwitter APIをたたいてみた

今日はRubyを使ってみた.Rubyを使って,Twitter API をたたいてみた.今回は DOM を使わずに,ストリーム読み込み(SAX的)な方法で読み込んだ.XMLを全解析しない分,こちらのほうが読み込みが速い.

例によって,初めてのルビーなので書き方は見よう見まね.一応クラスを使っているのでオブジェクト指向っぽさを醸し出している.

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

コメント

このブログの人気の投稿

Gbps でなく GT/s

HCSLに33オームの直列抵抗が必要な理由

PowerShellによるExcel/PowerPointの操作