0

我正在使用 twitter4j 版本 2.2.5。 如果我将它与andsetPage()一起使用,它似乎不起作用。请参阅以下代码: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()方法,循环内的代码只会执行一次。但没有他们,setPage()似乎工作,我得到更多的推文结果。

任何想法为什么会发生这种情况?

4

1 回答 1

0

您的代码似乎对我有用。它只返回过去 9 天的推文,但根据您的评论,这是预期的(大约)。

您在问题中提到循环只运行一次rpp=100,并且您在评论中说用户的所有 80 条推文都在rpp=40. 我认为这表明代码按预期工作。如果用户只有 80 条推文,则循环应该只在 时运行一次rpp=100,并且它应该在 时执行两次并显示他们所有的推文rpp=40。尝试在进入 while 循环后立即显示页码,以便查看循环运行了多少次。

于 2012-10-18T00:26:50.373 回答