如何使用twitter4j获得超过100条推文结果

时间:2014-09-27 11:25:28

标签: java search twitter twitter4j

我使用了此处提供的第一个解决方案中的代码How to retrieve more than 100 results using Twitter4j

但它只是检索前100条推文的重复。

我也试过setSince和setUntil日期,但也检索了重复。

请帮忙! 感谢。

1 个答案:

答案 0 :(得分:0)

如果你想根据一些查询过滤器获得连续的推文流,请在Twitter4j中实现StatusListener类。 同时实现onStatus(状态状态)功能。下面是一个例子 -

import twitter4j.*;

public class TwitterListener implements StatusListener {
    public void onException(Exception ex) {
        ex.printStackTrace();
    }
    public void onStatus(Status status) {
        if(status.getUser().getLang().equalsIgnoreCase("en")
                || status.getUser().getLang().equalsIgnoreCase("en_US")) {

            String twitterStream = String.valueOf(status.getId())
                + "\t" + status.getUser().getScreenName()
                + "\t" + status.getText()
                + "\t" + status.getCreatedAt();

            System.out.println(twitterStream);
        }
    }

    public void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) {
    }
    public void onTrackLimitationNotice(int numberOfLimitedStatuses) {
    }
    public void onScrubGeo(long userId, long upToStatusId) {
    }
    public void onStallWarning(StallWarning warning) {
    }
}

创建一个类来初始化并挂钩到Twitter状态流,代码如下所示 -

ConfigurationBuilder twitterConfigBuilder = new ConfigurationBuilder();
twitterConfigBuilder.setOAuthConsumerKey("consumerKey");
twitterConfigBuilder.setOAuthConsumerSecret("consumerSecret");
twitterConfigBuilder.setOAuthAccessToken("accessToken");
twitterConfigBuilder.setOAuthAccessTokenSecret("accessTokenSecret");

TwitterListener twitterListener = new TwitterListener();

TwitterStream twitterStream
        = new TwitterStreamFactory(twitterConfigBuilder.build()).getInstance();

// Register your Listener
twitterStream.addListener(twitterListener);

FilterQuery query = new FilterQuery();
ArrayList<String> trackList = new ArrayList<String>();
// TODO, add the list of words you want to track
query.track(trackList.toArray(new String[trackList.size()]));

twitterStream.filter(query);

您现在应该能够获得连续的推文,您可以尝试更多关于您想要应用的过滤器。