繁体   English   中英

有没有更好的方法来使用Twitter4J捕获推文?

[英]Is there a better way to catch tweets using Twitter4J?

我尝试使用StatusListener和TwitterStream方式来更清晰地执行此操作,但似乎没有捕获我想要的用户的所有推文。

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秒钟手动检查我想要的用户是否发布了新的推文。 这很完美,但似乎不洁净和黑客。 有没有更好的办法?

我不完全明白。 您是如何尝试从您感兴趣的用户那里获取推文? 如果您只是使用Twitter流,然后检查推文是否来自您想要的用户,您可以从不同的来源获取推文(如果有很多,可能会丢失一些推文)。
如果你想关注一些用户,你应该使用过滤器,如下所示:

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个不同的用户,当他们被转发时以及被提及时,您将获得他们发推的内容

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM