Vous voulez créer vos propres robots de médias sociaux?  Voici comment publier automatiquement des mises à jour vers Twitter, Instagram et Reddit à l'aide de Python.

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

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

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. Lire la suite . 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é pip . Au moment de la rédaction de ce manuel, il existe plus de 168 000 bibliothèques disponibles au téléchargement via pip . 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 install --upgrade InstagramAPI pip install --upgrade tweepy pip install --upgrade praw 

Vous pourrez maintenant importer ces bibliothèques si nécessaire.

Obtenir des clés et des secrets d'application

Un philosophe avisé a un jour déclaré: «Les secrets ne sont pas amusants. Les secrets, les secrets font du mal à 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, etc. (cela ressemble à un jeu amusant!), Mettez-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 commettez pas 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. Il vous montrera comment créer votre application Twitter. Comment créer une photo sur Twitter avec Bot Raspberry Pi et Node.js Comment créer une photo sur Twitter avec Bot 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! Lire la suite . 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 «Reddit User Agent» sur votre CV.

Connectez-vous au 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 un script pour les besoins de votre application. L'URL à propos peut être laissé vide. Remplissez n'importe quelle adresse pour la boîte de redirection.

Reddit App Bot 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 situe en dessous. Copiez ces valeurs dans votre fichier credentials.py.

Python secret de l'API de l'application Reddit

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 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) 

Modifiez la variable sub_name pour obtenir des publications de différents sous-titres. Au lieu de new(), d'autres méthodes telles que hot() sont disponibles pour obtenir 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. Juste 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 grand objet de réponse JSON à partir d'Instagram.

En effectuant une recherche 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: 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 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) 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 

Deux fonctions d’aide sont utilisées dans cette fonction. Instagram envoie une liste de “candidats” aux images 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(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 que le lien vers l'image est trouvé, vous pouvez enregistrer l'image localement en écrivant le contenu dans un fichier. L'utilisation de la bibliothèque de requests simplifie la tâche.

 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 les médias avec Tweepy

Tout d'abord, vous devez configurer l'accès Twitter à l'aide de vos secrets et de vos 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 retweet générique se fait en quelques lignes seulement.

 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 get_images_from_hashtag, vous pouvez utiliser la fonction get_images_from_hashtag du bot Instagram déjà créé 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:

 # 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:\n\n{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 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. Faites un bot et faites 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 se trouvait dans votre placard et découvrez ces doux projets de bot Twitter pour les 10 meilleurs projets de bot Twitter pour Raspberry Pi 10 pour les meilleurs projets de bot Twitter pour Raspberry Pi.

Pour en savoir plus sur les didacticiels de codage, Python, les robots des réseaux sociaux.