Найти статус твиттера с помощью хэштега

Я пытался получить некоторые статусы 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());
    }

Это работает нормально, но я также пытаюсь добавить это к списку массивов, этот массив будет инициализирован после этого запроса и затем показан в списке в пользовательском интерфейсе.

Это также работает нормально, но если я добавлю еще один твит на этот хэштег, когда клиент запускает приложение, я не добавлю его в мой вид в пользовательском интерфейсе.

Я провел небольшое исследование и обнаружил, что вместо этого могу использовать 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 ответ

Решение

Через некоторое время исследований я нашел решение.

Используя 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);

}
Другие вопросы по тегам