Instagram Automation
Instagram Automation Tool
Utilisateur
Télécharger une image
Cliquez pour télécharger une image
ou glissez-déposez
Sélectionner un post préconfiguré
Aperçu de la publication
U
username
username
Texte de la publication…
Simulation de publication Instagram
Publier
Code Python Selenium
Ce code Python utilise Selenium pour automatiser la publication sur Instagram. Il récupère les données de l’application et publie le post.
"""
Script Python pour automatiser la publication sur Instagram avec Selenium
Ce script récupère les données de l'application web et les utilise pour publier sur Instagram
"""
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
import time
import os
import json
from datetime import datetime
class InstagramBot:
def __init__(self, username, password):
"""Initialise le bot Instagram avec les informations de connexion"""
self.username = username
self.password = password
self.driver = webdriver.Chrome() # Ou Firefox, Edge, etc.
self.wait = WebDriverWait(self.driver, 15)
def login(self):
"""Se connecte à Instagram"""
try:
self.driver.get("https://www.instagram.com/")
time.sleep(2) # Attente pour le chargement de la page
# Gérer les cookies si nécessaire
try:
cookies_button = self.wait.until(EC.element_to_be_clickable(
(By.XPATH, "//button[contains(text(), 'Accept') or contains(text(), 'Accepter')]")))
cookies_button.click()
time.sleep(1)
except TimeoutException:
print("Pas de popup de cookies ou déjà accepté.")
# Saisir le nom d'utilisateur
username_field = self.wait.until(EC.element_to_be_clickable((By.NAME, "username")))
username_field.clear()
username_field.send_keys(self.username)
# Saisir le mot de passe
password_field = self.wait.until(EC.element_to_be_clickable((By.NAME, "password")))
password_field.clear()
password_field.send_keys(self.password)
# Cliquer sur le bouton de connexion
login_button = self.wait.until(EC.element_to_be_clickable(
(By.XPATH, "//button[@type='submit']")))
login_button.click()
# Attendre la connexion complète
self.wait.until(EC.presence_of_element_located((By.XPATH, "//div[@class='_aagx']")))
print(f"Connecté avec succès en tant que {self.username}")
return True
except Exception as e:
print(f"Erreur lors de la connexion: {e}")
return False
def create_post(self, image_path, caption, schedule_datetime=None):
"""Crée un nouveau post Instagram"""
try:
# Aller à la page d'accueil
self.driver.get("https://www.instagram.com/")
time.sleep(3)
# Cliquer sur le bouton "Create"
create_button = self.wait.until(EC.element_to_be_clickable(
(By.XPATH, "//div[contains(@class, 'x1lliihq')]//*[local-name()='svg' and @aria-label='Nouvelle publication']")))
create_button.click()
time.sleep(2)
# Télécharger l'image
file_input = self.wait.until(EC.presence_of_element_located(
(By.XPATH, "//input[@type='file']")))
file_input.send_keys(image_path)
time.sleep(2)
# Cliquer sur Next
next_button = self.wait.until(EC.element_to_be_clickable(
(By.XPATH, "//button[contains(text(), 'Next') or contains(text(), 'Suivant')]")))
next_button.click()
time.sleep(2)
# Cliquer sur Next (filtres)
next_button = self.wait.until(EC.element_to_be_clickable(
(By.XPATH, "//button[contains(text(), 'Next') or contains(text(), 'Suivant')]")))
next_button.click()
time.sleep(2)
# Ajouter la légende
caption_field = self.wait.until(EC.element_to_be_clickable(
(By.XPATH, "//textarea[contains(@aria-label, 'Write a caption') or contains(@aria-label, 'Ajouter une légende')]")))
caption_field.send_keys(caption)
time.sleep(2)
# Si une date est programmée, activer la planification
if schedule_datetime:
# Cliquer sur "Advanced settings"
advanced_settings = self.wait.until(EC.element_to_be_clickable(
(By.XPATH, "//button[contains(text(), 'Advanced settings') or contains(text(), 'Paramètres avancés')]")))
advanced_settings.click()
time.sleep(1)
# Activer la planification
schedule_toggle = self.wait.until(EC.element_to_be_clickable(
(By.XPATH, "//label[contains(text(), 'Schedule') or contains(text(), 'Planifier')]")))
schedule_toggle.click()
time.sleep(1)
# Définir la date et l'heure
date_input = self.wait.until(EC.element_to_be_clickable(
(By.XPATH, "//input[@type='date']")))
date_input.clear()
date_input.send_keys(schedule_datetime.strftime("%Y-%m-%d"))
time_input = self.wait.until(EC.element_to_be_clickable(
(By.XPATH, "//input[@type='time']")))
time_input.clear()
time_input.send_keys(schedule_datetime.strftime("%H:%M"))
# Revenir aux paramètres principaux
back_button = self.wait.until(EC.element_to_be_clickable(
(By.XPATH, "//button[contains(text(), 'Back') or contains(text(), 'Retour')]")))
back_button.click()
time.sleep(1)
# Publier
share_button = self.wait.until(EC.element_to_be_clickable(
(By.XPATH, "//button[contains(text(), 'Share') or contains(text(), 'Partager')]")))
share_button.click()
# Attendre la confirmation de publication
self.wait.until(EC.presence_of_element_located(
(By.XPATH, "//div[contains(text(), 'Your post has been shared') or contains(text(), 'Votre publication a été partagée')]")))
print("Publication réussie!")
return True
except Exception as e:
print(f"Erreur lors de la création du post: {e}")
return False
def close(self):
"""Ferme le navigateur"""
self.driver.quit()
# Fonction principale
def main():
# Charger les configurations depuis un fichier JSON (créé par l'application web)
try:
with open('instagram_post_config.json', 'r', encoding='utf-8') as f:
config = json.load(f)
except FileNotFoundError:
print("Fichier de configuration non trouvé. Utilisation des valeurs par défaut.")
config = {
"username": "votre_username",
"password": "votre_mot_de_passe",
"image_path": "/chemin/vers/image.jpg",
"caption": "Votre légende #hashtag",
"schedule": None
}
# Créer l'instance du bot et se connecter
bot = InstagramBot(config["username"], config["password"])
if bot.login():
# Préparer les paramètres de planification si nécessaire
schedule_datetime = None
if config["schedule"]:
schedule_datetime = datetime.strptime(config["schedule"], "%Y-%m-%dT%H:%M")
# Créer le post
bot.create_post(
image_path=config["image_path"],
caption=config["caption"],
schedule_datetime=schedule_datetime
)
# Fermer le navigateur
bot.close()
if __name__ == "__main__":
main()
Installation requise: pip install selenium webdriver-manager
Ce code nécessite un fichier instagram_post_config.json
qui contiendra les informations de connexion et les détails du post.
Une photo de dos d’un voyageur contemplant un coucher de soleil époustouflant au sommet d’une montagne, avec des sacs à dos modernes et des couleurs chaudes, soulignant l’aventure et la liberté.
🌅 Découvrez la liberté ultime en contemplant ce coucher de soleil au sommet de la montagne. L’aventure vous attend, chaque pas est une découverte. 🏔️ #Voyage #Aventure #Liberté
Une image Instagram attrayante et moderne sur le thème ‘Écologie’ pourrait être une photo d’un parc urbain verdoyant avec des cyclistes, des panneaux solaires en arrière-plan, et un message inspirant sur la réduction des plastiques, le tout avec une palette de couleurs naturelles et des filtres doux.
🌿 Adoptez un mode de vie vert ! 🚴♂️ Redécouvrez la beauté de la nature en ville. Utilisons l’énergie solaire ☀️ et réduisons notre consommation de plastique ♻️ pour un avenir plus sain. #Écologie #VieVerte #ZéroPlastique
Une image Instagram attrayante et moderne sur le thème de l’éducation pourrait montrer un étudiant inspiré, avec des livres empilés sur un bureau en bois naturel, devant une fenêtre ouverte laissant entrer la lumière naturelle, avec des plantes vertes et des post-it colorés disposés autour d’une tasse de café fumante.
📚 L’éducation ouvre les portes à un avenir radieux! ☕️ Découvrez le pouvoir de l’apprentissage avec des livres, des notes et une bonne dose de motivation. 🌱 #Éducation #Apprentissage #Inspiration