Skip to content

Python automation to post on Instagram with Cronjob on Unix systems (Linux, Mac, etc). 🐍

License

Notifications You must be signed in to change notification settings

shricodev/insta-cron-post-automation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

13 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Insta Cron Post Automation 🐍 ⏰

Version License: MIT Twitter: shricodev

GitHub repo size GitHub language count GitHub top language GitHub last commit

πŸ“š Overview

The Python Insta Post Scheduler is a Python application designed to automate Instagram posts by scheduling them using Cronjobs. This project allows you to post image to Instagram with optional metadata and control various post settings per each post.

😎 Features

  • Automated Posting: Schedule Instagram posts using cron jobs.
  • Flexible Configuration: Define post details and settings in JSON files.
  • Custom Logging: Detailed logging of events and errors.
  • Environment Variable Management: Securely manage Instagram credentials using environment variables.

⚠️ Limitations

Since this script uses cron jobs, it will only be able to run the scheduled posts if the scheduled system is up and running. Therefore, it is recommended to run this script in cloud environments in a VM or any environment of your choice. ☁️

🌳 Project Structure

insta-cron-post-automation/
β”œβ”€β”€ .git/
β”œβ”€β”€ (gitignored) .venv/
β”œβ”€β”€ data/
β”‚   β”œβ”€β”€ generated_images/
β”‚   β”‚   β”œβ”€β”€ .gitkeep
β”‚   β”‚   β”œβ”€β”€ (gitignored) sample_image_0.jpg
β”‚   β”‚   └── ...
β”‚   β”œβ”€β”€ scheduled_posts/
β”‚   β”‚   β”œβ”€β”€ .gitkeep
β”‚   β”‚   β”œβ”€β”€ (gitignored) insta_post_1cogp9_2024-07-24-11-42.json
β”‚   β”‚   └── ...
β”‚   β”œβ”€β”€ error.json
β”‚   β”œβ”€β”€ success.json
β”‚   └── to-post.json
β”œβ”€β”€ logs/
β”‚   β”œβ”€β”€ .gitkeep
β”‚   └── (gitignored) post-activity.log
β”‚   └── (gitignored) shell-error.log
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ (gitignored) __pycache__/
β”‚   β”œβ”€β”€ scripts/
β”‚   β”‚   β”œβ”€β”€ run_media_post.fish
β”‚   β”‚   └── run_media_post.sh
β”‚   β”œβ”€β”€ logger_config.py
β”‚   β”œβ”€β”€ media_post.py
β”‚   β”œβ”€β”€ populate_sample_posts.py
β”‚   β”œβ”€β”€ post.py
β”‚   β”œβ”€β”€ post_list.py
β”‚   └── setup.py
β”œβ”€β”€ (gitignored) .env
β”œβ”€β”€ .env.example
β”œβ”€β”€ .gitignore
β”œβ”€β”€ main.py
β”œβ”€β”€ README.md
└── requirements.json

πŸ› οΈ Installation

  • Clone the Repository

πŸ’¬ If you are using HTTPS protocol instead of SSH, change the git clone command accordingly.

git clone git@github.com:shricodev/insta-cron-post-automation.git
cd insta-cron-post-automation
  • Create and Activate Virtual Environment
python3 -m venv .venv
source .venv/bin/activate.fish # or .venv/bin/activate if you are not using the fish shell
  • Install Dependencies
pip3 install -r requirements.json
  • Set Up Environment Variables
INSTA_USERNAME=<your_instagram_username>
INSTA_PASSWORD=<your_instagram_password>

You can use the .env.example file as a template.

πŸ’» Usage

  • Configure Posts

Edit the data/to-post.json file to include the posts you want to schedule. Ensure each post has the required fields:

{
  "image_path": "path/to/image.jpg",
  "description": "Post description",
  # The post date needs to follow this syntax
  "post_date": "2024-07-06 08:08"
  # Optional
  "extra_data": {
    "custom_accessibility_caption": "Accessibility caption",
    "like_and_view_counts_disabled": 0,
    "disable_comments": 0
  },
}
  • Schedule Posts

Run the main.py script to schedule your posts:

python3 main.py

This script will:

  • Load posts from the JSON file.
  • Creates an individual json file for each post inside the data/scheduled_posts/ directory.
  • Schedule cron jobs to post at the specified times.

πŸ’¬ Logging

The application logs detailed information about events and errors. You can view the logs in the logs/post-activity.log and logs/shell-error.log file. Also, you can view the success and error logs for each post in the data/success.json and data/error.json files respectively.

Show your support

Give a ⭐️ if this project helped you!

About

Python automation to post on Instagram with Cronjob on Unix systems (Linux, Mac, etc). 🐍

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published