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')