我试着用StatusListener和TwitterStream的方法来实现这一点,但是它似乎并没有捕捉到来自我想要的用户的所有tweet。
StatusListener statusListener = new StatusListener() {
@Override
public void onStatus(Status status) {
//my code
}
//other requiredly-overriden methods
}
ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
configurationBuilder.setOAuthConsumerKey("XXXXX");
configurationBuilder.setOAuthConsumerSecret("XXXXXXX");
TwitterStream twitterStream = new TwitterStreamFactory(configurationBuilder.build()).getInstance(new AccessToken("XXXXX", "XXXXXXX"));
twitterStream.addListener(statusListener);
twitterStream.sample();因此,我每3秒手动检查一次我想要发布的用户是否发布了新的推文。这是完美的工作,但似乎不干净和讨厌。有更好的办法吗?
发布于 2016-02-18 18:00:38
我不完全明白。你是如何从你感兴趣的用户那里捕捉到这些推特的?如果您只是使用twitter流,然后检查一条tweet是否来自您想要的用户,您可以从不同的来源获得tweet(如果有很多消息,可能会丢失一些tweet)。
如果您想跟踪某些用户,您应该使用一个过滤器,如下所示:
StatusListener statusListener = new StatusListener() {
@Override
public void onStatus(Status status) {
//your code to manage the statuses
}
//other requiredly-overriden methods
}
ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
configurationBuilder.setOAuthConsumerKey("XXXXX");
configurationBuilder.setOAuthConsumerSecret("XXXXXXX");
TwitterStream twitterStream = new TwitterStreamFactory(configurationBuilder.build()).getInstance(new AccessToken("XXXXX", "XXXXXXX"));
twitterStream.addListener(statusListener);
//from here is different at your code
//you need to set up your user list, with their users id's!
long[] userslist = YOUR USER LIST;
//then you create a filter
FilterQuery filtre = new FilterQuery();
//and use that filter to follow the users that you want and to start the stream
filtre.follow(userslist);
twitterStream.filter(filtre);使用过滤器,您可以跟踪多达5000不同的用户,您将得到他们的推文,当他们被转发时,当他们被提到。
https://stackoverflow.com/questions/35473224
复制相似问题