En 2019, les bots étaient déjà omniprésents sur les réseaux sociaux. Des bots de discussion aux scrapers web, ils automatisent de nombreuses tâches. Avez-vous déjà créé le vôtre ? C'est plus simple que vous ne le pensez. Rejoignez la révolution des bots avec Python, un langage accessible et puissant.
Dans ce tutoriel expert, découvrez comment automatiser vos comptes Twitter, Reddit et Instagram grâce à Python. Avertissement : Respectez toujours les conditions d'utilisation des plateformes. Les APIs évoluent ; vérifiez leur actualité pour éviter les suspensions de compte.
Python est idéal pour les débutants et experts grâce à sa simplicité. Téléchargez-le sur python.org pour votre OS. Utilisez votre éditeur préféré (VS Code, PyCharm).
Les distributions incluent pip, gestionnaire de paquets avec plus de 168 000 bibliothèques (en 2019). Installez les nôtres :
pip install --upgrade InstagramAPI
tweepy
prawImportez-les ensuite dans vos scripts.
Les bots nécessitent un accès API sécurisé. Stockez tout dans credentials.py :
# credentials.py
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 = ''Important : N'ajoutez jamais ce fichier à Git ou tout dépôt public. Utilisez .gitignore.
Créez une app sur developer.twitter.com. Copiez Consumer Key/Secret, Access Token/Secret dans credentials.py. Twitter vérifie les comptes pour éviter le spam.
Connectez-vous à Reddit, allez dans Préférences > Applications > Créer une app (type : script). Notez Client ID et Secret.


InstagramAPI est non-officielle ; créez un compte dédié avec nom/mot de passe. Risque : Utilisez avec prudence, APIs privées évoluent.
Initialisez puis explorez :
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 = 'technologie'
max_posts = 10
for submission in my_reddit.subreddit(sub_name).new(limit=max_posts):
print(submission.title)Utilisez hot(), top() etc. pour d'autres flux.
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()Exemple pour hashtags :
hashtag = 'technologie'
get_hashtag = my_insta_api.getHashtagFeed(hashtag)
if get_hashtag:
for item in my_insta_api.LastJson['items']:
if 'caption' in item and 'text' in item['caption']:
caption = item['caption']['text']
print(caption)Fonction pour extraire images (fonctions helpers incluses) :
import requests
def get_largest_image(candidates):
candidate = {}
pixels = 0
for cand in candidates:
res = cand['height'] * cand['width']
if res > pixels:
pixels = res
candidate = cand
return candidate
def save_image_from_candidate(url):
filename = ''
response = requests.get(url)
if response.status_code == 200:
filename = url.split('/')[-1].split('?')[0]
with open(filename, 'wb') as f:
f.write(response.content)
return filename
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:
candidate = get_largest_image(item['image_versions2']['candidates'])
filename = save_image_from_candidate(candidate['url'])
if filename != '':
caption = item['caption']['text'] if 'caption' in item and 'text' in item['caption'] else ''
images.append((filename, caption))
if len(images) >= num_images:
break
return imagesimport 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)Bot retweet simple :
import time
for tweet in tweepy.Cursor(tw_api.search, q='Python').items(10):
try:
tweet.favorite()
tweet.retweet()
time.sleep(2)
except tweepy.TweepError as e:
print(e.reason)
except StopIteration:
breakIntégrez Instagram/Reddit pour tweeter :
hashtag = 'technologie'
num_posts = 5
# Reddit to Twitter
reddit_posts = my_reddit.subreddit(hashtag).new(limit=num_posts)
for submission in reddit_posts:
title = submission.title
url = f'https://www.reddit.com{submission.permalink}'
tweet_str = f"Reddit r/{hashtag} : {title} {url}"
tw_api.update_status(tweet_str)
# Instagram to Twitter
media_info = get_images_from_hashtag(hashtag, num_posts)
for (filename, caption) in media_info:
try:
tw_api.update_with_media(filename, status=caption[:280])
except tweepy.TweepError as e:
print(e.reason)Automatisez en boucle sur un serveur, Raspberry Pi ou cron. Explorez plus : bots éthiques, monitoring. Partagez vos créations !
[]