Streaming APIでツイート収集(TwitterAPI,Twitter4j,Java)
今回は,Twitter APIの一つであるStreaming APIを使ったツイート収集プログラムを書きたいと思います.
//twitter4j のライブラリ
import twitter4j.FilterQuery;
import twitter4j.StallWarning;
import twitter4j.Status;
import twitter4j.StatusDeletionNotice;
import twitter4j.StatusListener;
import twitter4j.TwitterStream;
import twitter4j.TwitterStreamFactory;
import twitter4j.conf.Configuration;
import twitter4j.conf.ConfigurationBuilder;
public class StreamT {
private static final String CONSUMER_KEY = "自分のコンシューマキー";
private static final String CONSUMER_SECRET = "自分のコンシューマシークレット";
private static final String ACCESS_TOKEN = "自分のアクセストークン";
private static final String ACCESS_TOKEN_SECRET = "自分のアクセストークンシークレット";
static class MyStatusListener implements StatusListener {
public void onStatus(Status status) {
try {
File file = new File("適当なファイル
名");
FileWriter filewriter = new FileWriter(file);
// ツイート投稿ユーザ名とツイート本文を表示
filewriter.write(status.getUser() + "," + status.getText());
} catch (IOException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
System.out.println("Status: " + status.getText()); // ツイート本文を表示
}
public void onDeletionNotice(StatusDeletionNotice sdn) {
System.out.println("onDeletionNotice.");
}
public void onTrackLimitationNotice(int i) {
System.out.println("onTrackLimitationNotice.(" + i + ")");
}
public void onScrubGeo(long lat, long lng) {
System.out.println("onScrubGeo.(" + lat + ", " + lng + ")");
}
public void onException(Exception excptn) {
System.out.println("onException.");
}
@Override
public void onStallWarning(StallWarning arg0) {
// TODO 自動生成されたメソッド・スタブ
}
}
public static void main(String args) throws Exception {
Configuration configuration = new ConfigurationBuilder().setOAuthConsumerKey(CONSUMER_KEY)
.setOAuthConsumerSecret(CONSUMER_SECRET)
.setOAuthAccessToken(ACCESS_TOKEN)
.setOAuthAccessTokenSecret(ACCESS_TOKEN_SECRET)
.build();
TwitterStream twStream = new TwitterStreamFactory(configuration).getInstance();
twStream.addListener(new MyStatusListener());
//フィルターを設定する
FilterQuery filter = new FilterQuery();
filter.track(new String{""}); // ツイートに含まれる単語を指定
twStream.filter(filter);
}
}