-
Star
(149)
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() |
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 someone pls explain what this section is doing exactly
for i in range(1, 7):