Instabot
Disclaimer: The whole Application is for educational purposes only.
Setup
Make sure to get the right chromedriver for your system from here. Put it in app/assets and add a valid instagram account in the config.json.
Linux x64 Ubuntu 16.04 LTS
cd instabot
bash linuxsetup.sh
Make sure to put a valid instagram account in the config.json
Mac
Requirements: Python3, Pip3, node, npm, php, php compose, chrome browser
cd instabot
./macsetup
Dashboard
The Dashboard consists of 3 parts
- Website (Dashboard GUI)
- Node.js server
- Python Remote Executer
Running on port localhost:3000
Run
Node.js Server:
cd dashboard
node index.js
Python Remote Executer:
cd app
python3 remoteExec.py
Micro Services
You can start and use the micro services on it's own. They are located at app/Services/Content.
statistics
Returns different information from a Instagram account:
- timestamp
- username
- follower_count
- following_count
- media_count
- usertags_count
- feed_items
- likes
- comments
Usage
from Services.Content import Statistics
username = 'someusername'
res = Statistics.getUserInformation(username)
Use carefully on users with a lot of posts (1000+), long duration loading times and potential ban of the parser account, because of to many API calls: about one for each ~18 posts.
Results
The received data gets returned and written into savedStatus/userinformation.json.
Content Services
grabcomments
Grabs different comments for a specified topic.
Usage
from Services.Content import Comments
topic='dog'
maxpp=2
num=10
res = Comments.getComments(topic, maxpp, num)
Where topic is your specified hashtag, maxpp is the number of comments grabbed per picture and num is the overall number of comments which get returned.
Results
The received data gets returned and written into savedStatus/comments.json.
generateHashtags
Finds similar hashtags to one given hashtag.
Usage
from Services.Content import Hashtags
topic= 'dog'
amount= 15
res = Hashtags.generate(topic, amount)
Results
The received data gets returned and written into savedStatus/hashtags.json.
generateImages
Finds similar hashtags to one given hashtag.
Usage
from Services.Content import Images
topic= 'dog'
res = Images.generate(topic)
Results
The received image links gets returned and written into savedStatus/images.json.
Scheduling Services
HumanScheduler
The HumanScheduler adds some random delay between executed tasks
Usage
from Services.Scheduling import HumanScheduler
from Services.Tasks import InstaPySession
Tasks = [InstaPySession.InstaPyTask, InstaPySession.InstaPyTask, UploadImage.uploadTask]
HumanScheduler.mainloop(Tasks)
SleepJob
The SleepJob stops the bot in the evening and wakes him up in the morning like a real human.
Usage
from Services.Scheduling import SleepJob
from Services.Scheduling import HumanScheduler
from Services.Tasks import InstaPySession
Tasks = [InstaPySession.InstaPyTask, InstaPySession.InstaPyTask, UploadImage.uploadTask]
SleepJob.start(HumanScheduler.mainloop, Tasks)
This is used as another layer around the HumanScheduler
Upload Image Service
This service uses gathered data to make posts. This can be a Task for the Scheduler
Usage
from Services.Tasks import UploadImage
UploadImage.uploadTask.run()
The following code will access the saved data under ./app/savedStatus -> So make sure hashtags and Images have already been generated.
Configuration
To configure the project change the example config file (./config.json)
{
"username": "someinstagramaccount",
"password": "somepassword",
"amountOfHashtags": 10,
"topic": "computer",
"wakeUpHour": 8,
"sleepHour": 22,
"marginTime": 1.5,
"maxImagesPerDay": 18,
"minImagesPerDay": 4,
"maxLikePerDay": 900,
"minLikePerDay": 100,
"percentageToFollow": 6.66,
"lowerFollowerCount": 2,
"upperFollowerCount": 400,
"minBreakAfterATaskInMinutes": 1.00,
"maxBreakAfterATaskInMinutes": 60.00
}
FAQ
- What means: checkpoint_required response? -> Account blocked, login manually and unlock it with sms code.
Licence MIT
Credits: David Bochan, Moritz Gruber