Comment créer un Twitterbot avec Python 3 et la bibliothèque Tweepy

introduction

Un Twitterbot est un programme qui s’intègre à la plate-forme Twitter, publiant, retweetant, aimant ou suivant automatiquement d’autres utilisateurs. Les Twitterbots peuvent s’avérer utiles en fournissant des informations intéressantes ou des mises à jour. Ils peuvent également être amusants ou amusants.

Il est important de faire attention lors de la création de Twitterbots, car non seulement le harcèlement et les spams ne sont pas acceptables, mais ils entraîneront la suspension de votre compte Twitterbot pour violation des conditions d’utilisation de Twitter. Avant de créer un Twitterbot, vous devez vous familiariser avec les règles et meilleures pratiques d’automation de Twitter pour https://support.twitter.com/articles/76915#&;] afin de vous assurer que votre Twitterbot est un bon membre de la communauté Twitter.

Ce tutoriel vous guidera à travers deux programmes Twitterbot, l’un qui https://www.digitalocean.com/community/tutorials/how-to-create-a-twitterbot-with-python-3-and-the-tweepy-library# twitterbot-that-tweets-from-a-file [tweets d’un fichier], et qui https://www.digitalocean.com/community/tutorials/how-to-create-a-twitterbot-with-python-3 -et-la-bibliothèque-tweepy # twitterbot-that-retweets, -sollows, -and-favourites [retweets, follow, and favourites]. De plus, nous passerons par storing vos identifiants dans un fichier de programme distinct et sur https://www.digitalocean.com/community/tutorials/how-to-create-a-twitterbot-with-python-3-and-the-tweepy-library#keeping- the-twitterbot-running [garder le Twitterbot en cours d’exécution sur un serveur]. Chacune de ces étapes est facultative, mais elles sont présentées dans l’ordre dans lequel vous les exécuteriez.

Conditions préalables

Bien que vous puissiez utiliser un ordinateur local pour configurer et exécuter un Twitterbot, si vous souhaitez qu’il fonctionne en permanence, un https://www.digitalocean.com/community/tutorials/how-to-install-python-3- et-configurer-un-environnement-programmation-sur-un-serveur-16-04-serveur [environnement de programmation Python sur un serveur] serait idéal pour ce projet.

De plus, vous devez avoir un compte https://twitter.com [Twitter] associé à un numéro de téléphone valide, que vous pouvez ajouter via la section * https: //twitter.com/settings/devices [Mobile] * de vos * Paramètres * lorsque vous êtes connecté. Vous devrez créer une application Twitter et installer la bibliothèque Python Tweepy, en suivant notre procédure «https://www.digitalocean.com/community/tutorials/how-to-create-a-twitter-app [ Comment créer une application Twitter] ». Avant de commencer ce didacticiel, vous devez avoir votre clé de consommateur, votre secret de consommateur, votre jeton d’accès et votre secret de jeton d’accès.

Dans le cadre de ce projet, nous utiliserons Python pour lire les fichiers. Pour vous familiariser avec le travail sur les fichiers texte en Python, vous pouvez lire notre section «https://www.digitalocean.com/community/tutorials/how-to-handle-plain-text-files-in-python-3[How To Gérer les fichiers de texte brut en Python 3].

Stockage des informations d’identification

Vous pouvez conserver votre clé de consommateur Twitter, votre secret de consommateur, votre jeton d’accès et votre secret de jeton d’accès en haut de votre fichier de programme. Toutefois, pour des raisons de bonnes pratiques, stockez-les dans un fichier Python séparé auquel notre fichier de programme principal peut accéder. . Toute personne ayant accès à ces strings peut utiliser votre compte Twitter, vous ne souhaitez donc pas les partager ou Rendez-les publics. En plus de la sécurité, la conservation d’un fichier séparé peut nous permettre d’accéder facilement à nos informations d’identification dans chaque fichier de programme que nous créons.

Pour commencer, nous devons nous assurer que nous sommes dans notre environnement virtuel avec la bibliothèque Tweepy installée. Lorsque l’environnement est activé, nous pouvons ensuite créer un répertoire pour que notre projet reste organisé:

mkdir twitterbot
cd twitterbot

Ensuite, ouvrons un éditeur de texte tel que nano et créons le fichier + credentials.py + pour stocker ces identifiants:

nano credentials.py

Nous allons créer des variables pour chaque clé, secret et jeton que nous avons générés (si vous en avez besoin générer ceux-ci, suivez https://www.digitalocean.com/community/tutorials/how-to-create-a-twitter-app#step-2-%E2%80%94-modify-your-application%E2%80 % 99s-permission-level-and-generate-your-access-tokens [ces étapes]. Remplacez les éléments entre guillemets simples par vos chaînes uniques sur le site Web des applications Twitter (et conservez les guillemets simples).

credentials.py

consumer_key = ''
consumer_secret = ''
access_token = ''
access_token_secret = ''

Nous allons appeler ces variables dans nos autres fichiers de programme. La création de ce fichier + credentials.py distinct nous permet également de l’ajouter à votre fichier` + .gitignore` au cas où nous prévoyions de publier notre code via Git.

Twitterbot qui tweets à partir d’un fichier

Nous pouvons utiliser la capacité de Python à manipuler et à lire des fichiers pour mettre à jour notre statut Twitter. Pour cet exemple, nous utiliserons un fichier qui existe déjà, mais vous voudrez peut-être créer votre propre fichier ou modifier un fichier existant.

Configuration du fichier de programme

Commençons par créer notre fichier de programme en utilisant un éditeur de texte tel que nano:

nano twitterbot_textfile.py

Ensuite, configurons nos identifiants Twitter en les ajoutant en haut de notre fichier ou en important ce que nous avons stocké dans le fichier + credentials.py + que nous avons configuré dans la page https://www.digitalocean.com/community. / tutorials / comment-créer-un-twitterbot-avec-python-3-and-the-tweepy-library # storing-credentials [section ci-dessus]. Nous ajouterons également 3 lignes pour interagir avec les variables d’identité via la bibliothèque Tweepy.

twitterbot_textfile.py

# Import our Twitter credentials from credentials.py
from credentials import *

# Access and authorize our Twitter credentials from credentials.py
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

Pour en savoir plus sur cette configuration, ne manquez pas de regarder «https://www.digitalocean.com/community/tutorials/how-to-create-a-twitter-app#step-4-%E2%80 % 94-créer-une-application-python-qui-interagit-avec-twitter [Comment créer une application Twitter]. "Pour en savoir plus sur OAuth, vous pouvez lire https://www.digitalocean.com/community/ tutorials / an-introduction-to-oauth-2 [notre introduction].

Obtenir un fichier texte à lire

Pour lire ce compte Twitter, nous avons besoin d’un fichier texte, nous allons donc en télécharger un de Project Gutenberg, un projet bénévole qui fournit des livres numériques gratuits (principalement du domaine public) aux lecteurs. Sauvegardons une traduction anglaise de _http: //www.gutenberg.org/ebooks/164 [Vingt mille lieues sous les mers] _ de Jules Verne dans un fichier nommé + verne.txt + avec + curl +:

curl http://www.gutenberg.org/cache/epub/164/pg164.txt --output verne.txt

Nous utiliserons les fonctionnalités de gestion de fichiers de Python, d’abord sur https://www.digitalocean.com/community/tutorials/how-to-handle-plain-text-files-in-python-3#step-2-%E2 % 80% 94-opening-a-file [ouvrir le fichier], puis sur https://www.digitalocean.com/community/tutorials/how-to-handle-plain-text-files-in-python-3# step-3-% E2% 80% 94-reading-a-file [lire les lignes du fichier], et enfin https://www.digitalocean.com/community/tutorials/how-to-handle-plain-text -files-in-python-3 # step-5-% E2% 80% 94-fermer un fichier [fermer le fichier].

Ouverture et lecture du fichier avec Python

Avec notre fichier téléchargé, nous pouvons créer des variables et ajouter les fonctions appropriées sous les lignes que nous venons de configurer pour gérer les informations d’identification.

twitterbot_textfile.py

from credentials import *

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

# Open text file verne.txt (or your chosen file) for reading


# Read lines one by one from my_file and assign to file_lines variable


# Close file

Avec cette configuration, nous pouvons maintenant ajouter du code pour que ces lignes soient affichées sous forme de mises à jour de statut sur notre compte Twitter.

Lignes de tweeting à partir du fichier texte

Avec nos lignes de fichiers stockées dans une variable, nous sommes prêts à mettre à jour votre compte Twitter Bot.

Nous allons utiliser la bibliothèque Tweepy pour interagir avec l’API Twitter. Nous devrions donc import la bibliothèque dans notre programme.

Nous allons également automatiser notre tweeting de manière temporelle. Nous devons donc importer le module + time +. Pour nos besoins, nous n’utiliserons que la fonction + sleep () +, nous n’importerons donc que cette méthode spécifique.

twitterbot_textfile.py

# Add all import statements at top of file


from credentials import *
...

Les mises à jour de statut de notre compte Twitter proviendront des lignes de + verne.txt + que nous avons assignées à la variable + file_lines +. Ces lignes doivent être itérées, nous allons donc commencer par créer un https://www.digitalocean.com/community/tutorials/how-to-construct-for-loops-in-python-3 [+ pour + boucle]. Pour vous assurer que tout fonctionne correctement, utilisons la fonction + print () + pour imprimer ces lignes:

twitterbot_textfile.py

import tweepy
from time import sleep
from credentials import *

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

my_file=open('verne.txt','r')
file_lines=my_file.readlines()
my_file.close()

# Create a for loop to iterate over file_lines

Si vous exécutez le programme à ce stade avec la commande + python twitter_textfile.py +, vous verrez la sortie complète du fichier + verne.txt + sur votre fenêtre de terminal car nous n’avons pas d’autre code ni l’appel à arrêter.

Plutôt que de recevoir une sortie dans notre fenêtre de terminal, nous voulons que chaque ligne devienne un nouveau tweet. Pour ce faire, nous devrons utiliser la fonction tweepy + api.update_status () +. Ceci est utilisé pour mettre à jour le statut de l’utilisateur authentifié, mais le sera seulement si le statut est: 1) pas un doublon, ou 2) 140 caractères ou moins.

Ajoutons cette fonction et y passons la variable + line +:

twitterbot_textfile.py

import tweepy
from time import sleep
from credentials import *

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

my_file=open('verne.txt','r')
file_lines=my_file.readlines()
my_file.close()

for line in file_lines:
   print(line)

Notre programme est maintenant configuré pour tweeter des lignes sur notre compte.

Tweets sur le traitement et la synchronisation des exceptions

Avec un programme de travail à ce stade, si nous exécutons le code, la première ligne sera imprimée. Cependant, nous n’irons pas loin avant de recevoir une erreur:

Output...
tweepy.error.TweepError: [{'code': 170, 'message': 'Missing required parameter: status.'}]

En effet, la deuxième ligne du fichier est une ligne vide qui ne peut pas être utilisée comme statut. Pour gérer ce problème, n’imprimons la ligne que si elle n’est pas vierge. Nous allons ajouter une instruction + if qui ressemble à ceci:

if line != '\n':

En Python, + \ n + est le caractère escape, donc notre déclaration + si + indique au programme, si la ligne n’est pas égale (+! = +) à une ligne vierge, alors nous devrions aller de l’avant et l’imprimer. Sinon, Python devrait ignorer la ligne. Nous examinerons la déclaration dans le contexte ci-dessous.

Une dernière chose à ajouter est + sleep () + pour s’assurer que ces tweets ne sortent pas tous en même temps. La fonction + sleep () + fonctionne avec la mesure de l’unité de temps en secondes; si nous voulons une heure entre les tweets, nous devrions écrire la fonction sous la forme + sleep (3600) + car il y a 3 600 secondes dans une heure.

Pour nos besoins de test (et uniquement à nos fins de test), utilisons 5 secondes à la place. Une fois que nous utilisons régulièrement Twitterbot, nous souhaitons augmenter considérablement le temps entre les tweets.

Vous pouvez jouer avec où vous ajoutez + sleep (5) + - où nous l’avons placé ci-dessous causera un peu plus de retard entre les tweets puisqu’il y aura un retard même si la ligne est vide.

twitterbot_textfile.py

import tweepy
from time import sleep
from credentials import *

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

my_file=open('verne.txt','r')
file_lines=my_file.readlines()
my_file.close()

for line in file_lines:
 print(line)

# Add if statement to ensure that blank lines are skipped

     api.update_status(line)

# Add an else statement with pass to conclude the conditional statement



# Add sleep method to space tweets by 5 seconds each

Lorsque vous exécutez le programme à ce stade (si vous ne l’avez pas encore fait auparavant), vous commencez à recevoir les premières lignes du fichier sur votre terminal. Ces lignes seront également publiées sur votre compte Twitter authentifié.

Toutefois, si vous avez déjà exécuté le programme, le message d’erreur suivant peut s’afficher:

Outputtweepy.error.TweepError: [{'code': 187, 'message': 'Status is a duplicate.'}]

Vous pouvez résoudre ce problème en supprimant votre tweet précédent de votre compte Twitter ou en supprimant la première ligne de votre fichier + verne.txt + et en le sauvegardant.

Pour empêcher le programme de sortir les mises à jour de statut sur votre compte Twitter, maintenez les touches + CTRL + (ou + control +) et + C + enfoncées sur votre clavier pour interrompre le processus dans la fenêtre de votre terminal.

À ce stade, votre programme peut s’exécuter, mais gérons cette erreur que nous avons lorsque le statut est dupliqué. Pour cela, nous allons ajouter un `+ try …​ sauf + `bloquer notre code et laisser la console imprimer le motif de l’erreur.

twitterbot_textfile.py

import tweepy
from time import sleep
from credentials import *

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

my_file=open('verne.txt','r')
file_lines=my_file.readlines()
my_file.close()

for line in file_lines:
# Add try ... except block to catch and output errors

       print(line)
       if line != '\n':
           api.update_status(line)
       else:
           pass


   sleep(5)

L’exécution du programme maintenant gérera les exceptions afin que vous puissiez continuer à exécuter le programme. Vous pouvez modifier le délai entre les tweets sur, disons, 15 minutes, en modifiant la fonction + sleep (5) + en + + sleep (900) +.

Améliorer le programme Twitterbot

Pour continuer à améliorer votre programme, vous pouvez envisager de définir certains de ces blocs de code en tant que fonctions et d’ajouter des fonctions + sleep () + pour gérer différentes situations, comme dans:

twitterbot_textfile.py

...
# Tweet a line every 15 minutes

   for line in file_lines:
       try:
            print(line)
            if line != '\n':
                api.update_status(line)

            else:
               pass
       except tweepy.TweepError as e:
           print(e.reason)

Au fur et à mesure que vous travaillez avec des fichiers en Python, vous pouvez créer des scripts distincts pour découper les lignes de vos fichiers de manière plus logique, en tenant compte de la limite de tweet de 140 caractères.

À ce stade, nous avons un Twitterbot entièrement fonctionnel qui tweete à partir d’un fichier source. Dans la section suivante, nous évoquerons un Twitterbot alternatif qui retweet, suit et favoris. Vous pouvez également passer à la section https://www.digitalocean.com/community/tutorials/how-to-create-a-twitterbot-with-python-3-and-the-tweepy-library#keeping-the -twitterbot-running [Garder le Twitterbot en marche].

Twitterbot qui retweet, suit et favoris

En utilisant la bibliothèque Tweepy, nous pouvons configurer un Twitterbot qui peut retweeter et mettre en favori les tweets d’autres personnes, ainsi que suivre les autres utilisateurs. Dans notre exemple, nous baserons ces comportements sur l’interrogation d’un terme de recherche sous la forme d’un hashtag.

Configuration du fichier de programme

Pour commencer, créons un fichier Python appelé + twitterbot_retweet.py +. Nous devrions soit ajouter nos informations d’identification en haut du fichier, soit ajouter nos déclarations d’importation et accéder à chacune de nos clés, secrets et jetons via le fichier + credentials.py + créé dans le https: //www.digitalocean. .com / communauté / didacticiels / comment créer un twitterbot-avec-python-3-and-the-tweepy-library # storing-credentials Section [Storing Credentials] ci-dessus. Nous ajouterons également 3 lignes pour interagir avec les variables d’identité via la bibliothèque Tweepy.

twitterbot_retweet.py

# Import Tweepy, sleep, credentials.py
import tweepy
from time import sleep
from credentials import *

# Access and authorize our Twitter credentials from credentials.py
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

Pour en savoir plus sur cette configuration, ne manquez pas de regarder «https://www.digitalocean.com/community/tutorials/how-to-create-a-twitter-app#step-4-%E2%80 % 94-créer-une-application-python-qui-interagit-avec-twitter [Comment créer une application Twitter]. "Pour en savoir plus sur OAuth, vous pouvez lire https://www.digitalocean.com/community/ tutorials / an-introduction-to-oauth-2 [notre introduction].

Trouver des tweets basés sur une requête

Ensuite, nous allons créer une boucle for qui peut parcourir des tweets. Nous allons examiner les tweets avec le hashtag ocean. Nous allons donc utiliser + q = ' ocean' +

Related