Моя цель - собрать все твиты, содержащие слова «Франция» и «Германия», а также собирать связанные метаданные (например, геокодировки, прикрепленные к твиту). Я знаю, что эти метаданные доступны, но я не могу понять, как получить доступ к нему с помощью библиотеки Java, которую я использую: «twitter4j».twitter4j - доступ к твиту информации от Streaming API
Хорошо, так что я до сих пор взят из образцов кода на сайте twitter4j. Он печатает все твиты, содержащие мои выбранные ключевые слова, так как они предоставляются в режиме реального времени через Streaming API Twitter. Я называю метод фильтра на моем объекте TwitterStream, и это обеспечивает поток. Но мне нужно больше контроля. А именно, я хотел бы иметь возможность:
1) написать твиты в файл; 2) распечатывать только первые 1000 твитов; 3) доступ к другим метаданным, прикрепленным к твиту (метод фильтра просто распечатывает имя пользователя и сам твит).
Вот код, который я до сих пор:
import twitter4j.FilterQuery;
import twitter4j.Status;
import twitter4j.StatusDeletionNotice;
import twitter4j.StatusListener;
import twitter4j.TwitterException;
import twitter4j.TwitterStream;
import twitter4j.TwitterStreamFactory;
import twitter4j.conf.ConfigurationBuilder;
public class Stream {
public static void main(String[] args) throws TwitterException {
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true);
cb.setOAuthConsumerKey("bbb");
cb.setOAuthConsumerSecret("bbb");
cb.setOAuthAccessToken("bbb");
cb.setOAuthAccessTokenSecret("bbb");
TwitterStream twitterStream = new TwitterStreamFactory(cb.build()).getInstance();
StatusListener listener = new StatusListener() {
public void onStatus(Status status) {
System.out.println("@" + status.getUser().getScreenName() + " - " + status.getText());
}
public void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) {
System.out.println("Got a status deletion notice id:" + statusDeletionNotice.getStatusId());
}
public void onTrackLimitationNotice(int numberOfLimitedStatuses) {
System.out.println("Got track limitation notice:" + numberOfLimitedStatuses);
}
public void onScrubGeo(long userId, long upToStatusId) {
System.out.println("Got scrub_geo event userId:" + userId + " upToStatusId:" + upToStatusId);
}
public void onException(Exception ex) {
ex.printStackTrace();
}
};
FilterQuery fq = new FilterQuery();
String keywords[] = {"France", "Germany"};
fq.track(keywords);
twitterStream.addListener(listener);
twitterStream.filter(fq);
}
}
Нужна помощь. Я получаю следующую ошибку. 'Тип new StatusListener() {} должен реализовать наследованный абстрактный метод StatusListener.onStallWarning (StallWarning)' –