Il y a quelques temps, je vous avais présenté la procédure pour créer un Bot Twitter avec l’API Twitter en PHP. Cette fois-ci, je vous présente un tutoriel sur l’API Streaming Twitter avec Node JS, utile si vous voulez « interagir avec Twitter en temps réel ».

Pour ce tutoriel, je vous propose de créer un Bot Twitter capable d’ajouter aux favoris, tous les Tweets contenant le hashtag Paris (#Paris).

Créer une application pour le Bot

Pour utiliser l’API Streaming Twitter, vous devez au préalable créer une application (apps.twitter.com).

API Streaming Twitter

Une fois que l’application est créée, générez les clés et les jetons d’accès à l’API puis notez-les dans votre bloc-note, nous allons nous en servir plus bas dans le tutoriel.

consumer-api-streaming-twitter-yubigeek access-api-streaming-twitter-yubigeek

API Streaming Twitter

Une fois que vous avez récupérer les clés et les jetons d’accès, vous devez installer le module Node JS Twitter dans un répertoire de votre choix sur votre ordinateur (un répertoire qui servira à développer votre Bot).

Pour installer un module Node JS, vous devez utiliser “npm” (une commande, installé avec Node JS), puis saisir npm install twitter ou npm i twitter dans une console. La commande rapatrie les fichiers nécessaires au développement du Bot et créée un répertoire “node_modules” contenant les dépendances.

Créez un fichier, “server.js” par exemple, puis ajoutez cette première ligne qui permet de charger la dépendance “twitter” (installée précédemment) :

var Twitter = require('twitter');

Pour se connecter à l’API Streaming Twitter, il faut instancier la “class” Twitter avec les clés et jetons d’accès récupéré précédemment :

var twitter = new Twitter({
    consumer_key: 'CONSUMER_KEY',
    consumer_secret: 'CONSUMER_SECRET',
    access_token_key: 'xxxxxxxxxxx-ACCESS_TOKEN',
    access_token_secret: 'ACCESS_TOKEN_SECRET'
});

Ensuite, nous allons demander au Bot de chercher tous les Tweets qui contiennent le “hashtag” Paris (#Paris), et tout cela en temps réel.

twitter.stream('statuses/filter', { track: '#Paris' },
    function(stream) {

        stream.on('data', function( tweet ) {
            var tweet_id = tweet.id_str;
            var tweet_text = tweet.text;
            console.log(tweet_text);
        });

        stream.on('error', function ( error ) {
            console.error(error);
        });

    });

Pour tester votre Bot, vous pouvez utiliser la commande node server.js à partir de votre console. Vous devriez voir des Tweets qui défile à une vitesse impressionnante, c’est ça l’API Streaming 🙂

Cmder
cmder | Console Emulator

Ajouter les Tweets aux favoris

Plutôt que d’afficher simplement les Tweets dans votre console, je vous propose de donner une utilité à votre Bot, à savoir mettre les Tweets dans les favoris du compte Twitter.

Nous allons utiliser la méthode POST avec “favorites/create” (dev.twitter.com/rest/reference/post/favorites/create).

twitter.post('favorites/create', { id: tweet_id }, function(error, tweet, response) {
 console.log('Tweet N°' + tweet_id + ' ajouté aux favoris avec succès !');
});

A chaque fois qu’un Tweet sera récupéré via le “stream”, il sera mis dans les favoris. Il existe cependant une limite à l’ajout de ces favoris, il faut en effet respecter les règles d’utilisations de l’API Twitter.

var Twitter = require('twitter');

var twitter = new Twitter({
    consumer_key: 'CONSUMER_KEY',
    consumer_secret: 'CONSUMER_SECRET',
    access_token_key: 'xxxxxxxxxxx-ACCESS_TOKEN',
    access_token_secret: 'ACCESS_TOKEN_SECRET'
});

twitter.stream('statuses/filter', { track: '#Paris' },
    function(stream) {

        stream.on('data', function( tweet ) {
            var tweet_id = tweet.id_str;
            var tweet_text = tweet.text;
            console.log(tweet_text);

            twitter.post('favorites/create', { id: tweet_id }, function(error, tweet, response) {
                console.log('Tweet N°' + tweet_id + ' ajouté aux favoris avec succès !');
            });
        });

        stream.on('error', function ( error ) {
            console.error(error);
        });

    });

Tâche en arrière-plan

Pour laisser tourner le Bot, il existe un paquet Node JS qui permet de faire tourner la tâche en arrière-plan sur votre ordinateur ou sur votre serveur.

Pour cela, il faut installer le paquet « forever » avec la commande npm install forever --global ou npm i forever -g.

Pour utiliser “forever” et laisser tourner le Bot en arrière-plan, il suffit de saisir la commande suivante dans votre console :

forever start --minUptime 1000 --spinSleepTime 1000 --append --uid "monbot" server.js

Pour l’arrêter ou le redémarrer (après une modification par exemple), saisissez la commande forever stop monbot ou forever restart monbot.

API Streaming Twitter : Bot Node JS
Voter pour cet article
2 commentaires
  1. Bonjour, bravo pour la technique.
    Ce qui serait également intéressant c’est d’avoir des bouts de code ou bien une technique pour que Twitter ne bloque pas le bot…. Utilisation de proxies, VPN ou bien tout simplement un labs de temps entre chaque ajout aux favoris ? En tout cas c’est déjà bien instructif merci.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Inscrivez vous à notre newsletter

Soyez informé des derniers articles sur YubiGeek. Saisissez votre adresse email et validez le formulaire. Un email de confirmation vous sera communiqué.

Vous devriez également aimer

LinkedIn : automatiser l’ajout de contacts avec un script

LinkedIn est le réseau social qu’il ne faut pas négliger quand on…

Comment créer un Bot Twitter ?

Dans ce tutoriel, je vais vous expliquer comment mettre en place un…

Comment récupérer l’adresse email d’un compte avec l’API Twitter ?

Dans ce billet, nous allons nous servir de la librairie TwitterOauth qui…

Différentes façons de planifier ses Tweets sur Twitter

Vous partez en vacances, ou vous souhaitez tout simplement programmer vos Tweets à…