【问题标题】:Find twitter status using a hashtag使用主题标签查找 Twitter 状态
【发布时间】:2018-06-26 16:12:37
【问题描述】:

我一直在尝试使用以下方法在我的 Twitter 客户端中获取一些 Twitter 状态:

Query query = new Query("#something");
    QueryResult result = twitter.search(query);

    for (Status status : result.getTweets()) {
        System.out.println("@" + status.getUser().getScreenName() + ": " + status.getText());
       // arrayList.add( "@" + status.getUser().getScreenName() + ": " + status.getText());
    }

这很好用,但我也在尝试将其添加到数组列表中,此数组列表将在此查询后初始化,然后显示在 UI 中的列表中。

这也可以正常工作,但是如果我在客户端运行应用程序时在此主题标签上添加另一条推文,则不会将其添加到我在 UI 中的视图中。

我做了一些研究,发现我可以使用 Steam 代替,这就是我发现的:

    ConfigurationBuilder cb = new ConfigurationBuilder();
                    cb.setDebugEnabled(true)
                            .setOAuthConsumerKey("*********************")
                            .setOAuthConsumerSecret("*********************")
                            .setOAuthAccessToken("*********************")
                            .setOAuthAccessTokenSecret("*********************");
                    TwitterStream twitterStream = new TwitterStreamFactory(cb.build()).getInstance();

                    StatusListener listener = new StatusListener() {

                        @Override
                        public void onException(Exception arg0) {
                            // TODO Auto-generated method stub


                      .........

                        @Override
                        public void onStatus(Status status) {
                            User user = status.getUser();

                            // gets Username
                            String username = status.getUser().getScreenName();
                            System.out.println(username);
                            String profileLocation = user.getLocation();
                            System.out.println(profileLocation);
                            long tweetId = status.getId();
                            System.out.println(tweetId);
                            String content = status.getText();
                            System.out.println(content +"\n");

                        }


                      .........
                    FilterQuery fq = new FilterQuery("#something");

                    String keywords[] = {"ireland"};

                    fq.track(keywords);

                    twitterStream.addListener(listener);
                    twitterStream.filter(fq);

                }

}

这就是问题出现的地方,所以当我在流中使用第二种解决方案时,它不会获取主题标签,但关键字会起作用。那么我如何让流与主题标签一起使用?

【问题讨论】:

    标签: java twitter twitter4j hashtag


    【解决方案1】:

    经过一段时间的研究,我找到了解决方案。

    使用 TwitterFactory 而不是 TwitterStreamFactory 我能够使用特定的标签,如下所示。

     public static void startTweets() {
        ConfigurationBuilder cb = new ConfigurationBuilder();
    
                             cb.setOAuthConsumerKey("*********************")
                            .setOAuthConsumerSecret("*********************")
                            .setOAuthAccessToken("*********************")
                            .setOAuthAccessTokenSecret("*********************");
        Twitter twitter = new TwitterFactory(cb.build()).getInstance();
    
    
    }
    
        public static void getFeed(String hash)  throws TwitterException  {
    
            Query query = new Query("#"+hash);
    
            QueryResult result = twitter.search(query);
    
            for (Status status : result.getTweets()) {
                System.out.println("@" + status.getUser().getScreenName() + ": " + status.getText());
                String username =status.getUser().getScreenName() ;
    
                String message = status.getText();
                twitter.showUser(username).getLocation();
                int Followers = twitter.showUser(username).getFollowersCount();
    
                main.AddtoList(username,message, Followers);
    
    }
    

    【讨论】:

      猜你喜欢
      • 2017-11-15
      • 2011-06-22
      • 1970-01-01
      • 2015-05-15
      • 1970-01-01
      • 1970-01-01
      • 2012-10-21
      • 2012-08-15
      相关资源
      最近更新 更多