読者です 読者をやめる 読者になる 読者になる

Twitter4Jで1週間前までの任意の語句を検索する

Twitter4J

twitter4jのバージョン

  • 2.1.9-SNAPSHOT
package hoge;

import java.util.Calendar;

import twitter4j.Query;
import twitter4j.QueryResult;
import twitter4j.Tweet;
import twitter4j.Twitter;
import twitter4j.TwitterFactory;
import twitter4j.http.AccessToken;

public class T4jSearch {

    /**
     * 任意の語句の1週間前までのツイートを検索する
     * 
     * @param args
     */
    public static void main(String[] args) {

        String consumerKey = "your consumerKey";
        String consumerSecret = "your consumerSecret";

        // TwitterOAuthAccessTokenGetter で取得した Token と TokenSecret を使用
        String token = "your token";
        String tokenSecret = "your tokenSecret";

        try {
            TwitterFactory factory = new TwitterFactory();
            AccessToken accessToken = new AccessToken(token, tokenSecret);
            Twitter twitter = factory.getOAuthAuthorizedInstance(consumerKey, consumerSecret, accessToken);

            // 1週間前の日付を作成
            Calendar now = Calendar.getInstance();
            now.add(Calendar.DATE, -7);

            PAGING: for (int pageCount = 1;; pageCount++) {
                // 検索したい語句
                Query query = new Query("海老蔵");
                query.setPage(pageCount);
                QueryResult result = twitter.search(query);

                for (Tweet eachTweet : result.getTweets()) {
                    // 1週間より前のツイートになったら取得するのをやめる
                    if (now.getTime().compareTo(eachTweet.getCreatedAt()) > 0) {
                        break PAGING;
                    }
                    // 発言者のIDと内容を表示
                    System.out.println(twitter.showUser(eachTweet.getFromUser()).getId() + "\t" + eachTweet.getText());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

(English)Search tweets in last one week.