Il mio obiettivo è raccogliere tutti i tweet contenenti le parole "Francia" e "Germania" e anche raccogliere i metadati associati (ad es. Le coordinate geografiche allegate al tweet). So che questi metadati sono disponibili, ma non riesco a capire come accedervi con la libreria Java che sto usando: "twitter4j".twitter4j - accedere alle informazioni tweet dall'API Streaming
Ok, quindi quello che ho finora è preso da campioni di codice sul sito twitter4j. Stampa tutti i tweet contenenti le mie parole chiave scelte, poiché sono fornite in tempo reale dall'API di streaming di Twitter. Chiamo il metodo di filtro sul mio oggetto TwitterStream e questo fornisce lo stream. Ma ho bisogno di più controllo. Vale a dire, vorrei essere in grado di:
1) scrivere i tweet in un file; 2) stampa solo i primi 1000 tweet; 3) accedere ad altri metadati allegati al tweet (il metodo di filtro stampa solo il nome utente e il tweet stesso).
Ecco il codice che ho finora:
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);
}
}
Serve un aiuto. Sto ottenendo questo errore seguente. 'Il tipo new StatusListener() {} deve implementare il metodo astratto ereditato StatusListener.onStallWarning (StallWarning)' –