Skip to main content

Instagram Python Bot

Project description

Neo-Instabot 🤖 🌟

Neo-Instabot is an extremely light instagram bot that uses the undocumented Web API. Unlike other bots, Instabot.py does not require Selenium or a WebDriver. Instead, it interacts with the API over simple HTTP Requests. It runs on most systems, including Raspberry Pi.

Chat on Telegram Latest version on Supported Python versions Travis Pipelines build status

Requirements

  • Python v3.6 or greater
  • Pip v18 or greater

Quick Start 🚀

  • Make sure you have Python 3.6 or above installed

    • python3 --version

On Windows you might have to use python without the version (3) suffix. Experienced users should use virtualenv.

  • Install instabot.py from PyPi repository

    • python3 -m pip install neo-instabot
  • Start the bot 🏁

    • neo-instabot or python3 -m instabot
    • neo-instabot -c myconfiguration.yml or python3 -m instabot -c myconfiguration.yml
  • ** Configuration ** ⚙️

By running neo-instabot, the Bot reads its configuration from instabot.config.yml in your current directory. you can run the bot with a different configuration neo-instabot -c myconfiguration.yml

Upgrade ⬆️

  • python3 -m pip install neo-instabot --no-cache-dir --upgrade
  • pip3 install neo-instabot --no-cache-dir --upgrade

Install methods

Recommended: From PyPi: (Stable)

  • python3 -m pip install neo-instabot

From sources: (Bleeding edge)

  • python3 -m pip install git+https://github.com/yurilaaziz/neo-instabot

Parameters

Parameter Type Description Default value
login str Your instagram username
password str Your instagram password
start_at_h int Start program at the hour 0
start_at_m int Start program at the min 0
end_at_h int End program at the hour 23
end_at_m int End program at the min 59
database dict Contains the database configuration {"type": "sql", "connection_string": "sqlite:///{{login}}.db"}
session_file str change the name of session file so to avoid having to login every time. Set False to disable. "username.session"
like_per_day int DEPRECATED, WILL BE REMOVED SOON, REPLACED BY like_per_run
like_per_run int Number of photos to like per day (over 1000 may cause throttling) 1000
media_max_like int Maximum number of likes on photos to like (set to 0 to disable) 0
media_min_like int Minimum number of likes on photos to like (set to 0 to disable) 0
follow_per_day int DEPRECATED, WILL BE REMOVED SOON, REPLACED BY follow_per_run 0
follow_per_run int Users to follow per day 0
follow_time int Seconds to wait before unfollowing 5 * 60 * 60
user_min_follow int Check user before following them if they have X minimum of followers. Set 0 to disable 0
user_max_follow int Check user before following them if they have X maximum of followers. Set 0 to disable 0
follow_time_enabled bool REMOVED, TO DISBALE Follow_time, just set it to 0 --
unfollow_per_day int DEPRECATED, WILL BE REMOVED SOON, REPLACED BY unfollow_per_run 0
unfollow_per_run int Users to unfollow per day 0
unfollow_recent_feed bool If enabled, will populate database with users from recent feed and unfollow if they meet the conditions. Disable if you only want the bot to unfollow people it has previously followed. True
unlike_per_day int DEPRECATED, WILL BE REMOVED SOON, REPLACED BY unlike_per_run 0
unlike_per_run int Number of media to unlike that the bot has previously liked. Set to 0 to disable. 0
time_till_unlike int How long to wait after liking media before unliking them. 3 * 24 * 60 * 60 (3 days)
comments_per_day int Comments to post per day 0
comment_list [[str]] List of word lists for comment generation. @username@ will be replaced by the media owner's username [['this', 'your'], ['photo', 'picture', 'pic', 'shot'], ['is', 'looks', 'is really'], ['great', 'super', 'good'], ['.', '...', '!', '!!']]
tag_list [str] Tags to use for finding posts by hasthag or location(l:locationid from e.g. https://www.instagram.com/explore/locations/212999109/los-angeles-california/) ['cat', 'car', 'dog', 'l:212999109']
keywords [str] Words to use for finding profiles with username or biography contain these words []
tag_blacklist [str] Tags to ignore when liking posts []
user_blacklist {str: str} Users whose posts to ignore. Example: {"username": "", "username2": ""} type only the key and leave value empty -- it will be populated with userids on startup. {}
max_like_for_one_tag int How many media of a given tag to like at once (out of 21) 5
unfollow_break_min int Minimum seconds to break between unfollows 15
unfollow_break_max int Maximum seconds to break between unfollows 30
log_mod int Logging target (0 log to console, 1 log to file, 2 no log.) 0
proxies (deprecated) dict Access instagram through a proxy. {"http":"http://IP:PORT", "https":"http://IP:PORT"} (host:port or user:password@host:port)
proxy_ip dict HTTP Proxy IP address
proxy_port int HTTP Proxy Port
proxy_user str HTTP Proxy username
proxy_password str HTTP Proxy password
unfollow_not_following bool Unfollow Condition: Unfollow those who do not follow you back True
unfollow_inactive bool Unfollow Condition: Unfollow those who have not posted in a while (inactive) True
unfollow_probably_fake bool Unfollow Condition: Unfollow accounts which skewed follow/follower ratio (probably fake) True
unfollow_selebgram bool Unfollow Condition: Unfollow (celebrity) accounts with too many followers and not enough following False
unfollow_everyone bool Unfollow Condition: Will unfollow everyone in unfollow queue (wildcard condition) False

Contributing

Please feel free to contribute and submit PR requests. All help is appreciated. Look for issues with the label needs help.

Instabot with yaml config

By default, instabot looks for configuration file (instabot.config.yml) it could be changed by exporting environment varibale with the full path

export INSTABOT_CONFIG_FILE=instabot2.config.yml
---
login : "username"
password : "password"
debug: 1
#Send INFO notification to Telegram channel 
logging.handlers.telegram:
  level: INFO
  class: telegram_handler.TelegramHandler
  token: __YOUR__CHANNEL__TOKEN__
  chat_id: __CHAT_ID__
logging.loggers.InstaBot.handlers:
  - telegram
  - console

follow_time: 1200
unfollow_per_day: 1000
follow_per_day: 1000

Create Telegram bot for instabot

Blogs

Community

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

neo_instabot-0.6.0-py3-none-any.whl (58.6 kB view details)

Uploaded Python 3

File details

Details for the file neo_instabot-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: neo_instabot-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 58.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.7

File hashes

Hashes for neo_instabot-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7cf2f5f6ee95e7f47cafda0e64a2d8303d71adaa6b14971180f0f9bb8c850265
MD5 246b82d880bbf1e975ee586c0a356153
BLAKE2b-256 dc9c69b26951a2fc97bc66783c3bf449d3a1421d2644825b4587d326d62b4658

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page