2014-07-20 143 views
0

我正在使用Twitter4j构建客户端以获取输入搜索词的推文。我还试图为用户提供设施,以便在结果中输入他想要的推文数量。如何使用twitter4j获取固定数量的推文

我知道,我们可以设置要与查询的setCount()方法每页返回鸣叫的次数:

Query q = new Query(searchTerm); 
q.setCount(maxTweets);  

但是,如果我给值1作为maxTweets,它返回2个鸣叫。

更新:经过进一步研究,我发现它每个搜索返回1个额外的推文。所以我给1作为maxTweets值,它返回2推文。如果我将2作为maxTweets值给出,则返回3条推文等等。

我不确定我在哪里错了,但请让我知道,如果有一种方法,我可以通过twitter4j获得固定数量的推文。

任何指导都会有所帮助。

回答

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 
+0

感谢user3764893的帮助。我不确定这是否是获取固定数量的推文的唯一方式,但它解决了我的问题。谢谢!! – sf9251

+0

我希望你明白了主意。我很乐意提供帮助。 – user3764893

相关问题