Comment créer un bot Twitter, Instagram et Reddit à l’aide de Python
Nous sommes en 2019. Vous avez entendu parler de robots. Il existe des chatbots, des bots de messagerie, des bots de grattage Web et des bots de médias sociaux. Avez-vous créé un bot ? C’est très facile. Probablement pourquoi ils sont partout. Embrassez nos seigneurs robotiques en les rejoignant.
Dans cet article, je vais vous montrer comment utiliser Python pour automatiser les interactions avec vos comptes Twitter, Reddit et Instagram.
Utiliser Python
Cette procédure pas à pas utilise Python comme langage de choix. Comparé à d’autres langages, l’avantage de la facilité d’utilisation de Python l’emporte sur tout défaut de vitesse. Vous pouvez télécharger Python pour presque tous les systèmes d’exploitation. Utilisez votre éditeur de choix.
Distributions Python nommées
idée
Au moment de la rédaction de cet article, plus de 168 000 bibliothèques sont disponibles en téléchargement
idée
Pour le bot que vous allez créer aujourd’hui, vous n’en avez besoin que de trois.
À partir de la ligne de commande, vous pouvez installer les bibliothèques requises à l’aide de ces trois lignes.
pip installer –upgrade InstagramAPI
pip install –upgrade tweepy pip install –upgrade praw
Vous pouvez maintenant importer ces bibliothèques partout où vous en avez besoin.
Obtenir la clé et le secret de l’application
Un sage philosophe a dit un jour : » Les secrets, les secrets ne sont pas amusants. Les secrets, les secrets blessent un homme. » Respectueusement, les robots ont besoin de secrets. La prochaine étape de la configuration des bots consiste à leur permettre d’accéder à l’API de chaque site. Pour cela, vous avez besoin d’une clé d’application ou d’une clé secrète.
Faire une vidéo du jour
Au fur et à mesure que vous collectez des clés, des secrets, des jetons, etc. (cela ressemble à un jeu amusant !), mettez-les tous dans un fichier appelé « credentials.py ». Ce fichier ressemble à ceci :
# clé
twitter_consumer_key = »
twitter_consumer_secret= » »
twitter_access_token = »
twitter_access_token_secret= » »
reddit_client_id = »
reddit_client_secret= » »
reddit_user_agent= » »
instagram_client_id = »
instagram_client_secret= » »
CONSEIL DE CONFIDENTIALITÉ TRÈS IMPORTANT : NE validez PAS ce fichier dans un contrôle de code source (par exemple, Git). Vous ne voulez pas que d’autres personnes aient ces clés et ces secrets. Ils sont appelés secrets pour une raison.
Configurer l’accès à Twitter
Consultez notre guide pour configurer un bot Twitter avec Node.js pour vous montrer comment créer votre application Twitter. Notez que Twitter prendra un certain temps pour vérifier votre compte et s’assurer que vous n’avez pas créé de compte de spam.
Une fois ces étapes terminées, copiez la clé d’objet, le secret d’objet, le jeton d’accès et le secret du jeton d’accès dans votre fichier « credentials.py ».
Configurer l’accès à Reddit
L’obtention de votre identifiant client et de votre mot de passe Reddit est très similaire à Twitter. Vous devez enregistrer votre application en tant qu’agent utilisateur Reddit. Une fois que vous avez fait cela, vous devez absolument ajouter « Reddit User-Agent » à votre CV.
connexion sur le compte Reddit de votre choix.Accédez à la page des préférences de l’application, puis Cliquez pour créer une autre applicationNommez votre agent utilisateur quelque chose d’utile. sélectionner le scénario aux fins de votre candidature. À propos de l’URL peut être laissé vide. Remplissez n’importe quelle adresse dans la zone de redirection.
Après vous Appuyez sur Créer une application, l’écran suivant vous sera présenté avec une liste de vos applications. Le nombre sous le nom de l’application représente l’ID client et le secret client se trouve en dessous. Copiez ces valeurs dans votre fichier credits.py.
Configurer l’accès à Instagram
L’accès à Instagram est différent de Twitter et de Reddit. Au lieu d’enregistrer l’application, vous utilisez votre nom d’utilisateur et votre mot de passe. Je vous recommande de créer un compte public séparé et d’utiliser ces informations pour votre bot.
Visitez Reddit avec Praw
L’utilisation de praw est un processus en deux étapes. Tout d’abord, la configuration de l’accès est un appel de fonction unique à la méthode Reddit de praw. Ensuite, en utilisant l’objet initialisé, utilisez la méthode new() pour rechercher le subreddit.
crevettes importées
Importer à partir des informations d’identification *
my_reddit = praw.Reddit(client_id=reddit_client_id, client_secret=reddit_client_secret, user_agent=reddit_user_agent)
sub_name= »technique »
max_messages = 10
Soumettez dans my_reddit.subreddit(sub_name).new(limit=max_posts):
imprimer (soumettre le titre)
Changement
sous-nom
variable pour obtenir des publications de différents subreddits.remplacer
Nouveau()
d’autres méthodes telles que
chaud()
Peut être utilisé pour obtenir des messages.
La première étape de l’utilisation de l’API Instagram consiste à configurer un objet avec un ID client et un secret. Ensuite, appelez la méthode login() pour terminer la configuration.
Importer InstagramAPI depuis InstagramAPI
Importer instagram_client_id, instagram_client_secret à partir des informations d’identification
mon_insta_api = InstagramAPI(instagram_client_id, instagram_client_secret)
mon_insta_api.login()
L’utilisation de l’API est un peu plus compliquée que l’homologue Reddit. Dans cet exemple, le script utilise getHashtagFeed pour obtenir un très grand objet de réponse JSON d’Instagram.
Avec la réponse de recherche, le script trouve le texte de l’en-tête et l’affiche à l’écran pour l’afficher.
get_hashtag = my_insta_api.getHashtagFeed(hashtag)
Si get_hashtag != faux :
Pour les éléments dans my_insta_api.LastJson[‘items’]:
Si « title » dans item.keys() et « text » dans item[‘caption’].clés():
titre=élément[‘caption’][‘text’]
imprimer (titre)
Ajouter des images aux réseaux sociaux
À l’avenir, vous souhaiterez peut-être que votre script récupère les images de ce flux de hashtag. Pour ce faire, parcourez la réponse JSON et recherchez le média associé à chaque publication. Voici l’implémentation pour extraire les informations de la réponse JSON :
def get_images_from_hashtag(hashtag, num_images):
image = []
get_hashtag = my_insta_api.getHashtagFeed(hashtag)
Si get_hashtag == faux :
retour à l’image
Pour les éléments dans my_insta_api.LastJson[‘items’]:
si l’article[‘media_type’] == 1 et « image_versions2 » dans item.keys() :
candidat = get_largest_image(item[‘image_versions2’][‘candidates’])
# obtenir une image
filename = self.save_image_from_candidate(candidate[‘url’])
Si le nom du fichier ! = »:
# Obtenez l’état, enregistrez-le en tant que tuple
titre = get_caption(élément)
images.append((nom du fichier, titre))
Si len(images) >= num_images :
du repos
retour à l’image
Deux fonctions d’assistance sont utilisées dans cette fonction. Instagram envoie une liste d’images « candidats » dans une réponse JSON. La plus grande image parmi elles est sélectionnée afin que le média soit affiché à la résolution la plus élevée.
def get_largest_image(candidate):
candidat = {}
pixels = 0
Pour cand parmi les candidats :
# choisissez celui qui a la résolution la plus élevée
res = cand[‘height’]*Pouvez[‘width’]
Si res > pixels :
pixels = résolution
candidat=cand
Candidats de retour
Deuxièmement, une fois que vous avez trouvé le lien vers l’image, vous pouvez enregistrer l’image localement en écrivant le contenu dans un fichier.utiliser
Exiger
Les bibliothèques rendent cela facile.
def save_image_from_candidate(url):
nom de fichier= » »
réponse = demandes.get(url)
# Affichez le code d’état de la réponse, 200 signifie bon
Si response.status_code == 200 :
filename = url.split(« https://www.ledigitalpost.com/ »)[-1]. Diviser(‘?’)[0]
Utilisez open(filename, ‘wb’) comme f :
f.write(réponse.contenu)
renvoyer le nom du fichier
Tout d’abord, vous devez configurer l’accès à Twitter avec votre secret et votre clé.
importer tweepy
Importer à partir des informations d’identification *
tw_auth = tweepy.OAuthHandler(twitter_consumer_key, twitter_consumer_secret)
tw_auth.set_access_token(twitter_access_token, twitter_access_token_secret)
tw_api = tweepy.API(tw_auth)
Créez un bot de retweet universel en quelques lignes seulement.
Pour les tweets dans tweepy.Cursor(tw_api.search,q=’MakeUseOf’).items(10) :
essayer:
tweet.favori()
tweet.retweet()
temps.sommeil(2)
Sauf pour tweepy.TweepError comme e :
impression (par exemple raison)
En plus d’arrêter l’itération :
du repos
Cette bibliothèque peut faire beaucoup d’autres choses.Pour terminer cette procédure pas à pas, vous pouvez utiliser
get_images_from_hashtag
Fonctionnalité d’un bot Instagram créé précédemment pour publier des images et des légendes.
De plus, votre bot Twitter peut rechercher de nouveaux messages sur Reddit et les tweeter. L’association de ces deux fonctions donne ceci :
# utilisateur/
# et #
balise = ‘technique’
Nombre de messages = 5
# tweeter les infos reddit
reddit_posts = my_reddit.subreddit(hashtag).new(limit=num_posts)
Soumis dans reddit_posts :
titre=soumettre.titre
url= »www.reddit.com{} ».format(soumission.permalien)
tweet_str = f’Reddit r/{sub}
{titre} #{sous} {url}’
tweet_str = trim_to_280(tweet_str)
tw_api.update(chaîne_tweet)
#tweet médias instagram
media_info = get_images_from_hashtag(hashtag, num_posts)
Pour (nom de fichier, message) dans media_info :
essayer:
tweet_str = trim_to_280(message)
tw_api.update_with_media(filename, status=tweet_str)
Sauf pour tweepy.TweepError comme e :
impression (par exemple raison)
En plus d’arrêter l’itération :
du repos
Donc, maintenant vous avez un tas de code qui tire les médias d’un site à un autre. Vous pouvez également mélanger et assortir. Tirez des tweets et postez-les sur Reddit. Collectez des images Instagram à publier sur des subreddits. Créez un bot et faites partie du véritable Internet.
Enfin, pour automatiser entièrement ce processus, vous souhaiterez que votre bot boucle sur le serveur. Cela peut être sur votre propre ordinateur avec un planificateur de temps. Ou, dépoussiérez l’ancien Raspberry Pi dans votre placard et découvrez ces adorables projets de bot Twitter.
A propos de l’auteur