如何使用twitter4j获取固定数量的推文

时间:2014-07-20 10:09:47

标签: java twitter twitter4j

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

我知道我们可以使用查询的setCount()方法设置每页返回的推文数量:

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

但是如果我将值1作为maxTweets给出,则返回2条推文。

更新:经过进一步研究后,我发现每次搜索都会返回1条额外的推文。所以我给1作为maxTweets值它返回2条推文。如果我给2作为maxTweets值,则返回3条推文,依此类推。

我不确定我错在哪里但请告诉我是否有办法使用twitter4j获取固定数量的推文。

任何指导都会有所帮助。

1 个答案:

答案 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