マイムの部屋

社内SEが,興味をもったことを書いていきます.

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);

}

}