FRFAM.COM >> Famille >> Technologie &Innovation >> Informatique

Comment créer des robots 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 vous pouvez tirer parti de 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 défauts de vitesse par rapport aux autres langages. Vous pouvez télécharger Python pour presque tous les systèmes d'exploitation. Utilisez l'éditeur de votre choix.

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

pip 

. Au moment de la rédaction, 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.

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

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

Obtenir les clés et les secrets de l'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 dans la configuration de vos robots 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 récupérez des clés, des secrets, des jetons et plus encore (cela ressemble à un jeu amusant !), Mettez-les tous dans un seul fichier appelé "credentials.py". Ce fichier ressemblerait à ceci :

# clés 
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 pas ce fichier dans un contrôle de code source (par exemple, Git). Vous ne voulez pas que quelqu'un d'autre ait ces clés et ces 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 un compte de spam.

Après avoir suivi ces étapes, copiez la clé client, le secret client, 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 Reddit et votre secret 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.

Se connecter sur le compte Reddit de votre choix. Accédez à la page des préférences des applications et Cliquez sur créer une autre application . Nommez votre agent utilisateur quelque chose d'utile. Sélectionner 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.

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

Après avoir appuyé 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".

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

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 informations pour votre bot.

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

importer praw 
à partir de l'importation 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 ='technologie'
max_messages =10
pour soumission dans my_reddit.subreddit(sub_name).new(limit=max_posts):
print(submission.title)

Changer le

sub_name 

variable pour obtenir des publications de différents subreddits. Au lieu de

nouveau() 

, d'autres méthodes telles que

chaud() 

sont disponibles pour recevoir des publications.

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.

à partir d'InstagramAPI importer InstagramAPI 
à partir des informations d'identification importer instagram_client_id, instagram_client_secret
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 son homologue Reddit. Dans cet exemple, le script utilise getHashtagFeed pour obtenir un très grand 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) 
si get_hashtag !=Faux :
pour l'élément dans my_insta_api.LastJson['items'] :
si 'caption' dans item.keys() et 'text' dans item['caption'].keys() :
légende =élément['légende']['texte']
impression (légende)

Ajouter des images aux médias sociaux

À l'avenir, vous souhaiterez 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)
si get_hashtag ==Faux :
images de retour
pour l'élément dans my_insta_api.LastJson['items'] :
si item['media_type'] ==1 et 'image_versions2' dans item.keys() :
candidat =get_largest_image(item['image_versions2']['candidates'])
# obtenir une image
nom de fichier =self.save_image_from_candidate(candidate['url'])
si nom de fichier !='' :
# obtenir le statut, enregistrer en tant que tuple
légende =get_caption(élément)
images.append((nom du fichier, légende))
si len(images)>=num_images :
Pause
images de retour

Deux fonctions d'assistance sont utilisées dans cette fonction. Instagram envoie une liste d'images "candidats" dans la réponse JSON. Choisissez la plus grande de ces images afin que le média soit affiché dans sa plus haute résolution.

def get_largest_image(candidates) :
candidat ={}
pixels =0
pour cand chez les candidats :
# choisissez la résolution la plus élevée
res =cand['hauteur']*cand['largeur']
si res> pixels :
pixels =résolution
candidat =cand
candidat de retour

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

demandes 

la bibliothèque rend cela simple.

def save_image_from_candidate(url) :
nom de fichier =''
réponse =demandes.get(url)
# vérifiez le code d'état de la réponse, 200 signifie bon
si réponse.status_code ==200 :
nom de fichier =url.split("/")[-1].split('?')[0]
avec open(filename, 'wb') comme f :
f.write(réponse.contenu)
renvoyer le nom du fichier

Tweeter des médias avec Tweepy

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

importer tweepy 
à partir de l'importation 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)

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

pour le tweet dans tweepy.Cursor(tw_api.search,q='MakeUseOf').items(10) :
essayer:
tweet.favori()
tweet.retweet()
temps.sommeil(2)
sauf tweepy.TweepError comme e :
print(e.reason)
sauf StopIteration :
Pause

Beaucoup d'autres choses peuvent être faites avec cette bibliothèque. Pour conclure ce pas à pas, vous pouvez utiliser le

get_images_from_hashtag 

fonction du bot Instagram créé précédemment 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 associer ces deux fonctionnalités, cela ressemble à ceci :

# utilisez r/ pour la recherche reddit 
# et # pour la recherche Instagram
hashtag ='technologie'
num_messages =5
# tweeter les infos reddit
reddit_posts =my_reddit.subreddit(hashtag).new(limit=num_posts)
pour soumission dans reddit_posts :
titre =soumission.titre
url ='www.reddit.com{}'.format(submission.permalink)
tweet_str =f'Reddit r/{sub} mise à jour :
{titre} #{sous} {url}'
tweet_str =trim_to_280(tweet_str)
tw_api.update(chaîne_tweet)
# tweeter les 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 tweepy.TweepError comme e :
print(e.reason)
sauf StopIteration :
Pause

Votre bot de médias sociaux basé sur Python est prêt !

Donc, maintenant vous avez un tas de code qui extrait les médias d'un site et les publie sur un autre. Vous pouvez également mélanger et assortir. Tirez des tweets et postez-les sur Reddit. Collectez des images Instagram pour les publier sur des subreddits. 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 planificateur de temps. Ou, dépoussiérez ce vieux Raspberry Pi qui était dans votre placard et découvrez ces adorables projets de bot Twitter pour le Pi.


[]