0

twitter4j バージョン 2.2.5 を使用しています。 と を併用するとsetPage()うまくいかないようです。次のコードを参照してください。setSince()setUntil()

Twitter twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
AccessToken accessToken = new AccessToken(ACCESS_TOKEN, ACCESS_TOKEN_SECRET);
twitter.setOAuthAccessToken(accessToken);
int page = 1;
while(true) {
    Query query = new Query("from:someUser");
    query.setSince("2012-01-01");
    query.setUntil("2012-07-05");
    query.setRpp(100);
    query.setPage(page++);
    QueryResult qr = twitter.search(query);
    List<twitter4j.Tweet> qrTweets = qr.getTweets();
    if(qr.getTweets().size() == 0) break;
    for(twitter4j.Tweet t : qrTweets) {
        System.out.println(t.getId() + " " + t.getText());
    }
}

setSince()andsetUntil()メソッドを使用すると、ループ内のコードは 1 回だけ実行されます。しかし、それらがなくてもsetPage()うまくいくようで、より多くのツイート結果が得られます。

なぜこれが起こっているのですか?

4

1 に答える 1

0

あなたのコードは私のために働いているようです。過去 9 日間のツイートのみが返されますが、これは (おおよそ) コメントによると予想されます。

ループが で 1 回だけ実行されたことを質問でrpp=100述べ、コメントでrpp=40. これは、コードが期待どおりに機能していることを示していると思います。ユーザーのツイートが 80 件しかない場合、ループは のときに 1 回だけ実行し、 のときrpp=100に 2 回実行してすべてのツイートを表示する必要がありますrpp=40。while ループに入ったらすぐにページ番号を表示して、ループが何回実行されたかを確認してください。

于 2012-10-18T00:26:50.373 に答える