-
Star
(150)
You must be signed in to star a gist -
Fork
(56)
You must be signed in to fork a gist
-
-
Save tacomonster/555bceef3d14673810f625edd000c112 to your computer and use it in GitHub Desktop.
from selenium import webdriver | |
from selenium.webdriver.common.keys import Keys | |
import time | |
import random | |
import sys | |
def print_same_line(text): | |
sys.stdout.write('\r') | |
sys.stdout.flush() | |
sys.stdout.write(text) | |
sys.stdout.flush() | |
class InstagramBot: | |
def __init__(self, username, password): | |
self.username = username | |
self.password = password | |
self.driver = webdriver.Chrome() | |
def closeBrowser(self): | |
self.driver.close() | |
def login(self): | |
driver = self.driver | |
driver.get("https://www.instagram.com/") | |
time.sleep(2) | |
login_button = driver.find_element_by_xpath("//a[@href='/accounts/login/?source=auth_switcher']") | |
login_button.click() | |
time.sleep(2) | |
user_name_elem = driver.find_element_by_xpath("//input[@name='username']") | |
user_name_elem.clear() | |
user_name_elem.send_keys(self.username) | |
passworword_elem = driver.find_element_by_xpath("//input[@name='password']") | |
passworword_elem.clear() | |
passworword_elem.send_keys(self.password) | |
passworword_elem.send_keys(Keys.RETURN) | |
time.sleep(2) | |
def like_photo(self, hashtag): | |
driver = self.driver | |
driver.get("https://www.instagram.com/explore/tags/" + hashtag + "/") | |
time.sleep(2) | |
# gathering photos | |
pic_hrefs = [] | |
for i in range(1, 7): | |
try: | |
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") | |
time.sleep(2) | |
# get tags | |
hrefs_in_view = driver.find_elements_by_tag_name('a') | |
# finding relevant hrefs | |
hrefs_in_view = [elem.get_attribute('href') for elem in hrefs_in_view | |
if '.com/p/' in elem.get_attribute('href')] | |
# building list of unique photos | |
[pic_hrefs.append(href) for href in hrefs_in_view if href not in pic_hrefs] | |
# print("Check: pic href length " + str(len(pic_hrefs))) | |
except Exception: | |
continue | |
# Liking photos | |
unique_photos = len(pic_hrefs) | |
for pic_href in pic_hrefs: | |
driver.get(pic_href) | |
time.sleep(2) | |
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") | |
try: | |
time.sleep(random.randint(2, 4)) | |
like_button = lambda: driver.find_element_by_xpath('//span[@aria-label="Like"]').click() | |
like_button().click() | |
for second in reversed(range(0, random.randint(18, 28))): | |
print_same_line("#" + hashtag + ': unique photos left: ' + str(unique_photos) | |
+ " | Sleeping " + str(second)) | |
time.sleep(1) | |
except Exception as e: | |
time.sleep(2) | |
unique_photos -= 1 | |
if __name__ == "__main__": | |
username = "USERNAME" | |
password = "PASSWORD" | |
ig = InstagramBot(username, password) | |
ig.login() | |
hashtags = ['amazing', 'beautiful', 'adventure', 'photography', 'nofilter', | |
'newyork', 'artsy', 'alumni', 'lion', 'best', 'fun', 'happy', | |
'art', 'funny', 'me', 'followme', 'follow', 'cinematography', 'cinema', | |
'love', 'instagood', 'instagood', 'followme', 'fashion', 'sun', 'scruffy', | |
'street', 'canon', 'beauty', 'studio', 'pretty', 'vintage', 'fierce'] | |
while True: | |
try: | |
# Choose a random tag from the list of tags | |
tag = random.choice(hashtags) | |
ig.like_photo(tag) | |
except Exception: | |
ig.closeBrowser() | |
time.sleep(60) | |
ig = InstagramBot(username, password) | |
ig.login() |
can you make the bot to auto-reply messages in Instagram dms
ISSUE CLOSED!
It works most of the time, sometimes this bottom login comes up now! This might be while I am on temporary ban only, but I'm not positive.
Right now one of my accounts is running, but the other one keeps running into this screen, it is such a weird situation and not exactly always repeatable so I'm not quite sure how we are going to tackle this.
The weird thing is it shows up after the bot actually logs in? Maybe this is a glitch with the Instagram site itself because it would happen only 1-100 now it happens more, and now 100% on one of my accounts!
It is working now after re-launch but wondering if anyone else noticed this and if so has a solution, or knows what is going on?
The fix to this error in the first screenshot was simply clearing the cache and cookies in Firefox browser! minor! lol
The bot is working great!
Had this problem because I opened another session. only declare webdriver under init
can someone pls explain what this section is doing exactly
for i in range(1, 7):
hmmm. I cannot seem to get the code to work on my mac. Can anyone assist? It might be related to the python my computer is using?
Now I have this error message on PyCharm:
/Users/student/PycharmProjects/youtube/venv/bin/python "/Users/student/Desktop/youtube vid/instagram.py"
File "/Users/student/Desktop/youtube vid/instagram.py", line 1
import selenium from webdriver
^
SyntaxError: invalid syntaxProcess finished with exit code 1
sir its from selenium import webdriver
How do you add the comments.txt, config.json and hashtags.txt to the code? I am receiving the following error: FileNotFoundError: [Errno 2] No such file or directory: './instaRes/config.json'
I am able to login, but I am kicked out right away. Thank you
its worked owww really supwe
can you do it without needing a password, just by username?
can you make bot for massive Unfollow? thx