Comment créer des robots Twitter, Instagram et Reddit en utilisant Python

  • Harry James
  • 0
  • 1814
  • 183
Publicité

Nous sommes en 2019. Vous avez entendu parler de bots. Il y a des robots de discussion, des robots de courrier électronique, des robots de raclage Web et des robots de médias sociaux. Avez-vous créé un bot? C'est étonnamment facile. Probablement pourquoi ils sont partout. Embrasser nos seigneurs bot 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

Ce guide utilise Python comme langage de choix. 6 raisons pour lesquelles Python est le langage de programmation du futur 6 raisons pour lesquelles Python est le langage de programmation du futur Vous souhaitez apprendre ou développer vos compétences en programmation? Voici pourquoi Python est le meilleur langage de programmation à apprendre cette année. . Les avantages de Python en termes de facilité d'utilisation l'emportent sur tous les problèmes de rapidité 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é pépin. Au moment de la rédaction de ce manuel, plus de 168 000 bibliothèques peuvent être téléchargées à l'aide de pépin. Pour les robots que vous allez créer aujourd'hui, il n'en faut que trois.

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

pip installer --upgrade InstagramAPI pip installer --upgrade tweepy pip installer --upgrade praw

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

Obtenir des clés et des secrets d'application

Un philosophe sage a dit une fois “Les secrets, les secrets ne sont pas amusants. Les secrets, les secrets blessent quelqu'un.” Respectueusement, les robots ont besoin de secrets. La prochaine étape de 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é d'application ou d'un secret..

Lorsque vous collectez des clés, des secrets, des jetons et plus encore (sonne comme un jeu amusant!), Mettez-les tous dans un seul fichier appelé “credentials.py.” Ce fichier ressemblerait à quelque chose comme ça:

# 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_id = "instagram_client_secret ="

Suggestion de confidentialité très importante: ne commettez dans ce fichier aucun contrôle de 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 va vous montrer comment créer votre application Twitter. Comment construire une photo Tweet Bot Twitter avec Raspberry Pi et Node.js Comment construire une photo Twitter Bot avec Raspberry Pi Node.js Commencez avec Node.js et créez un bot Twitter qui tweete des photos et des informations en utilisant juste un Raspberry Pi! . Notez que Twitter mettra un certain temps à vérifier votre compte et à vous assurer que vous ne créez pas de compte spam..

Après avoir suivi ces étapes, copiez la clé de consommateur, le secret de consommateur, le jeton d'accès et le secret de 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 “Agent utilisateur Reddit” sur votre CV.

se connecter sur le compte Reddit de votre choix. Accédez à la page de 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 dans le but de votre application. L'URL à propos peut être laissé 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 situe 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 praw est un processus en deux étapes. Premièrement, la configuration de l'accès consiste en un appel de fonction unique à la méthode Reddit de Praw. Ensuite, à l'aide de l'objet initialisé, la recherche d'un sous-répertoire est effectuée à l'aide de la méthode new ().

import praw des informations d'identification 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 pour la soumission dans my_reddit.subreddit (sub_name) (submission.title) 

Changer la nom_sous variable pour obtenir des messages de différents subreddits. Au lieu de Nouveau(), d'autres méthodes telles que chaud() sont disponibles pour obtenir 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, appelez la méthode login () pour terminer la configuration..

depuis InstagramAPI importer InstagramAPI depuis les informations d'identification importer 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 grand objet de réponse JSON d'Instagram..

En recherchant dans la réponse, le script recherche le texte de la légende, puis s’imprime à l’écran pour le visualiser..

get_hashtag = my_insta_api.getHashtagFeed (hashtag) if get_hashtag! = False: pour item dans my_insta_api.LastJson ['items']: si 'caption' dans item.keys () et 'texte' dans item ['caption']. ): caption = item ['caption'] ['text'] print (légende) 

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 support 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: renvoyer des images pour l'élément dans my_insta_api.LastJson ['items]:' item et 'image_versions2' dans item.keys (): candidat = get_largest_image (item ['image_versions2'] ['candidats'])) # get image filename = self.save_image_from_candidate (candidat ['url']) si filename! = *: # 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: images retournées en pause 

Deux fonctions d’aide 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 support soit affiché dans sa résolution la plus élevée.

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

Deuxièmement, une fois que le lien vers l'image est trouvé, vous pouvez enregistrer l'image localement en écrivant le contenu dans un fichier. En utilisant le demandes la bibliothèque rend cela simple.

def save_image_from_candidate (url): nom_fichier = "response = requests.get (url) # vérifie le code d'état de la réponse, 200 signifie qu'il est bon si response.status_code == 200: nom_fichier = url.split (" / ") [- 1]. split ('?') [0] avec open (nomfichier, 'wb') comme f: f.write (réponse.content) retournefichier 

Tweeter les médias avec Tweepy

Tout d'abord, vous devez configurer un accès Twitter en utilisant vos secrets et vos clés.

importer tweepy à partir des identifiants 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 = tweep 

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

pour tweet dans tweepy.Cursor (tw_api.search, q = 'MakeUseOf'). items (10): try: tweet.favorite () tweet.retweet () time.sleep (2) sauf tweepy.TweepError as e: print ( e.reason) sauf StopIteration: pause 

Beaucoup d'autres choses peuvent être faites avec cette bibliothèque. Pour conclure cette visite, 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 dans Reddit et les envoyer sur Twitter. Pour associer ces deux fonctionnalités, procédez comme suit:

# utilisez r / pour la recherche reddit # et # pour la recherche instagram hashtag = 'technology' num_posts = 5 # tweet info reddit reddit_posts = my_reddit.subreddit (hashtag) .new (limit = num_posts) pour soumission dans reddit_posts: title = submission.title url = 'www.reddit.com '. format (submission.permalink) tweet_str = f'Reddit r / sous mise à jour: \ n \ n titre # sous 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) pour (nom_fichier, message) dans media_info: essayer: tweet_str = trim_to_280 (message) tw_api.update_with_media (nom_du_menu) comme e: print (e.reason) sauf StopIteration: break 

Votre bot de médias sociaux propulsé par 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 aussi mélanger et assortir. Tirez les tweets et postez sur Reddit. Recueillir des images Instagram pour poster à des subreddits. Faire un bot et faire partie du vrai Internet.

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




Personne n'a encore commenté ce post.

De la technologie moderne, simple et abordable.
Votre guide dans le monde de la technologie moderne. Apprenez à utiliser les technologies et les gadgets qui nous entourent chaque jour et à découvrir des choses intéressantes sur Internet.