Comment créer des bots Twitter, Instagram et Reddit à l'aide de Python

Comment créer des bots Twitter, Instagram et Reddit à l'aide de Python

Nous sommes en 2019. Vous avez entendu parler des bots. Il existe des robots de discussion, des robots de messagerie, des robots de grattage Web et des robots de médias sociaux. Avez-vous déjà créé un bot ? C'est étonnamment facile. Probablement pourquoi ils sont partout. Embrassez nos bot overlords en rejoignant leur rang.





Dans cet article, je vais vous montrer comment utiliser Python pour interagir automatiquement avec vos comptes Twitter, Reddit et Instagram.





Travailler avec Python

Cette procédure pas à pas utilise Python comme langage de choix . Les avantages de la facilité d'utilisation de Python l'emportent sur ses lacunes en termes de vitesse par rapport à d'autres langages. Vous pouvez télécharger Python pour presque tous les systèmes d'exploitation. Utilisation l'éditeur de votre choix .





Les distributions Python sont associées à l'utilitaire appelé

pourquoi n'aimez-vous pas utiliser l'électricité
pip

. Au moment de la rédaction de cet article, plus de 168 000 bibliothèques sont disponibles au téléchargement à l'aide de



pip

. Pour les bots que vous allez créer aujourd'hui, seuls trois sont nécessaires.

Depuis la ligne de commande, vous pouvez installer les bibliothèques nécessaires à l'aide de ces trois lignes.





pip install --upgrade InstagramAPI
pip install --upgrade tweepy pip install --upgrade praw

Vous pourrez maintenant importer ces bibliothèques là où vous en avez besoin.

Obtenir des clés et des secrets d'application

Un sage philosophe a dit un jour : « Les secrets, les secrets ne sont pas amusants. Les secrets, les secrets blessent quelqu'un. Respectueusement, les bots ont besoin de secrets. La prochaine étape de la configuration de vos bots consiste à leur permettre d'accéder à l'API de chaque site. Pour ce faire, vous aurez besoin d'une clé ou d'un secret d'application.





Au fur et à mesure que vous collectez des clés, des secrets, des jetons et plus encore (cela ressemble à un jeu amusant !), placez-les tous dans un seul fichier appelé « credentials.py ». Ce fichier ressemblerait à ceci :

# keys
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 = ''

Suggestion de confidentialité très importante : ne validez aucun contrôle de source sur ce fichier (par exemple, Git). Vous ne voulez pas que quelqu'un d'autre ait ces clés et secrets. Ils sont appelés secrets pour une raison.

Configuration de l'accès Twitter

Consultez notre guide pour configurer un bot Twitter avec Node.js vous montrera comment créer votre application Twitter. Notez que Twitter prendra un certain temps pour vérifier votre compte et s'assurer que vous ne créez pas de compte de spam.

Après avoir suivi ces étapes, copiez la clé du consommateur, le secret du consommateur, le jeton d'accès et le secret du jeton d'accès dans votre fichier credentials.py.

Configuration de l'accès Reddit

Obtenir votre identifiant client et votre secret Reddit est très similaire à Twitter. Vous devrez enregistrer une application en tant qu'agent utilisateur Reddit. Après cela, vous devez absolument mettre « Reddit User Agent » sur votre CV.

S'identifier sur le compte Reddit de votre choix. Naviguez vers le page des préférences des applications et Cliquez sur créer une autre application . Nommez votre agent utilisateur quelque chose d'utile. Sélectionnez le script aux fins de votre application. L'URL à propos peut être laissée vide. Remplissez n'importe quelle adresse pour la boîte de redirection.

Après Vous Appuyez sur créer une application , l'écran suivant vous sera présenté avec une liste de vos applications. Les chiffres sous le nom de votre application représentent l'ID client et le secret client se trouve en dessous. Copiez ces valeurs dans votre fichier credentials.py.

Configuration de l'accès à Instagram

L'accès à Instagram diffère de Twitter et Reddit. Au lieu d'enregistrer une application, vous utilisez votre nom d'utilisateur et votre mot de passe. Je suggère de créer un compte public séparé et d'utiliser ces détails pour votre bot.

Accéder à Reddit avec Praw

L'utilisation de la crevette 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, à l'aide de l'objet initialisé, la recherche d'un subreddit est effectuée à l'aide de la méthode new().

import praw
from credentials import *
my_reddit = praw.Reddit(client_id=reddit_client_id, client_secret=reddit_client_secret, user_agent=reddit_user_agent)
sub_name = 'technology'
max_posts = 10
for submission in my_reddit.subreddit(sub_name).new(limit=max_posts):
print(submission.title)

Changer la

sub_name

variable pour obtenir les messages de différents subreddits. À la place de

new()

, d'autres méthodes telles que

hot()

sont disponibles pour recevoir des messages.

Recherche de hashtags Instagram via InstagramAPI

La première étape de l'utilisation de l'API Instagram consiste à configurer un objet avec l'ID client et le secret. Immédiatement après cela, appelez la méthode login() pour terminer la configuration.

from InstagramAPI import InstagramAPI
from credentials import instagram_client_id, instagram_client_secret
my_insta_api = InstagramAPI(instagram_client_id,instagram_client_secret)
my_insta_api.login()

L'utilisation de l'API est un peu plus compliquée que son homologue Reddit. Dans cet exemple, le script utilise getHashtagFeed pour obtenir un très gros objet de réponse JSON d'Instagram.

En parcourant la réponse, le script recherche le texte de la légende, puis l'imprime à l'écran pour l'afficher.

get_hashtag = my_insta_api.getHashtagFeed(hashtag)
if get_hashtag != False:
for item in my_insta_api.LastJson['items']:
if 'caption' in item.keys() and 'text' in item['caption'].keys():
caption = item['caption']['text']
print(caption)

Ajouter des images aux médias sociaux

À l'avenir, vous voudrez peut-être que votre script récupère les images dans ce flux de hashtag. Pour ce faire, parcourez la réponse JSON et recherchez le média associé à chaque publication. Voici une implémentation pour extraire les informations de la réponse JSON :

def get_images_from_hashtag(hashtag, num_images):
images = []
get_hashtag = my_insta_api.getHashtagFeed(hashtag)
if get_hashtag == False:
return images
for item in my_insta_api.LastJson['items']:
if item['media_type'] == 1 and 'image_versions2' in item.keys():
candidate = get_largest_image(item['image_versions2']['candidates'])
# get image
filename = self.save_image_from_candidate(candidate['url'])
if filename != '':
# get status, save as tuple
caption = get_caption(item)
images.append((filename, caption))
if len(images) >= num_images:
break
return images

Il y a deux fonctions d'assistance utilisées dans cette fonction. Instagram envoie une liste d'images « candidats » dans la réponse JSON. Choisissez la plus grande de ces images pour que le média s'affiche dans sa résolution la plus élevée.

def get_largest_image(candidates):
candidate = {}
pixels = 0
for cand in candidates:
# pick the highest resolution one
res = cand['height']*cand['width']
if res > pixels:
pixels = res
candidate = cand
return candidate

Deuxièmement, une fois le lien vers l'image trouvé, vous pouvez enregistrer l'image localement en écrivant le contenu dans un fichier. En utilisant le

requests

bibliothèque rend cela simple.

def save_image_from_candidate(url):
filename = ''
response = requests.get(url)
# check the response status code, 200 means good
if response.status_code == 200:
filename = url.split('/')[-1].split('?')[0]
with open(filename, 'wb') as f:
f.write(response.content)
return filename

Tweeter des médias avec Tweepy

Tout d'abord, vous devrez configurer l'accès à Twitter à l'aide de vos secrets et clés.

import tweepy
from credentials import *
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)

La création d'un bot de retweet générique se fait en quelques lignes.

for tweet in tweepy.Cursor(tw_api.search,q='MakeUseOf').items(10):
try:
tweet.favorite()
tweet.retweet()
time.sleep(2)
except tweepy.TweepError as e:
print(e.reason)
except StopIteration:
break

Beaucoup d'autres choses peuvent être faites avec cette bibliothèque. Pour conclure cette présentation, vous pouvez utiliser le

get_images_from_hashtag

fonction du bot Instagram créé plus tôt pour tweeter des images et des légendes.

De plus, votre bot Twitter peut rechercher de nouveaux messages sur Reddit et les tweeter également. Pour mettre ces deux fonctionnalités ensemble, cela ressemble à ceci :

# use r/ for reddit search
# and # for instagram search
hashtag = 'technology'
num_posts = 5
# tweet reddit info
reddit_posts = my_reddit.subreddit(hashtag).new(limit=num_posts)
for submission in reddit_posts:
title = submission.title
url = 'www.reddit.com{}'.format(submission.permalink)
tweet_str = f'Reddit r/{sub} update:
{title} #{sub} {url}'
tweet_str = trim_to_280(tweet_str)
tw_api.update(tweet_str)
# tweet instagram media
media_info = get_images_from_hashtag(hashtag, num_posts)
for (filename, message) in media_info:
try:
tweet_str = trim_to_280(message)
tw_api.update_with_media(filename, status=tweet_str)
except tweepy.TweepError as e:
print(e.reason)
except StopIteration:
break

Votre bot de médias sociaux alimenté par Python est prêt !

Donc, maintenant vous avez un tas de code qui extrait les médias d'un site et les publie vers un autre. Vous pouvez également mélanger et assortir. Tirez les tweets et publiez-les sur Reddit. Collectez des images Instagram pour les publier sur des sous-titres. Créez un bot et faites partie du vrai Internet.

Enfin, pour automatiser entièrement ce processus, vous souhaiterez que vos bots s'exécutent en boucle sur un serveur. Cela pourrait être sur votre propre ordinateur avec un programmateur de temps. Ou dépoussiérez ce vieux Raspberry Pi qui se trouvait dans votre placard et découvrez ces jolis projets de bot Twitter pour le Pi .

Partager Partager Tweeter E-mail Voici pourquoi le FBI a émis un avertissement pour Hive Ransomware

Le FBI a émis un avertissement concernant une souche particulièrement désagréable de ransomware. Voici pourquoi vous devez vous méfier particulièrement du ransomware Hive.

Lire la suite
Rubriques connexes
  • La programmation
  • Python
  • Bots de médias sociaux
  • Tutoriels de codage
A propos de l'auteur Tom Johnsen(3 articles publiés)

Tom est un ingénieur logiciel de Floride (merci à Florida Man) avec une passion pour l'écriture, le football universitaire (allez Gators!), CrossFit et les virgules d'Oxford.

Plus de Tom Johnsen

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !

Cliquez ici pour vous abonner