Introduction à Twitter4J

1. Vue d'ensemble

Dans cet article, nous examinerons l'utilisation de Twitter4J 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 à l'API Twitter.

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

  • Publier un tweet
  • Obtenez 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 que nous pouvons facilement effectuer ces opérations, et elle garantit également la sécurité et la confidentialité d'un utilisateur - pour lequel nous avons naturellement besoin d'avoir des informations d'identification OAuth configurées dans notre application.

3. Dépendances de Maven

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

 org.twitter4j twitter4j-stream 4.0.6 

Pour vérifier si une nouvelle version de la bibliothèque a été publiée, suivez les versions ici.

4. Configuration

La configuration de Twitter4J est simple et peut être effectuée de différentes manières - par exemple dans un fichier texte brut ou une classe Java ou même en utilisant des variables d'environnement.

Examinons chacune de ces façons, 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. Regardons 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 Twitter Developer après avoir créé une nouvelle application.

4.2. Classe Java

Nous pouvons également utiliser une classe ConfigurationBuilder 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' instance Twitter 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éfixe twitter4j 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 des 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 baeldung API"); return status.getText(); }

En utilisant status.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 dans 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 utilisant twitter.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 en utilisant 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éthode sendDirectMessage 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é, sendDirectMessage lèvera une exception avec le code d'exception 150 .

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 baeldung"); 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 un QueryResult et récupérer des données relatives.

5.5. L'API Streaming

L'API Twitter Streaming 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 instruction println () pour vérifier le flux de tweet de sortie dans toutes les méthodes. Tous les tweets sont associés à des métadonnées de localisation.

Veuillez noter que toutes les données des tweets récupérées par l'API sont au format UTF-8 et comme Twitter est une plate-forme multilingue, certains formats de données peuvent être méconnaissables 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 illustrés peut être trouvée sur GitHub - il s'agit d'un projet basé sur Maven, il devrait donc être facile à importer et à exécuter tel quel. Le seul changement que nous devons faire est d'insérer nos propres informations d'identification OAuth.