twitter4jを使ってTLを読み込み、RT(もしくはQT)の件数を数えるプログラム。TLに表れるPOSTがRTまたはQTである確率分布を求めるために作成しました。
twitter4jのStatusクラスにもisRetweetメソッドが用意されていますが、判定条件がわからないことと明らかにRTと思しきPOSTでもfalseが返ることから正規表現による独自判定を利用しています。
Javaコード
package jp.skypencil.bayes; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import twitter4j.Paging; import twitter4j.Status; import twitter4j.Twitter; import twitter4j.TwitterException; /** * TLから100件のPOSTを読み込み、RTもしくはQTであるPOSTの数を数える。 * @author eller */ public class RetweetCounter { private static final int TL_SIZE = 100; public static void main(String[] args) throws TwitterException { final Twitter twitter = new Twitter("username", "password"); // FIXME 自身のアカウント情報に改変すること final List<Status> timeline = twitter.getFriendsTimeline(new Paging(1, TL_SIZE)); final Pattern pattern = Pattern.compile("(^|\\s)[RQ]T\\s"); int retweets = 0; for (Status status : timeline) { String text = status.getText(); Matcher m = pattern.matcher(text); // System.out.println(text); if (m.find()) { ++retweets; } } System.out.printf("RT:%d/%d%n", retweets, TL_SIZE); } }
100件読み込んでListを作成するのはメモリ負荷が気になりますが、twitter4jのライブラリがさほど詳しくは無いため、より効率のよい実装手法については調べていません。