【问题标题】:Is there a better way to catch tweets using Twitter4J?有没有更好的方法来使用 Twitter4J 捕捉推文?
【发布时间】:2016-05-30 03:10:50
【问题描述】:

我尝试使用 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 秒手动检查一次我想要的用户是否发布了新推文。这完美地工作,但似乎不干净和hacky。有没有更好的办法?

【问题讨论】:

    标签: java twitter twitter4j twitter-streaming-api


    【解决方案1】:

    我不完全明白。您如何尝试从您感兴趣的用户那里获取推文?如果您只是使用 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 位不同的用户,您将了解他们的推文、他们何时被转发以及何时被提及

    【讨论】:

    • 这是个好主意,我什至不知道有过滤器。我使用 sample() 方法启动流,对吗?
    • 不,使用 sample() 您可以从整个 TwitterStream 中获取样本数据......而且该样本非常小。流以 twitterStream.filter(filter); 开始。 :)
    • 知道了。谢谢你的帮助。但是即使我使用了 filterQuery.count(0)...
    • 我不知道为什么如果你设置 count(0) 你会得到以前的推文,但你最终会在一段时间内只得到实时推文
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 2012-12-05
    • 2019-12-08
    • 2013-01-01
    • 1970-01-01
    • 2012-03-11
    相关资源
    最近更新 更多