Vous cherchez un moyen de rendre Twitter plus utile, ne serait-ce que pour les autres ? Une façon consiste à créer un bot Twitter automatisé qui tweete des images avec des descriptions utiles. Vous pouvez le faire manuellement… ou vous pouvez le construire avec Node.js et l'héberger sur un Raspberry Pi. Lisez la suite pour savoir comment.
Si vous avez déjà été sur Twitter et vu des comptes qui publient des photos, des faits ou des dessins animés, etc., il est très probable que ceux-ci soient automatisés. C'est un excellent moyen de constituer une audience de personnes intéressées par le même sujet.
Mais il y a une autre raison, au-delà des retweets et des suivis. Construire un bot Twitter vous apprendra quelques compétences de programmation utiles. Nous avons déjà examiné comment créer un bot Twitter de base avec Python (également sur un Raspberry Pi), mais cette fois, nous adoptons une approche différente.
Dans ce projet, nous allons utiliser Node.js pour créer un bot de photo-tweeting sur un Raspberry Pi. Les photos seront des photos de la Première Guerre mondiale, accompagnées d'une courte phrase et d'une attribution). Ces informations seront stockées dans un tableau, une base de données de base.
Si vous souhaitez créer un bot de tweet photo, vous devrez commencer par collecter les images que vous souhaitez partager. Il doit s'agir soit de vos propres images, soit de celles que vous avez acquises sous une licence Creative Commons ou une autre licence open source.
Vous devez également noter l'attribution et les autres informations que vous souhaitez accompagner des images. Nous reviendrons sur ces informations plus tard, une fois que le bot sera opérationnel.
Commencez par installer Node.js. Vous devriez déjà avoir un Raspberry Pi opérationnel, avec Raspbian installé. Pour ce projet, nous recommandons un Raspberry Pi 2 ou ultérieur; le projet a été testé sur le Raspberry Pi 3 B+.
Dans le terminal (ou via SSH), mettez à jour la liste des packages système et mettez à niveau vers la dernière version :
sudo apt-get update
sudo apt-get dist-upgrade
Suivez l'invite à l'écran et attendez que votre Pi se mette à jour. Une fois que vous avez terminé, redémarrez avec
redémarrage sudo
Lorsque vous avez terminé, utilisez curl pour télécharger Node.js :
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
Ensuite, installez-le avec
sudo apt-get install -y nodejs
Lorsque tout est terminé, exécutez une vérification pour vous assurer que le logiciel a été installé correctement. Le plus simple est de vérifier le numéro de version :
nœud -v
La réponse devrait être quelque chose comme v8.11.3 (ou supérieur). Si vous voyez quelque chose comme ça, vous pouvez être sûr que Node.js est prêt à être utilisé.
L'étape suivante consiste à saisir le code qui créera le bot. Commencez par créer un répertoire :
mkdir twitterbot
Ensuite, remplacez-le par le nouveau répertoire de votre bot :
cd twitterbot
Ici, créez un fichier appelé server.js
sudo nano serveur.js
Dans ce fichier, saisissez une seule ligne :
console.log('Je suis un bot Twitter !');
Appuyez sur Ctrl + X pour enregistrer et quitter, puis exécutez le script :
nœud '/home/pi/twitterbot/server.js'
Cela devrait renvoyer la phrase "Je suis un bot Twitter!". Maintenant que vous avez confirmé que cela fonctionne, il est temps d'installer la bibliothèque Twit avec npm (le Gestionnaire de packages de nœuds ). Assurez-vous qu'il est installé en saisissant :
npm -v
Encore une fois, vous devriez voir un numéro de version affiché.
Suivez ceci avec :
npm init
Cela commence par vous demander des informations sur l'application Node.js que vous créez. Les options par défaut sont affichées (comme ceci) afin que vous puissiez simplement appuyer sur Entrée pour les accepter. Vous pouvez également choisir de saisir vos propres informations. Une fois cette configuration terminée, il vous sera demandé de confirmer les détails par "oui".
La prochaine étape consiste à installer le module Twit depuis le npm.
npm install twit --save
Patientez pendant le téléchargement des fichiers dans le sous-répertoire node_modules. Une fois cela fait, ouvrez à nouveau le fichier server.js dans nano.
sudo nano serveur.js
Ici, supprimez la commande que vous avez entrée précédemment, en la remplaçant par :
var fs =require('fs'),
chemin =require('chemin'),
Twit =exiger('twit'),
config =require(path.join(__dirname, 'config.js'));
Enregistrez et quittez comme avant.
Pour créer un bot Twitter fonctionnel, vous devez créer une application Twitter. Il s'agit d'un processus simple, qui nécessite que vous vous inscriviez d'abord à un nouveau compte Twitter. Notez que cela nécessite également un numéro de téléphone pour vérifier le compte, et une fois cela fait, rendez-vous sur developer.twitter.com pour créer l'application.
Si vous n'avez pas de compte développeur, cela peut prendre un certain temps, car il y a un certain nombre de formulaires à remplir. C'est une mesure que Twitter a prise pour éviter le spam, alors prenez votre temps et répondez aux questions avec précision.
Cliquez sur Créer une application , et ajoutez les détails demandés. Au moment de la rédaction, le système de développement est en cours de refonte, vous devrez donc peut-être attendre quelques jours (et répondre à quelques questions supplémentaires).
Ensuite, passez aux clés et jetons et sous Autorisations trouver l'autorisation d'accès et assurez-vous qu'il est défini sur Lecture et écriture (utilisez Modifier sinon). Passez ensuite à Clés et jetons et notez ce qui suit :
Sous Jeton d'accès, cliquez sur Créer pour générer :
Ce sont les clés API dont vous aurez besoin pour donner au bot l'accès à votre compte Twitter.
De retour dans la ligne de commande, créez config.js dans nano :
sudo nano config.js
Ajoutez ce qui suit
var config ={
clé_consommateur : 'XXXXX',
secret_consommateur : 'XXXXX',
access_token : 'XXXXX',
access_token_secret : "XXXXX"
}
module.exports =config;
Là où il est écrit "XXXXX", remplacez vos propres détails de clé API correspondante.
Enregistrez et quittez, puis ouvrez server.js.
sudo nano serveur.js
Ici, ajoutez les lignes suivantes à la fin du fichier :
var T =new Twit(config);
T.post('status/update', { status :'Mon premier tweet !' }, function(err, data, response) {
console.log(données)
});
Cela devrait ressembler à ceci :
Encore une fois, enregistrez et quittez, puis dans la ligne de commande, entrez
nœud serveur.js
Ouvrez votre compte Twitter dans le navigateur pour voir les résultats :
Vous avez confirmé que le bot tweete, il est donc temps de lui donner quelque chose à faire !
Pour tweeter des photos, copiez les images que vous avez collectées dans un dossier (généralement nommé images ). Commencez avec une douzaine environ.
Revenez ensuite au document server.js :
sudo nano serveur.js
Ici, supprimez le code qui a envoyé le tweet, la ligne commençant par T.post('statuses/update').
Ensuite, remplacez ceci par une fonction, appelée random_from_array . Cela sélectionnera une image au hasard dans le dossier des images.
fonction random_from_array(images){
return images[Math.floor(Math.random() * images.length)] ;
}
Une fois que vous avez fait cela, vous devrez ajouter une deuxième fonction, upload_random_image :
fonction upload_random_image(images){
console.log('Ouverture d'une image...');
var image_path =path.join(__dirname, '/images/' + random_from_array(images)),
b64content =fs.readFileSync(image_path, { encoding:'base64' });
console.log('Téléchargement d'une image...');
T.post('media/upload', { media_data :b64content}, function (err, data, response) {
si (erreur){
console.log('ERREUR :');
console.log(err);
}
autre{
console.log('Image téléchargée !');
console.log('En train de le tweeter...');
T.post('statuts/mise à jour', {
media_ids :nouveau tableau (data.media_id_string)
},
fonction (erreur, données, réponse) {
si (erreur){
console.log('ERREUR :');
console.log(err);
}
autre{
console.log('A posté une image !');
}
}
);
}
});
}
Cette fonction sélectionne une image au hasard dans le dossier d'images et, une fois sélectionnée, est téléchargée sur Twitter à l'aide de l'API media/upload.
Ensuite, ajoutez le code suivant. Cela trouvera le répertoire des images et en prendra une image, en en publiant une au hasard toutes les 60 secondes. Vous pouvez (et devriez) modifier ce timing, qui est représenté dans le code par le chiffre 60000. Des écarts plus longs sont conseillés.
setInterval(function(){
upload_random_image(images);
}, 60000);
}
});
Enregistrez ceci avec Ctrl + X , puis Oui pour enregistrer. (La source GitHub n'est plus disponible).
Une seule utilisation du node server.js commande invitera alors les photos à commencer à tweeter ! (Si vous devez mettre fin aux messages, appuyez sur Ctrl + Z pour annuler le script server.js.)
Si vous avez besoin d'ajouter du texte à vos images, cela peut être fait en utilisant un tableau. Le tableau fera référence aux noms de fichiers des images et listera le texte à ajouter. Par exemple, vous pouvez ajouter une attribution à des images que vous n'avez pas prises. Ou vous pouvez ajouter des faits ou une citation.
Commencez par créer images.js
sudo nano images.js
Ici, ajoutez le code suivant. Il s'agit d'un tableau, avec deux éléments, fichier et source. Ceux-ci contiennent le nom de fichier de l'image et l'attribution (généralement une URL).
var images =[
{
fichier :'image0001.png',
source :'http://www.example.com/image0001.png'
},
{
fichier :'image0002.png',
source :'http://www.example.com/image0002.png'
},
]
Répétez au besoin pour chaque image, puis terminez le fichier images.js avec :
module.exports =images;
Enregistrez et fermez le fichier, puis ouvrez à nouveau server.js et ajoutez ceci à la liste des variables :
images =require(path.join(__dirname, 'images.js'));
Enregistrez et quittez, puis redémarrez le bot Twitter avec le node server.js commande à nouveau.
Vous pouvez également utiliser le champ "source" pour inclure du texte expliquant l'arrière-plan de l'image. Cela peut être inclus à côté de l'URL.
À présent, vous devriez avoir un bot Twitter à publication automatique opérationnel, partageant des photos, des faits et des attributs sur votre sujet donné.
Pour résumer, le processus est :
Peut-être que la meilleure chose à ce sujet est que le code peut être utilisé pour tweeter des photos, des faits et des attributs sur littéralement n'importe quel sujet.
Vous voulez savoir quels autres bots vous pourriez exécuter avec une configuration similaire ? Consultez notre liste des meilleurs projets de bot Twitter pour le Raspberry Pi !