twitter4rでtwitter検索するのに思ったより苦戦 そしてtwitterの仕様

twitter4rでtwitter検索するのに思ったより苦戦したのでメモを残す
twitter4rはruby用のtwitterライブラリ

2009-09-16時点
$ gem list –local | grep twitter
twitter4r (0.3.1)
Twitter API 仕様書はtsupoさん訳のもの。第31版。

twitter検索の大まかな使い方

twitter = Twitter::Client.new
iterator = twitter.search(:q => "四時 OR 4時 OR 4時", :lang => ‘ja’)
iterator.each do |tweet|
  p tweet.text
end

これで検索対象発言が取り出せる。無指定だと15件。
:lang => jaが日本語限定。「 OR 」でOR検索ができる。
試してないけど「 AND 」でAND検索できるんじゃね。このへんはAPI仕様書参照。

発言者名の取得

「show_user=true の場合」に発言ユーザ名でprefixが入るのはsearch.atomの場合のみ。
search.jsonの場合入らない。 twitter4rはjsonをパースするので、結局発言ユーザ名は入らない。

ググった結果から
tweet.user.screen_name
tweet.user.name
勘で探すけどいない

tweetは :source と :text と :created_ at しか持っていないように見える。 jsonのレスポンスには他にも居るのに!
仕方がないので↓こんな感じでライブラリを書き換えて

*** /usr/local/lib/ruby/gems/1.8/gems/twitter4r-0.3.1/lib/twitter/model.rb
     2009-09-14 00:55:27.000000000 +0900
— /path/to/model.rb  2009-09-14 00:54:59.000000000 +0900
***************
*** 227,233 ****
      include ModelMixin
      @@ATTRIBUTES = [:id, :text, :source, :truncated, :created_at, :user,
                      :favorited, :in_reply_to_status_id, :in_reply_to_user_id,
!                     :in_reply_to_screen_name]
      attr_accessor *@@ATTRIBUTES

      class << self
— 227,233 —-
      include ModelMixin
      @@ATTRIBUTES = [:id, :text, :source, :truncated, :created_at, :user,
                      :favorited, :in_reply_to_status_id, :in_reply_to_user_id,
!                     :in_reply_to_screen_name, :from_user]
      attr_accessor *@@ATTRIBUTES

      class << self
***************
eachのなかでユーザ名を取得した。
tweet.from_user

まず間違いなくもっとbetterな方法があると思うけど、web検索にもでてこないし、用は足りたので一応よかったことにする。
見つけたら加筆修正する。おしまい。

以下参考資料

UT blog: Twitter crawler with ruby 2
http://yyuto.blogspot.com/2009/06/twitter-crawler-with-ruby-2.html
RC3の無職しょ日記:Twitter4Rの歩き方
http://blog.livedoor.jp/r_c_3/archives/50648653.html
rdocは古いので参考意見にしかならない
http://twitter4r.rubyforge.org/rdoc/


2009-10-03 15:00追記

twitter4r 0.3.2以降でsearchでもfrom_user, to_userが取れるようになった
そのため、本エントリの修正は以後不要

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中