使用主题标签查找推特状态

时间:2018-01-17 17:35:18

标签: java twitter twitter4j hashtag

我一直试图在我的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());
    }

这很好用,但我也试图将它添加到一个arraylist,这个arraylist将在此查询后初始化,然后显示在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);

                }

}

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

1 个答案:

答案 0 :(得分:0)

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

使用TwitterFactory代替TwitterStreamFactory我能够使用如下所示的特定hastags。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.bundle.js"></script>
		    <div class='uk-panel uk-panel-box uk-panel-box-primary'>
		    	<h3>Profiles from Research Data <br />and Company Data</h3>
		    	<div class='uk-panel-box uk-panel-box-secondary uk-margin'>
			        <h4>The 5 Global & 16 Primary Factors</h4>
			        <button class='uk-button uk-button-small uk-button-primary' id='toggle-profiles'>show/hide all</button>
			        <canvas id='global-profiles' height='800'></canvas>
			    </div>