ストリーミング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によると特に認証必要ないけど使えないのは何でなんだろう?