Я пытаюсь использовать Twitter4j API, чтобы получить поток твитов по определенной теме.

Это мой код:

TwitterStream twitterStream = inizialize();

    StatusListener listener = new StatusListener(){
        public void onStatus(Status status) {
            System.out.println(status.getUser().getName() + " ====> " + status.getText());
        }
        public void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) {}
        public void onTrackLimitationNotice(int numberOfLimitedStatuses) {}
        public void onException(Exception ex) {
            ex.printStackTrace();
        }
        @Override
        public void onScrubGeo(long userId, long upToStatusId) {
            // TODO Auto-generated method stub

        }
        @Override
        public void onStallWarning(StallWarning warning) {
            // TODO Auto-generated method stub

        }
    };


    FilterQuery filterQuery = new FilterQuery("GAME");
    twitterStream.addListener(listener);
    twitterStream.filter(filterQuery);
    twitterStream.sample(); // sample() method internally creates a thread which manipulates TwitterStream and calls these adequate listener methods continuously.

}

Поток твитов работает хорошо, но я не могу задать ни одного запроса. Интересно, можно ли сделать то, что я пытаюсь сделать? Конечно, inizialize () возвращает twitterStream, настроенный с допустимым токеном oauth.

1
xcsob 27 Май 2017 в 18:46

2 ответа

Лучший ответ

Вы хотите вручную фильтровать статусы, поступающие из потока. Например, если вы хотите показывать твиты, содержащие только «ваниль», тогда вы можете использовать такой подход в своем onStatus:

public void onStatus(Status status) {
    String statusText = status.getText();
    if (statusText.toLowerCase().contains("vanilla")) {
        System.out.println(status.getUser().getName() + " ====> " + statusText);
    }
}
1
shiftpsh 15 Июн 2017 в 09:06
// Expecting a String[] of topics to track:
filterQuery.track(keywords);

// Within a bounding box of geo-coordinates:
filterQuery.locations(new double[][] {{lng1, lat1}, {lng2, lat2}});  

// Specifies a language to track:
filterQuery.language("en");

// Number of previous statuses to stream before transitioning to the live stream:
filterQuery.count(10);  
1
VicerExciser 10 Июл 2018 в 01:20