我正在使用Twitter4j构建一个客户端来获取输入搜索词的推文。我还试图为用户提供设施,以便在结果中输入他想要的推文数量。
我知道我们可以使用查询的setCount()
方法设置每页返回的推文数量:
Query q = new Query(searchTerm);
q.setCount(maxTweets);
但是如果我将值1作为maxTweets给出,则返回2条推文。
更新:经过进一步研究后,我发现每次搜索都会返回1条额外的推文。所以我给1作为maxTweets值它返回2条推文。如果我给2作为maxTweets值,则返回3条推文,依此类推。
我不确定我错在哪里但请告诉我是否有办法使用twitter4j获取固定数量的推文。
任何指导都会有所帮助。
答案 0 :(得分:1)
写作时
Query q = new Query(searchTerm);
将其视为一个包含与查询匹配的结果的表格页面。但可能会有更多的页面。
设置
时q.setCount(maxTweets);
每页会为您带来maxTweets
条推文。在您的情况下,2,因为有两个页面与您的查询匹配,并且您每页选择了一条推文。
你能做什么,试着用do-while循环来处理它。
Query q = new Query(searchTerm);
QueryResult result;
int tempUSerInput = 0; //keep a temp value
boolean flag = false;
do {
result = twitter.search(query);
List<Status> tweets = result.getTweets();
tempUSerInput = tempUSerInput + tweets.size();
if(tempUSerInput >= realyourUserInput) // you have already matched the number
flag = true; //set the flag
}
while ((query = result.nextQuery()) != null && !flag);
// Here Take only realyourUserInput number
// as you might have taken more than required
List<Status> finaltweets = new ArrayList();
for(int i=0; i<realyourUserInput; i++)
finaltweets.add( tweets.get(i) ); //add them to your final list