Raspberry Pi : un compteur d’abonné vocal pour les réseaux sociaux

Raspberry Pi : un compteur d’abonné vocal pour les réseaux sociaux

Cela fait quelques temps que je « bidouille » mon Raspberry Pi, et j’y ai enfin trouvé une utilité : un compteur d’abonné vocal pour les réseaux sociaux. Je vous propose donc un petit tutoriel pour sa mise en place avec NodeJS.

Dans ce tutoriel, nous verrons comment mettre en place ce compteur d’abonné vocal pour Facebook, Twitter, et Instagram. Si vous êtes vous-même développeur, il vous sera facile de modifier le code et d’ajouter un « provider » (fournisseur, ou réseau social).

Compteur d’abonné vocal pour les réseaux sociaux

Prémices de notre projet NodeJS

Pour développer notre projet, nous aurons besoin d’installer des dépendances, pour cela, il suffit d’utiliser la commande suivante : npm install

Liste des dépendances à installer :

  • fb : la dépendance utilisée pour l’API Facebook
  • instagram-node : la dépendance utilisée pour l’API Instagram
  • twitter : la dépendance utilisée pour l’API Twitter
  • google-tts-api : un « text-to-speech » pour faire parler votre compteur vocal
  • node-schedule : un planificateur de tâches pour exécuter les actions
  • play-sound : une dépendance nécessaire à l’exécution des fichiers audios
  • q : une librairie de promesse

Installez donc ces dépendances avec la commande suivante : npm install fb google-tts-api instagram-node twitter node-schedule play-sound q –save

Une fois installées, nous pourrons les inclure dans notre projet.

Créez un dossier dans votre répertoire de développement habituel. Puis créez votre premier fichier NodeJS que nous appellerons par exemple index.js

Ajoutez-y ces premières lignes :

var player = require('play-sound')(opts = {});var googleTTS = require('google-tts-api');var schedule = require('node-schedule');

Compteur d’abonné pour Twitter

Créez un autre dossier « providers/ » dans le répertoire de votre projet et ajoutez votre premier fichier : twitter.js

var Twitter = require('twitter'); // On inclut la librairie Twitter var Q = require('q'); // On inclut la librairie q (promesse) var config = require('../config'); // On inclut le fichier config.json  // Connexion à Twitter var client = new Twitter({     consumer_key: config.twitter.consumer_key, // consumer_key     consumer_secret: config.twitter.consumer_secret, // consumer_secret     access_token_key: config.twitter.access_token_key, // access_token_key     access_token_secret: config.twitter.access_token_secret // access_token_secret });  // Export du code avec la méthode get() exports.get = function(callback) {     // Création d'une promesse     var deferred = Q.defer();      // On récupère les credentials du compte Twitter     client.get('account/verify_credentials', {}, function (error, data, response) {         if(!error && data && data.followers_count) {             // Résolution de la promesse, on retourne le nombre d'abonné Twitter             deferred.resolve(data.followers_count);         } else {             // Erreur sur la promesse             deferred.reject(error);         }     });      deferred.promise.nodeify(callback);     return deferred.promise; };

On ajoute la ligne suivante dans notre fichier index.js :

var twitter = require('./providers/twitter');

On créé à présent une fonction qui va récupérer le nombre d’abonné, et vérifier s’il est positif ou négatif par rapport au précédant :

var counterTwitter = 0; // On déclare la variable counterTwitter à zéro  var getCounterTwitter = function (spoke) { // Nouvelle fonction getCounterTwitter avec spoke (boolean) en paramètre     twitter.get(function (error, result) { // On récupère la promesse faite par notre "provider" précédemment         if(!error && result) {             if(spoke) { // Si la variable "spoke" est égale à true (boolean)                 if(result > counterTwitter) { // Si le nombre d'abonné est supérieur à la variable counterTwitter, alors vous avez gagné un nouvel abonné                     var text = 'Vous avez gagné un nouvel abonné sur Twitter! ' + result + ' au total.';                     console.log(text);                     speak(text); // On exécute la fonction speak() et on lui passe en paramètre la variable "text"                 } else if(result 

On doit à présent faire parler le résultat ! Pour cela nous allons utiliser une librairie de Google, le « text-to-speech » afin de transformer du texte en fichier audio, avec la même méthode utilisée pour Google Traduction.

var speak = function (text) { // Nouvelle fonction speak avec text (string) en paramètre     googleTTS(text, 'fr', 1) // On utilise googleTTS, qui prend en paramètre la variable text passée dans la fonction, puis la langue parlée, puis la vitesse de parole         .then(function (url) { // La promesse nous retourne une fonction avec url comme argument             // On veut faire parler ce fichier audio dans NodeJS         })         .catch(function (err) {             console.error(err.stack); // Oups, une erreur !         }); };

Pour exécuter ce fichier audio récupéré, il suffit d’utiliser la librairie « play-sound » :

player.play('fichier-audio.mp3', function (err, stdout, stderr) { // On lui passe en paramètre le fichier audio     // });

Dans notre cas, le code sera celui-ci :

var speak = function (text) {     googleTTS(text, 'fr', 1)         .then(function (url) {             player.play(url, function (err, stdout, stderr) {                 console.log('Le fichier audio généré par Google a été exécuté !');             });         })         .catch(function (err) {             console.error(err.stack);         }); };

On planifie désormais la vérification du nombre d’abonné toutes les minutes :

schedule.scheduleJob('* * * * *', function(){     getCounterTwitter(true); });

Puis on ajoute cette ligne au code afin de vérifier le nombre d’abonné au démarrage du script NodeJS :

getCounterTwitter(false);

Création du fichier config.json

{   "twitter": {     "consumer_key": ",     "consumer_secret": ",     "access_token_key": ",     "access_token_secret": "   } }

Pour voir le projet en entier (avec Twitter, Facebook, et Instagram), vous pouvez vous rendre sur le Github du projet…

Total
0
Shares
Laisser un commentaire
Previous Post
Comment faire une capture d’écran sur un PC avec Movavi ?

Comment faire une capture d’écran sur un PC avec Movavi ?

Next Post
Raspberry Pi : un compteur d’abonné visuel pour les réseaux sociaux

Raspberry Pi : un compteur d’abonné visuel pour les réseaux sociaux

Related Posts