From 8cb465c19b2165fb558b670ecde13b7c6cc441c7 Mon Sep 17 00:00:00 2001 From: Alessandro Maggio Date: Tue, 19 Jan 2021 17:56:56 +0100 Subject: [PATCH] Disable images on chrome - Fix JS and write selector with string formatter. Encode utf-8. Attempt to fix #3 issue --- README.md | 2 ++ .../TwitchChannelPointsMiner.py | 4 +++- TwitchChannelPointsMiner/classes/TwitchBrowser.py | 15 +++++++-------- example.py | 2 ++ 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 04ae165..db11cb1 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,8 @@ For the bet system the script use Selenium (Chrome implemented but not tested as 2. Install all the requirements `pip install -r requirements.txt` 3. Create your `run.py` file start from [example.py](/example.py) ```python +# -*- coding: utf-8 -*- + from TwitchChannelPointsMiner import TwitchChannelPointsMiner from TwitchChannelPointsMiner.classes.Bet import Strategy, BetSettings from TwitchChannelPointsMiner.classes.TwitchBrowser import Browser, BrowserSettings diff --git a/TwitchChannelPointsMiner/TwitchChannelPointsMiner.py b/TwitchChannelPointsMiner/TwitchChannelPointsMiner.py index cddd9b5..6b0fc47 100644 --- a/TwitchChannelPointsMiner/TwitchChannelPointsMiner.py +++ b/TwitchChannelPointsMiner/TwitchChannelPointsMiner.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*- + import logging import threading import signal @@ -75,7 +77,7 @@ class TwitchChannelPointsMiner: logs_path, f"{username}.{datetime.now().strftime('%d%m%Y-%H%M%S')}.log", ) - file_handler = logging.FileHandler(self.logs_file) + file_handler = logging.FileHandler(self.logs_file, 'w', 'utf-8') file_handler.setFormatter( logging.Formatter( "%(asctime)s - %(levelname)s - %(name)s - [%(funcName)s]: %(message)s" diff --git a/TwitchChannelPointsMiner/classes/TwitchBrowser.py b/TwitchChannelPointsMiner/classes/TwitchBrowser.py index 467ad29..1719d03 100644 --- a/TwitchChannelPointsMiner/classes/TwitchBrowser.py +++ b/TwitchChannelPointsMiner/classes/TwitchBrowser.py @@ -167,6 +167,8 @@ class TwitchBrowser: options.add_argument("--disable-gpu") options.add_argument("--no-sandbox") options.add_argument("--disable-setuid-sandbox") + + options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2}) options.add_experimental_option("excludeSwitches", ["enable-logging"]) if os.path.isfile(self.settings.chrome_path) is True: @@ -216,9 +218,8 @@ class TwitchBrowser: # Little delay ... time.sleep(0.2) - f = open(fname, "w") - f.write(self.browser.page_source) - f.close() + with open(fname, "w", encoding="utf-8") as writer: + writer.write(self.browser.page_source) def screenshot(self, fname, write_timestamp=False): screenshots_path = os.path.join(Path().absolute(), "screenshots") @@ -327,7 +328,7 @@ class TwitchBrowser: if event.box_fillable and self.currently_is_betting: decision = event.bet.calculate(event.streamer.channel_points) if decision["choice"]: - selector_index = "[1]" if decision["choice"] == "A" else "[2]" + selector_index = 1 if decision["choice"] == "A" else 2 decision_outcome = ( event.bet.outcomes[0] if decision["choice"] == "A" @@ -435,7 +436,7 @@ class TwitchBrowser: def __send_text_on_bet(self, event, selector_index, text): self.__debug(event, "before__send_text") - status = self.__send_text(streamBetVoteInputXP + selector_index, text, By.XPATH) + status = self.__send_text(f"{streamBetVoteInputXP}[{selector_index}]", text, By.XPATH) if status is False: status = self.__execute_script( streamBetVoteInputJS.format(int(selector_index) - 1, int(text)) @@ -447,9 +448,7 @@ class TwitchBrowser: return False def __click_on_vote(self, event, selector_index): - status = self.__click_when_exist( - streamBetVoteButtonXP + selector_index, By.XPATH - ) + status = self.__click_when_exist(f"{streamBetVoteButtonXP}[{selector_index}]", By.XPATH) if status is False: status = self.__execute_script( streamBetVoteButtonJS.format(int(selector_index) - 1) diff --git a/example.py b/example.py index c9373fa..f8bb5b9 100644 --- a/example.py +++ b/example.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*- + from TwitchChannelPointsMiner import TwitchChannelPointsMiner from TwitchChannelPointsMiner.classes.Bet import Strategy, BetSettings from TwitchChannelPointsMiner.classes.TwitchBrowser import Browser, BrowserSettings