diff --git a/twitch_bonus.py b/twitch_bonus.py index 24f0a5e..658325b 100644 --- a/twitch_bonus.py +++ b/twitch_bonus.py @@ -1,16 +1,18 @@ +import atexit +import os import sys import time -import atexit from loguru import logger from selenium import webdriver -from selenium.webdriver.firefox.service import Service +from selenium.common.exceptions import NoSuchElementException from selenium.webdriver.firefox import options +from selenium.webdriver.firefox.service import Service from urllib3.exceptions import MaxRetryError logger.remove() logger.add(sink=sys.stdout, colorize=True, level='DEBUG', - format="{time:YYYY.MM.DD HH:mm:ss} | {level} | " + format="{time:DD.MM.YYYY HH:mm:ss} | {level} | " "{message}") opt = options.Options() @@ -19,32 +21,43 @@ service = Service(executable_path=r'./geckodriver') driver = webdriver.Firefox(service=service, options=opt) +class UserExitException(Exception): + """We use this exception when user wants to exit.""" + + def exit_log(message: str): - logger.info(message) try: + logger.info(message) driver.close() + sys.exit(0) except MaxRetryError: pass + except SystemExit: + os.abort() if __name__ == '__main__': try: try: driver.get("https://www.twitch.tv/lol4to22") - logger.info('you have 60 seconds to login') time.sleep(60) logger.info('time for login is up') except Exception as e: logger.error(f'Open page exception: {e}') + total_bonus, clicks = 0, 0 while True: try: elem = driver.find_element(by='css selector', value='[aria-label="Claim Bonus"]') elem.click() - logger.info('Bonus +50 has been clicked!') - except Exception as e: - pass - time.sleep(15) + total_bonus += 50 + clicks += 1 + logger.info(f'{clicks}-bonus +50 has been clicked! Total bonus: {total_bonus}') + time.sleep(60 * 15 - 2) + except NoSuchElementException: + time.sleep(1) + except UserExitException: + break except KeyboardInterrupt as e: atexit.register(exit_log, 'Exit script')