Извлечение твитов определенного хэштега с помощью twitter4j

Я могу извлечь твиты с определенным хэштегом, используя метод search, как показано ниже.

        twitter4j.Twitter twitter =  TwitterFactory.getSingleton();
        Query query = new Query("ipl7");
        QueryResult result = twitter.search(query);
        for (Status status : result.getTweets()) {
            System.out.println("@" + status.getUser().getScreenName() + " : " + status.getText() + " : " + status.getGeoLocation());
        }

Но я получил очень ограниченное количество твитов, используя описанный выше метод. что мне нужно изменить, чтобы получить все твиты определенного хэштега?


person yAsH    schedule 28.04.2014    source источник


Ответы (2)


Вы можете использовать потоковый API для получения последних твитов по заданному набору ключевых слов. В вашем случае у вас есть только одно ключевое слово, которое является хэштегом, верно? Я разместил краткий пример кода для поиска твитов по ключевому слову с помощью Streaming API. Вы можете использовать как Streaming, так и Search API для разных целей. В основном вы можете использовать API поиска для исторических твитов в течение ограниченного времени. Это позволяет указать интервал дат. Однако вы можете использовать Streamin API для перехвата недавно опубликованных твитов в виде потока твитов, который содержит заданные вами ключевые слова.

Пример кода потоковой передачи ниже:

private static void GetTweetStreamForKeywords()
        {
        TwitterStream twitterStream = new TwitterStreamFactory(config).getInstance();

        StatusListener statusListener = new StatusListener() {

         @Override
         public void onStatus(Status status) {
           // The main section that you get the tweet. You can access it by status object.
           // You can save it in a database table.
         }


                @Override
                public void onDeletionNotice(StatusDeletionNotice sdn) {
                    throw new UnsupportedOperationException("Not supported yet."); 
                }

                @Override
                public void onTrackLimitationNotice(int i) {
                    throw new UnsupportedOperationException("Not supported yet."); 
                }

                @Override
                public void onScrubGeo(long l, long l1) {
                    throw new UnsupportedOperationException("Not supported yet."); 
                }

                @Override
                public void onStallWarning(StallWarning sw) {
                    throw new UnsupportedOperationException("Not supported yet.");
                }

                @Override
                public void onException(Exception ex) {
                    logWriter.WriteErrorLog(ex, "onException()");
                }
            };

            FilterQuery fq = new FilterQuery();        

            String keywords[] = {"sport", "politics", "health"};

            fq.track(keywords);        

            twitterStream.addListener(statusListener);
            twitterStream.filter(fq);          
      }  
person mgokhanbakal    schedule 02.05.2014

Используйте метод count(int resultCount) :

    Query query = new Query("ipl7");
    query.count(100); //100 is the max allowed
    QueryResult result = twitter.search(query);
person ben75    schedule 28.04.2014
comment
могу ли я получить больше твитов, если воспользуюсь методами maxId(long maxId) или с Id(long с Id) ? - person yAsH; 28.04.2014
comment
мне не нужно передавать #ipl7 как запрос? - person Hammad Nasir; 25.08.2017