Einführung in Twitter4J

Einführung in Twitter4J

1. Überblick

In diesem Artikel werden wir uns mit der Verwendung vonTwitter4J in einer Java-Anwendung für die Kommunikation mit Twitter befassen.

2. Twitter4J

Twitter4J ist eine Open-Source-Java-Bibliothek, die eine praktische API für den Zugriff aufTwitter API bietet.

Einfach ausgedrückt, hier erfahren Sie, wie wir mit der Twitter-API interagieren können. wir können:

  • Schreibe einen Tweet

  • Holen Sie sich die Zeitleiste eines Benutzers mit einer Liste der neuesten Tweets

  • Senden und Empfangen von Direktnachrichten

  • Suche nach Tweets und vielem mehr

Diese Bibliothek stellt sicher, dass wir diese Vorgänge einfach ausführen können, und gewährleistet die Sicherheit und den Datenschutz eines Benutzers - für die wir natürlich OAuth-Anmeldeinformationen in unserer App konfigurieren müssen.

3. Maven-Abhängigkeiten

Wir müssen zunächst die Abhängigkeit für Twitter4J in unserenpom.xml definieren:


    org.twitter4j
    twitter4j-stream
    4.0.6

Um zu überprüfen, ob eine neue Version der Bibliothek veröffentlicht wurde -track the releases here.

4. Aufbau

Die Konfiguration von Twitter4J ist einfach und kann auf verschiedene Arten erfolgen - beispielsweise in einer Nur-Text-Datei oder einer Java-Klasse oder sogar unter Verwendung von Umgebungsvariablen.

Schauen wir uns jede dieser Möglichkeiten einzeln an.

4.1. Nur-Text-Datei

Wir können eine Nur-Text-Datei mit dem Namentwitter4j.properties verwenden, um unsere Konfigurationsdetails zu speichern. Schauen wir uns die Eigenschaften an, die bereitgestellt werden müssen:

oauth.consumerKey =       // your key
oauth.consumerSecret =    // your secret
oauth.accessToken =       // your token
oauth.accessTokenSecret = // your token secret

Alle diese Attribute können nachmake a new app von der Twitter Developer Console abgerufen werden.

4.2. Java-Klasse

Wir können auch eineConfigurationBuilder-Klasse verwenden, um Twitter4J programmgesteuert in Java zu konfigurieren:

ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true)
  .setOAuthConsumerKey("your consumer key")
  .setOAuthConsumerSecret("your consumer secret")
  .setOAuthAccessToken("your access token")
  .setOAuthAccessTokenSecret("your access token secret");
TwitterFactory tf = new TwitterFactory(cb.build());
Twitter twitter = tf.getInstance();

Beachten Sie, dass wir im nächsten Abschnitt die InstanzTwitterverwenden werden - wenn wir mit dem Abrufen von Daten beginnen.

4.3. Umgebungsvariablen

Die Konfiguration über Umgebungsvariablen ist eine weitere Möglichkeit, die wir haben. Beachten Sie in diesem Fall, dass wir in unseren Variablen das Präfixtwitter4jbenötigen:

$ export twitter4j.oauth.consumerKey =       // your key
$ export twitter4j.oauth.consumerSecret =    // your secret
$ export twitter4j.oauth.accessToken =       // your access token
$ export twitter4j.oauth.accessTokenSecret = // your access token secret

5. Hinzufügen / Abrufen von Echtzeit-Tweet-Daten

Mit einer vollständig konfigurierten Anwendung können wir endlich mit Twitter interagieren.

Schauen wir uns einige Beispiele an.

5.1. Poste einen Tweet

Wir beginnen mit der Aktualisierung eines Tweets auf Twitter:

public String createTweet(String tweet) throws TwitterException {
    Twitter twitter = getTwitterinstance();
    Status status = twitter.updateStatus("creating example API");
    return status.getText();
}

Mitstatus.getText(), können wir den gerade geposteten Tweet abrufen.

5.2. Holen Sie sich die Timeline

Wir können auch eine Liste von Tweets aus der Zeitleiste des Benutzers abrufen:

public List getTimeLine() throws TwitterException {
    Twitter twitter = getTwitterinstance();

    return twitter.getHomeTimeline().stream()
      .map(item -> item.getText())
      .collect(Collectors.toList());
}

Mittwitter.getHomeTimeline(), erhalten wir alle Tweets, die von der aktuellen Konto-ID gepostet werden.

5.3. Eine direkte Nachricht senden

Das Senden und Empfangen einer direkten Nachricht an Follower ist auch über Twitter4j möglich:

public static String sendDirectMessage(String recipientName, String msg)
  throws TwitterException {

    Twitter twitter = getTwitterinstance();
    DirectMessage message = twitter.sendDirectMessage(recipientName, msg);
    return message.getText();
}

DiesendDirectMessage-Methode akzeptiert zwei Parameter:

  • RecipientName: Der Twitter-Benutzername eines Nachrichtenempfängers

  • msg: Nachrichteninhalt

Wenn der Empfänger nicht gefunden wird, löstsendDirectMessage eine Ausnahme mit dem Ausnahmecode150 aus.

5.4. Suche nach Tweets

Wir können auch nach Tweets suchen, die Text enthalten. Auf diese Weise erhalten wir eine Liste von Tweets mit dem Benutzernamen der Benutzer.

Mal sehen, wie eine solche Suche durchgeführt werden kann:

public static List searchtweets() throws TwitterException {

    Twitter twitter = getTwitterinstance();
    Query query = new Query("source:twitter4j example");
    QueryResult result = twitter.search(query);

    return result.getTweets().stream()
      .map(item -> item.getText())
      .collect(Collectors.toList());
}

Natürlich können wir jeden inQueryResult empfangenen Tweet durchlaufen und relative Daten abrufen.

5.5. Die Streaming-API

Twitter Streaming API ist nützlich, wenn Aktualisierungen in Echtzeit erforderlich sind. Es behandelt die Thread-Erstellung und hört Ereignisse ab.

Erstellen wir einen Listener, der auf Tweet-Updates eines Benutzers hört:

public static void streamFeed() {

    StatusListener listener = new StatusListener() {

        @Override
        public void onException(Exception e) {
            e.printStackTrace();
        }
        @Override
        public void onDeletionNotice(StatusDeletionNotice arg) {
        }
        @Override
        public void onScrubGeo(long userId, long upToStatusId) {
        }
        @Override
        public void onStallWarning(StallWarning warning) {
        }
        @Override
        public void onStatus(Status status) {
        }
        @Override
        public void onTrackLimitationNotice(int numberOfLimitedStatuses) {
        }
    };

    TwitterStream twitterStream = new TwitterStreamFactory().getInstance();

    twitterStream.addListener(listener);

    twitterStream.sample();
}

Wir können eineprintln()-Anweisung einfügen, um den Ausgabe-Tweet-Stream in allen Methoden zu überprüfen. Allen Tweets sind Standortmetadaten zugeordnet.

Bitte beachten Sie, dass alle von der API abgerufenen Tweets-Daten im UTF-8-Format vorliegen. Da Twitter eine mehrsprachige Plattform ist, sind einige Datenformate möglicherweise aufgrund ihrer Herkunft nicht wiederzuerkennen.

6. Fazit

Dieser Artikel war eine schnelle, aber umfassende Einführung in die Verwendung von Twitter4J mit Java.

Die Implementierung der gezeigten Beispielecan be found on GitHub - Dies ist ein Maven-basiertes Projekt, daher sollte es einfach zu importieren und auszuführen sein, wie es ist. The only change we need to do is to insert our own OAuth credentials.