ストリーミングAPI昨日の続き
import java.io.IOException; import twitter4j.Status; import twitter4j.StatusStream; import twitter4j.Twitter; import twitter4j.TwitterException; import twitter4j.TwitterStream; public class Test2 { public static void main(String[] args) throws TwitterException, InterruptedException, IOException { String id = ""; String pass = ""; TwitterStream twitterStream = new TwitterStream(id, pass); Twitter twitter = new Twitter(id, pass); twitterStream.setHttpReadTimeout(120000); int []ids = twitter.getFriendsIDs().getIDs(); StatusStream stream = twitterStream.getFollowStream(ids); Status status; for (;;) { status = stream.next(); System.out.println(status.getCreatedAt() + "\t" + status.getUser().getScreenName() + ":\t" + status.getText()); } // stream.close(); } }
Mon Jun 08 13:53:17 JST 2009 snkken: test
これでフレンズのTweetをリアルタイムに取得して表示してくれます。
これだと@userで自分がフォローしていない人へのリプライも見えますね。
これでとりあえずPublicTimelineとFriendsTimelineのTweet収集はできるようになりました。(PTLの方はfirehose()が使えないのですべては取得できないみたいですが・・・)
携帯でTwitterを見るサービスを作るには、ストリーミングAPIは必要なさそうです。
あとは個人で使うなら必要ないですが公開するならOAuthの勉強が必要かな
自分の発言と似ているユーザーを探すサービスには、準備段階としてストリーミングAPIでPublicTimelineを取得し、そのTweetをユーザーごとにDBのテーブルに追加
その情報からLuceneでインデックスを作成
ユーザー名を入力すると、DBのTweetで検索をしインデックスのスコアが高いユーザを表示
こんな感じかな
話は変わって
StreamAPITest.javaのtestUnAuthorizedStreamMethods()以下のものは実行できないものなのかな?
getShadowStream()はjavadocによると特に認証必要ないけど使えないのは何でなんだろう?