youtube_uploader_selenium icon indicating copy to clipboard operation
youtube_uploader_selenium copied to clipboard

a way to pass cookies headlessly?

Open ahmedtds opened this issue 5 years ago • 6 comments

need to pass first step headlessly, how to do it?

ahmedtds avatar Oct 24 '20 03:10 ahmedtds

Wondering too

flazouh avatar Jan 03 '21 23:01 flazouh

Did anyone get it?

gloliveira1701 avatar Feb 03 '21 15:02 gloliveira1701

Yes,You can set cookie file to execute firefox headlessly

tjtgzxs avatar Mar 05 '21 08:03 tjtgzxs

@tjtgzxs @linouk23 can you please share how?

itsjwala avatar Mar 07 '21 17:03 itsjwala

NVM, I changed the code a bit to sign in via automation, For Headless mode pass headless=True in the Firefox driver class

Constant.py

  YOUTUBE_SIGNIN_BUTTON = '//*[@id="buttons"]/ytd-button-renderer/a'
  GOOGLE_SIGNIN_CARD_EMAIL = '//*[@id="identifierId"]'
  GOOGLE_SIGNIN_CARD_EMAIL_NEXT = '//*[@id="identifierNext"]/div/button'
  GOOGLE_SIGNIN_CARD_PASSWORD = '//*[@id="password"]/div[1]/div/div[1]/input'
  GOOGLE_SIGNIN_CARD_PASSWORD_NEXT = '//*[@id="passwordNext"]/div/button'

__init__.py

    def __login(self):
        self.browser.get(Constant.YOUTUBE_URL)
        time.sleep(Constant.USER_WAITING_TIME)

        if self.browser.has_cookies_for_current_website():
            self.browser.load_cookies()
            time.sleep(Constant.USER_WAITING_TIME)
            self.browser.refresh()
        else:
            self.logger.debug('Couldnt find cookies. attempting login via automation')
            self.logger.debug('Clicking sign in button on top right corner')
            self.browser.find(By.XPATH, Constant.YOUTUBE_SIGNIN_BUTTON).click()
            time.sleep(Constant.USER_WAITING_TIME)
            self.logger.debug('Attempting to fill email')
            self.browser.find(By.XPATH,Constant.GOOGLE_SIGNIN_CARD_EMAIL).send_keys(os.getenv("YOUTUBE_USER_EMAIL"))
            time.sleep(Constant.USER_WAITING_TIME)
            self.logger.debug('Attempting to click next')
            self.browser.find(By.XPATH, Constant.GOOGLE_SIGNIN_CARD_EMAIL_NEXT).click()
            time.sleep(Constant.USER_WAITING_TIME)
            self.logger.debug('Attempting to fill password')
            self.browser.find(By.XPATH, Constant.GOOGLE_SIGNIN_CARD_PASSWORD ).send_keys(os.getenv("YOUTUBE_USER_PASS"))
            time.sleep(Constant.USER_WAITING_TIME)
            self.logger.debug('Attempting to go all in !')
            self.browser.find(By.XPATH, Constant.GOOGLE_SIGNIN_CARD_PASSWORD_NEXT).click()
            time.sleep(Constant.USER_WAITING_TIME)
            self.browser.save_cookies()

and passing youtube creds as environment variables.

In future Google might screw up the login form and XPATHs might need update

itsjwala avatar Mar 23 '21 14:03 itsjwala

or do this self.browser = Firefox(current_working_dir, current_working_dir, headless=True) in here.

ghost avatar Apr 03 '21 08:04 ghost