insta_delete status: working | 12/27/2022
- please see below for
Short demo on youtube.
Selenium, BS4 powered script to delete old instagram posts, upload new images, and like posts in my feed.
Working with selenium can be challenging if you have no previous experience with it. Part of this project was for me to get more comfortable using selenium on an ever changing UI.
Download geckodriver
for your system here. The script uses geckodriver after setting it in the path variables. Otherwise you can specify the specific location of the executable. You also need firefox installed unless you are going to be using chromedriver, in which case you will probably need a chrome based browser eg. Brave, Edge or Chrome.
browser = webdriver.Firefox(firefox_profile = profile, executable_path=firefox_path)
For more help: https://github.com/mozilla/geckodriver
This guide assumes you already have python 3 and git installed.
Clone repository
git clone https://github.com/eddyizm/insta_delete.git
Create a virtual environment
cd <newly cloned git repo>
python -m venv env
Activate virtual environment and install requirements
# using git bash
source env/Scripts/activate
pip install -r requirements.txt
I updated all the environment specific stuff to a json file and a function to read the file. All I need to pass in is the file location
Swapped in python-dotenv
to remove the json path and use .env
in your root directory
env file. Fill out your settings here. This file does not get checked in. New config.py
file loads the settings from the environment.
USERNAME=
PASSWORD=
LOG_PATH=
APP_LOG=
FIREFOX_PATH=/path_to_driver/env/geckodriver.exe
PROFILE_PATH=/path_to/AppData/Roaming/Mozilla/Firefox/Profiles/1gzgq8je.default-release
IMAGE_PATH=
On my windows machine I set up a scheduled task that fires off the script via a batch file set up to activate virtual environment using git bash.
#!/bin/bash
# calling insta scripts via shell file.
source <PATH TO CODE>/insta_delete/env/Scripts/activate
python <PATH TO CODE>/insta_delete/<script name> # eg insta_upload.py
For debugging and keeping track of progress. All the scripts share the same log and are delinated with their filename as a sesion. Note that the scripts can run concurrently on separate threads and log to the same file. That is interesting and not intended.
2022-08-21 13:31:58,860 | INFO | -----------------------------------------------------------------------------------------------------
2022-08-21 13:31:58,861 | INFO | start insta_delete.py session -------------------
2022-08-21 13:31:58,862 | INFO | -----------------------------------------------------------------------------------------------------
2022-08-21 13:31:58,862 | INFO | file size: 3131
2022-08-21 13:31:58,862 | INFO | logging in as mobile device to delete
2022-08-21 13:32:15,469 | INFO | found username element: <selenium.webdriver.remote.webelement.WebElement (session="2bcb2e52-f7de-4343-a9b9-bc477e63bb9d", element="2eb1be44-2dd4-4533-bc80-3f7a7a727491")>
2022-08-21 13:32:41,432 | INFO | length of file: 45
2022-08-21 13:32:41,432 | INFO | counter: 10
2022-08-21 13:32:41,432 | INFO | DELETING POSTS!
2022-08-21 13:32:41,433 | INFO | getting new url: https://www.instagram.com/p/CZw-ODmpXjL/
2022-08-21 13:33:03,334 | INFO | POST DELETED: https://www.instagram.com/p/CZw-ODmpXjL/
2022-08-21 13:33:03,334 | INFO | getting new url: https://www.instagram.com/p/CZzQdEHFT00/
2022-08-21 13:33:25,290 | INFO | POST DELETED: https://www.instagram.com/p/CZzQdEHFT00/
2022-08-21 13:33:25,290 | INFO | getting new url: https://www.instagram.com/p/CZ10sjyFgMV/
2022-08-21 13:33:46,994 | INFO | POST DELETED: https://www.instagram.com/p/CZ10sjyFgMV/
2022-08-21 13:33:46,995 | INFO | getting new url: https://www.instagram.com/p/CZ4aUIVFSnN/
2022-08-21 13:34:08,289 | INFO | POST DELETED: https://www.instagram.com/p/CZ4aUIVFSnN/
2022-08-21 13:34:08,289 | INFO | getting new url: https://www.instagram.com/p/CZ6-z_FFile/
2022-08-21 13:34:29,830 | INFO | POST DELETED: https://www.instagram.com/p/CZ6-z_FFile/
2022-08-21 13:34:29,831 | INFO | getting new url: https://www.instagram.com/p/CZ9fNDclq1o/
2022-08-21 13:34:51,532 | INFO | POST DELETED: https://www.instagram.com/p/CZ9fNDclq1o/
2022-08-21 13:34:51,533 | INFO | getting new url: https://www.instagram.com/p/CaAIwjiFHx7/
2022-08-21 13:35:12,983 | INFO | POST DELETED: https://www.instagram.com/p/CaAIwjiFHx7/
2022-08-21 13:35:12,984 | INFO | getting new url: https://www.instagram.com/p/CaCs5lClleg/
2022-08-21 13:35:34,654 | INFO | POST DELETED: https://www.instagram.com/p/CaCs5lClleg/
2022-08-21 13:35:34,654 | INFO | getting new url: https://www.instagram.com/p/CaFSDqvlBOA/
2022-08-21 13:35:56,133 | INFO | POST DELETED: https://www.instagram.com/p/CaFSDqvlBOA/
2022-08-21 13:35:56,133 | INFO | getting new url: https://www.instagram.com/p/CaH16QZl89n/
2022-08-21 13:36:17,632 | INFO | POST DELETED: https://www.instagram.com/p/CaH16QZl89n/
2022-08-21 13:36:17,632 | INFO | getting new url: https://www.instagram.com/p/CaM788KFQag/
2022-08-21 13:36:39,084 | INFO | POST DELETED: https://www.instagram.com/p/CaM788KFQag/
2022-08-21 13:36:39,085 | INFO | while loop done and exited successfully
2022-08-21 13:36:39,086 | INFO | 2022-08-21 13:36:39
2022-08-21 13:36:40,473 | INFO | -----------------------------------------------------------------------------------------------------
2022-08-21 13:36:40,474 | INFO | end insta_delete.py session -------------------
2022-08-21 13:36:40,474 | INFO | -----------------------------------------------------------------------------------------------------
Status: working | 12/27/2022
Status: working | 01/02/2023. finally got a loop working, tested 4 likes.
join me on discord (eddyizm#3389) to discuss features/todos or open an issue...
I'll be adding a few options to fine tune and make it a little more reliable.
- Capture the date of the post in order to delete by date.
- Add a hard limit on profile posts to make sure it doesn't exceed a preferred mininum. Adjust the variable to make sure that quantity stays.
- Get all the hyperlinks of the images in bulk, while scrolling and not the tail end.
- Create a cli entry point to control and call the 3 different automations, possibly mixing them up and passing variables.