Skip to content

Instantly share code, notes, and snippets.

@hehe24h
Forked from aclisp/selenium-youtube.py
Created November 27, 2021 07:06
Show Gist options
  • Save hehe24h/d92538f890f52cf6e1b4afb71e4b202d to your computer and use it in GitHub Desktop.
Save hehe24h/d92538f890f52cf6e1b4afb71e4b202d to your computer and use it in GitHub Desktop.
Youtube Comment Bot using Selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as expect
from selenium.webdriver.common.keys import Keys
import time
from random import randint
def delay(n):
time.sleep(randint(2, n))
driver = webdriver.Chrome()
driver.get("https://www.youtube.com")
print("enter " + driver.title)
delay(5)
# click SIGN IN button
item = driver.find_element_by_css_selector("ytd-masthead div#buttons ytd-button-renderer a")
item.click()
delay(5)
# login google account
driver.find_element_by_id("identifierId").send_keys("[email protected]")
driver.find_element_by_id("identifierNext").click()
delay(5)
password_locator = (By.CSS_SELECTOR, 'div#password input[name="password"]')
WebDriverWait(driver, 10).until(
expect.presence_of_element_located(password_locator)
)
password = driver.find_element(*password_locator)
WebDriverWait(driver, 10).until(
expect.element_to_be_clickable(password_locator)
)
password.send_keys("password")
driver.find_element_by_id("passwordNext").click()
delay(5)
print("wait for login ...")
WebDriverWait(driver, 300).until(
expect.presence_of_element_located((By.CSS_SELECTOR, "ytd-masthead button#avatar-btn"))
)
print("login ok")
search = driver.find_element_by_css_selector("ytd-masthead form#search-form input#search")
search.click()
search.send_keys("hago")
search.submit()
delay(5)
item = driver.find_element_by_css_selector("ytd-search a#video-title")
item.click()
delay(5)
# scroll to the bottom in order to load the comments
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
print("wait for comments to load ...")
WebDriverWait(driver, 10).until(
expect.presence_of_element_located((By.CSS_SELECTOR, "ytd-comments ytd-comment-simplebox-renderer"))
)
driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")
item = driver.find_element_by_css_selector("ytd-comments ytd-comment-simplebox-renderer div#placeholder-area")
item.click()
item = driver.find_element_by_css_selector(("ytd-comments ytd-comment-simplebox-renderer "
"iron-autogrow-textarea #textarea"))
item.click()
item.send_keys("I like it!\n")
item.send_keys("This is the most amazing things ever seen.\n")
item.send_keys("Wanna see more~\n")
item.send_keys(Keys.CONTROL, Keys.ENTER)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment