我使用了此处提供的第一个解决方案中的代码How to retrieve more than 100 results using Twitter4j
但它只是检索前100条推文的重复。
我也试过setSince和setUntil日期,但也检索了重复。
请帮忙! 感谢。
答案 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);
您现在应该能够获得连续的推文,您可以尝试更多关于您想要应用的过滤器。