Guest User

Untitled

a guest
Apr 17th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.97 KB | None | 0 0
  1. from locators import *
  2. from selenium.webdriver.common.keys import Keys
  3. from selenium.common.exceptions import *
  4. from selenium.webdriver.support.ui import WebDriverWait
  5. from selenium.webdriver.support import expected_conditions as EC
  6. from selenium import webdriver
  7. import time
  8. from random import randint
  9. from selenium.webdriver.common.action_chains import ActionChains
  10.  
  11.  
  12. class Instagram:
  13.  
  14. def __init__(self, username, password):
  15. chrome_options = webdriver.ChromeOptions()
  16. chrome_options.headless = False
  17. chrome_options.add_argument("--start-maximized")
  18. self.browser = webdriver.Chrome(chrome_options=chrome_options)
  19. self._login(username, password)
  20. self.loop()
  21.  
  22. def loop(self):
  23. while True:
  24. self.go_to_pascal_followers()
  25. self.make_random_follow()
  26. self.go_to_pascal_followers()
  27. self.make_random_unfollow()
  28.  
  29. def _login(self, username, password):
  30. self.browser.get("https://www.instagram.com/accounts/login/")
  31. password_field = self._wait_visibility(login_password)
  32. username_field = self._wait_visibility(login_username)
  33. username_field.send_keys(username)
  34. password_field.send_keys(password)
  35. login_field = self._wait_clickable(login_button)
  36. login_field.click()
  37. not_now_field = self._wait_clickable(login_not_now)
  38. not_now_field.click()
  39.  
  40. def go_to_pascal_followers(self):
  41. home = self._wait_clickable(insta_main)
  42. home.click()
  43.  
  44. searching = self._wait_clickable(search_field)
  45. searching.send_keys("pascal_vegas")
  46.  
  47. pascal_vegas = self._wait_clickable(pascal_vegas_search)
  48. pascal_vegas.click()
  49.  
  50. subbed_field = self._wait_clickable(subbed)
  51. subbed_field.click()
  52.  
  53. def make_random_follow(self, count=0):
  54. followers = self._wait_visibility(follow_button_list, return_all=True)
  55. if followers is None:
  56. close = self._wait_clickable(close_button)
  57. close.click()
  58. return
  59. if count < len(followers):
  60. # scroll to load more of the list
  61. for x in range(3):
  62. scroll = self._wait_visibility(scroll_subbed)
  63. actions = ActionChains(self.browser)
  64. actions.move_to_element(scroll).perform()
  65. time.sleep(1)
  66. self.make_random_follow(count=len(followers))
  67. else:
  68. while len(followers) > 0:
  69. random_number = randint(0, len(followers) - 1)
  70. followers[random_number].click()
  71. del followers[random_number]
  72. time.sleep(randint(10, 20))
  73. close = self._wait_clickable(close_button)
  74. close.click()
  75.  
  76. def make_random_unfollow(self, count=0):
  77. unfollowers = self._wait_visibility(subbed_button_list, return_all=True)
  78. if unfollowers is None:
  79. close = self._wait_clickable(close_button)
  80. close.click()
  81. return
  82. if count < len(unfollowers):
  83. # scroll to load more of the list
  84. for x in range(3):
  85. scroll = self._wait_clickable(scroll_subbed)
  86. actions = ActionChains(self.browser)
  87. actions.move_to_element(scroll).perform()
  88. time.sleep(1)
  89. self.make_random_unfollow(count=len(unfollowers))
  90. else:
  91. while len(unfollowers) > 0:
  92. random_number = randint(0, len(unfollowers) - 1)
  93. unfollowers[random_number].click()
  94. confirm = self._wait_clickable(unfollow_confirm_button)
  95. time.sleep(1)
  96. confirm.click()
  97. del unfollowers[random_number]
  98. time.sleep(randint(10, 20))
  99. close = self._wait_clickable(close_button)
  100. close.click()
  101.  
  102. def _wait_visibility(self, element, waiting_time=15, return_all=False, not_visible=False):
  103. try:
  104. if return_all:
  105. x = WebDriverWait(self.browser, waiting_time).until(EC.visibility_of_all_elements_located(element))
  106. return x
  107. else:
  108. x = WebDriverWait(self.browser, waiting_time).until(EC.visibility_of_element_located(element))
  109. return x
  110. except WebDriverException:
  111. if not not_visible:
  112. return
  113. raise WebDriverException("Element was not visible!")
  114.  
  115. def _wait_clickable(self, element, waiting_time=15):
  116. try:
  117. x = WebDriverWait(self.browser, waiting_time).until(EC.element_to_be_clickable(element))
  118. return x
  119. except WebDriverException:
  120. raise WebDriverException("Element was not clickable!")
  121.  
  122.  
  123. if __name__ == "__main__":
  124. # usr = input("Please enter your username:")
  125. # pwd = input("Please enter your password:")
  126. auto = Instagram("maikikohle31", "raum230")
  127. # auto = Instagram(usr, pwd)
Add Comment
Please, Sign In to add comment