Introduction à Twitter4J

Introduction à Twitter4J

1. Vue d'ensemble

Dans cet article, nous examinerons l'utilisation deTwitter4J dans une application Java pour communiquer avec Twitter.

2. Twitter4J

Twitter4J est une bibliothèque Java open source, qui fournit une API pratique pour accéder auxTwitter API.

En termes simples, voici comment nous pouvons interagir avec l'API Twitter; nous pouvons:

  • Poster un tweet

  • Obtenir la chronologie d'un utilisateur, avec une liste des derniers tweets

  • Envoyer et recevoir des messages directs

  • Recherchez des tweets et bien plus encore

Cette bibliothèque garantit la possibilité d'effectuer facilement ces opérations, ainsi que la sécurité et la confidentialité d'un utilisateur - pour lequel nous avons naturellement besoin de disposer d'informations d'identification OAuth configurées dans notre application.

3. Dépendances Maven

Nous devons commencer par définir la dépendance de Twitter4J dans nospom.xml:


    org.twitter4j
    twitter4j-stream
    4.0.6

Pour vérifier si une nouvelle version de la bibliothèque a été publiée -track the releases here.

4. Configuration

La configuration de Twitter4J est simple et peut être effectuée de différentes manières, par exemple dans un fichier texte ou une classe Java, ou même à l'aide de variables d'environnement.

Examinons chacune de ces méthodes, une à la fois.

4.1. Fichier texte brut

Nous pouvons utiliser un fichier texte brut - nommétwitter4j.properties - pour contenir nos détails de configuration. Examinons les propriétés qui doivent être fournies:

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

Tous ces attributs peuvent être obtenus à partir de la console des développeurs Twitter après avoirmake a new app.

4.2. Classe Java

Nous pouvons également utiliser une classeConfigurationBuilder pour configurer Twitter4J par programmation en Java:

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();

Notez que nous utiliserons l'instanceTwitter dans la section suivante - lorsque nous commencerons à récupérer des données.

4.3. Variables d'environnement

La configuration via des variables d'environnement est un autre choix que nous avons. Si nous faisons cela, notez que nous aurons besoin d'un préfixetwitter4j dans nos variables:

$ 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. Ajout / récupération de données de Tweet en temps réel

Avec une application entièrement configurée, nous pouvons enfin interagir avec Twitter.

Regardons quelques exemples.

5.1. Publier un Tweet

Nous allons commencer par mettre à jour un tweet sur Twitter:

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

En utilisantstatus.getText(),, nous pouvons récupérer le tweet qui vient d'être publié.

5.2. Obtenez la chronologie

Nous pouvons également récupérer une liste de tweets à partir de la chronologie de l'utilisateur:

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

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

En utilisanttwitter.getHomeTimeline(),, nous obtenons tous les tweets publiés par l'ID de compte actuel.

5.3. Envoyer un message privé

L'envoi et la réception d'un message direct aux abonnés est également possible à l'aide de Twitter4j:

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

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

La méthodesendDirectMessage prend deux paramètres:

  • RecipientName: le nom d'utilisateur Twitter d'un destinataire de message

  • msg: contenu du message

Si le destinataire n'est pas trouvé, lesendDirectMessage lèvera une exception avec le code d'exception150.

5.4. Rechercher des tweets

Nous pouvons également rechercher des tweets contenant du texte. En faisant cela, nous obtiendrons une liste de tweets avec le nom d'utilisateur des utilisateurs.

Voyons comment une telle recherche peut être effectuée:

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());
}

De toute évidence, nous pouvons parcourir chaque tweet reçu dans unQueryResult et récupérer des données relatives.

5.5. L'API Streaming

Twitter Streaming API est utile lorsque des mises à jour sont nécessaires en temps réel; il gère la création de threads et écoute les événements.

Créons un auditeur qui écoute les mises à jour de tweet d'un utilisateur:

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();
}

Nous pouvons mettre une instructionprintln() pour vérifier le flux de tweet de sortie dans toutes les méthodes. Tous les tweets ont des métadonnées de localisation associées.

Veuillez noter que toutes les données tweets récupérées par l'API sont au format UTF-8 et que Twitter étant une plate-forme multilingue, certains formats de données peuvent être non reconnaissables en fonction de leur origine.

6. Conclusion

Cet article était une introduction rapide mais complète à l'utilisation de Twitter4J avec Java.

L'implémentation des exemples affichéscan be found on GitHub - c'est un projet basé sur Maven, il devrait donc être facile à importer et à exécuter tel quel. The only change we need to do is to insert our own OAuth credentials.