我正在使用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()
和setUntil()
方法,循环内的代码只会执行一次。但是没有它们,setPage()
似乎有效,我得到更多的推文结果。
为什么会发生这种情况?
答案 0 :(得分:0)
您的代码似乎对我有用。它仅返回过去九天的推文,但根据您的评论,这是预期的(大约)。
您在问题中提到循环仅使用rpp=100
运行一次,并且您在评论中说在rpp=40
时返回了所有80个用户的推文。我认为这表明代码正在按预期工作。如果用户只有80条推文,则循环只应在rpp=100
时运行一次,并且应该执行两次并在rpp=40
时显示所有推文。输入while循环后,请尝试显示页码,以便查看循环运行的次数。