Before place the bet check if in 1s of timeout the bet div is visibile, in case of tiemout exception attempt do a bet chains for open again the div and make the input fillable. #6

This commit is contained in:
Alessandro Maggio
2021-01-20 12:17:26 +01:00
parent ddc8be3068
commit c3d068fbaf
2 changed files with 33 additions and 12 deletions

View File

@@ -13,13 +13,12 @@ class EmojiFormatter(logging.Formatter):
logging.Formatter.__init__(self, fmt=fmt, datefmt=datefmt)
def format(self, record):
if hasattr(record, "emoji") and self.print_emoji is True:
# Check also if the message have already the emoji
if hasattr(record, "emoji_is_present") is False or record.emoji_is_present is False:
record.msg = emoji.emojize(
f"{record.emoji} {record.msg.strip()}", use_aliases=True
)
record.emoji_is_present = True
record.emoji_is_present = record.emoji_is_present if hasattr(record, "emoji_is_present") else False
if hasattr(record, "emoji") and self.print_emoji is True and record.emoji_is_present is False:
record.msg = emoji.emojize(
f"{record.emoji} {record.msg.strip()}", use_aliases=True
)
record.emoji_is_present = True
return super().format(record)
@@ -65,7 +64,7 @@ def configure_loggers(username, settings):
print_emoji=settings.emoji,
)
)
# file_handler.setLevel(settings.level)
# file_handler.setLevel(settings.level) # Use the same level as Root logger
root_logger.addHandler(file_handler)
return logs_file
return None

View File

@@ -14,6 +14,7 @@ from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.common.exceptions import TimeoutException
from TwitchChannelPointsMiner.classes.EventPrediction import EventPrediction
@@ -315,15 +316,20 @@ class TwitchBrowser:
)
self.browser.get(event.streamer.chat_url)
time.sleep(random.uniform(3, 5))
if self.__open_coins_menu(event) is True:
if self.__click_on_bet(event) is True:
if self.__enable_custom_bet_value(event) is True:
return self.currently_is_betting
if self.__bet_chains_methods(event) is True:
return self.currently_is_betting
logger.error(
f"Attempt {attempt+1} failed!", extra={"emoji": ":wrench:"}
)
return False
def __bet_chains_methods(self, event):
if self.__open_coins_menu(event) is True:
if self.__click_on_bet(event) is True:
if self.__enable_custom_bet_value(event) is True:
return True
return False
def place_bet(self, event: EventPrediction):
logger.info(
f"Going to complete bet for event {event}. Current url page: {self.browser.current_url}",
@@ -331,6 +337,22 @@ class TwitchBrowser:
)
if event.status == "ACTIVE":
if event.box_fillable and self.currently_is_betting:
try:
WebDriverWait(self.browser, 1).until(
expected_conditions.visibility_of_element_located((By.XPATH, streamBetMainDiv))
)
except TimeoutException:
logger.info(
"The bet div was not found, maybe It was closed. Attempt to open again, hope to be in time",
extra={"emoji": ":wrench:"},
)
if self.__bet_chains_methods(event) is True:
logger.info(
"Success! Bet div is now open, we can complete the bet",
extra={"emoji": ":wrench:"}
)
decision = event.bet.calculate(event.streamer.channel_points)
if decision["choice"]:
selector_index = 1 if decision["choice"] == "A" else 2