Twitterをnet/httpから

Twitter.comのAPIをいじって見ようと思って、net/httpを使ってみた。気の利いたライブラリもあるのかもしれないけど、Twitter APIってそんなの不要なほどシンプルな気がする。

とはいえ、ただHTTPで叩いた結果から一部を表示するだけのことでも、XMLをパーズしたり実体参照をunescapeしたりと色々やったことのない課題が出てきて1時間ぐらいかかってしまった。

ともあれ、「ruby friends.rb hoge」とやればユーザーhogeがfollowしているユーザーの名前をリストアップするところまでできた。本当はfollowしているユーザー、あるいはfollowerが、どの程度アクティブなのかといったことを調べるスクリプトを書くつもりで始めたのだけど、ひとまず第一歩終わり。

require 'cgi'
require 'net/http'
require "rexml/document"

$KCODE='u'

user = ARGV.shift

Net::HTTP.start('twitter.com', 80) {|http|
  response = http.get("/statuses/friends/#{user}.xml")
  doc = REXML::Document.new response.body
  doc.elements.each("*/user/name") {|element|
    name = element[0].to_s
    print CGI.unescapeHTML(name),":"
  }
  puts
}