From f1ab21a2ac27f8ba475b1695ca06bbe71b9c87e3 Mon Sep 17 00:00:00 2001 From: Alessandro Maggio Date: Wed, 13 Jan 2021 21:46:08 +0100 Subject: [PATCH] Use emoji.emojize instead of write emoji in code --- .../TwitchChannelPointsMiner.py | 13 +++++----- TwitchChannelPointsMiner/classes/Streamer.py | 5 ++-- TwitchChannelPointsMiner/classes/Twitch.py | 5 ++-- .../classes/TwitchBrowser.py | 19 ++++++++------- .../classes/WebSocketsPool.py | 24 ++++++++++--------- requirements.txt | 3 ++- 6 files changed, 38 insertions(+), 31 deletions(-) diff --git a/TwitchChannelPointsMiner/TwitchChannelPointsMiner.py b/TwitchChannelPointsMiner/TwitchChannelPointsMiner.py index 7fb9b28..15a76fc 100644 --- a/TwitchChannelPointsMiner/TwitchChannelPointsMiner.py +++ b/TwitchChannelPointsMiner/TwitchChannelPointsMiner.py @@ -6,6 +6,7 @@ import time import os import uuid import copy +import emoji from datetime import datetime from pathlib import Path @@ -91,7 +92,7 @@ class TwitchChannelPointsMiner: if self.running: logger.error("You can't start multiple session of this istance!") else: - logger.info(f"Start session: {self.session_id}") + logger.info(emoji.emojize(f":bomb: Start session: {self.session_id}", use_aliases=True)) self.running = True self.start_datetime = datetime.now() @@ -104,7 +105,7 @@ class TwitchChannelPointsMiner: streamer = Streamer(streamer_username, channel_id) self.streamers.append(streamer) except StreamerDoesNotExistException: - logger.info(f"😞 Streamer {streamer_username} does not exist") + logger.info(emoji.emojize(f":cry: Streamer {streamer_username} does not exist", use_aliases=True)) for streamer in self.streamers: self.twitch.load_channel_points_context(streamer) @@ -180,17 +181,17 @@ class TwitchChannelPointsMiner: def __print_report(self): print("\n") logger.info( - f"🔌 End session '{self.session_id}' at: {datetime.now().strftime('%d/%m/%Y %H:%M:%S')}" + emoji.emojize(f":electric_plug: End session '{self.session_id}' at: {datetime.now().strftime('%d/%m/%Y %H:%M:%S')}", use_aliases=True) ) - logger.info(f"⌛ Duration {datetime.now() - self.start_datetime}") + logger.info(emoji.emojize(f":hourglass: Duration {datetime.now() - self.start_datetime}", use_aliases=True)) if self.make_predictions: logger.info( - f"📊 Bet settings: Strategy={self.bet_strategy}, Percentage={self.bet_percentage}, Percentage Gap={self.bet_percentage_gap}, Max points={self.bet_max_points}" + emoji.emojize(f":bar_chart: Bet settings: Strategy={self.bet_strategy}, Percentage={self.bet_percentage}, Percentage Gap={self.bet_percentage_gap}, Max points={self.bet_max_points}", use_aliases=True) ) print('') for streamer_index in range(0, len(self.streamers)): logger.info( - f"📽️ {self.streamers[streamer_index]} - Gained: {self.streamers[streamer_index].channel_points - self.original_streamers[streamer_index].channel_points}, Bonus claimed: {self.streamers[streamer_index].bonus_claimed}" + emoji.emojize(f":movie_camera: {self.streamers[streamer_index]} - Gained: {self.streamers[streamer_index].channel_points - self.original_streamers[streamer_index].channel_points}, Bonus claimed: {self.streamers[streamer_index].bonus_claimed}", use_aliases=True) ) diff --git a/TwitchChannelPointsMiner/classes/Streamer.py b/TwitchChannelPointsMiner/classes/Streamer.py index 28662d2..bb99fc5 100644 --- a/TwitchChannelPointsMiner/classes/Streamer.py +++ b/TwitchChannelPointsMiner/classes/Streamer.py @@ -1,5 +1,6 @@ import time import logging +import emoji logger = logging.getLogger(__name__) @@ -29,9 +30,9 @@ class Streamer: def set_offline(self): self.offline_at = time.time() self.is_online = False - logger.info(f"😴 {self} is Offline!") + logger.info(emoji.emojize(f":sleeping: {self} is Offline!", use_aliases=True)) def set_online(self): self.online_at = time.time() self.is_online = True - logger.info(f"🥳 {self} is Online!") + logger.info(emoji.emojize(f":partying_face: {self} is Online!", use_aliases=True)) diff --git a/TwitchChannelPointsMiner/classes/Twitch.py b/TwitchChannelPointsMiner/classes/Twitch.py index 10b9922..61fa30b 100644 --- a/TwitchChannelPointsMiner/classes/Twitch.py +++ b/TwitchChannelPointsMiner/classes/Twitch.py @@ -10,6 +10,7 @@ import re import os import time import logging +import emoji from base64 import b64encode from pathlib import Path @@ -114,7 +115,7 @@ class Twitch: streamer.set_online() def claim_channel_points_bonus(self, streamer, claim_id): - logger.info(f"🎁 Claiming the bonus for {streamer}!") + logger.info(emoji.emojize(f":gift: Claiming the bonus for {streamer}!", use_aliases=True)) json_data = { "operationName": "ClaimCommunityPoints", "variables": { @@ -235,5 +236,5 @@ class Twitch: ) logger.info( - f"⚔️ Joining raid from {streamer.username} to {raid.target_login}!" + emoji.emojize(f":crossed_swords: Joining raid from {streamer.username} to {raid.target_login}!", use_aliases=True) ) diff --git a/TwitchChannelPointsMiner/classes/TwitchBrowser.py b/TwitchChannelPointsMiner/classes/TwitchBrowser.py index 78f062f..0de8677 100644 --- a/TwitchChannelPointsMiner/classes/TwitchBrowser.py +++ b/TwitchChannelPointsMiner/classes/TwitchBrowser.py @@ -2,6 +2,7 @@ import time import logging import random import os +import emoji from pathlib import Path from datetime import datetime @@ -74,7 +75,7 @@ class TwitchBrowser: self.__init_twitch() def __init_twitch(self): - logger.info("⚙️ Init Twitch page - Cookie - LocalStorage items") + logger.info(emoji.emojize(":wrench: Init Twitch page - Cookie - LocalStorage items", use_aliases=True)) cookie = { "domain": ".twitch.tv", "hostOnly": False, @@ -112,7 +113,7 @@ class TwitchBrowser: # Private method __ - We can instantiate webdriver only with init_browser def __init_chrome(self, show): - logger.info("⚙️ Init Chrome browser") + logger.info(emoji.emojize(":wrench: Init Chrome browser", use_aliases=True)) options = webdriver.ChromeOptions() options.add_argument("--mute-audio") if not show: @@ -129,7 +130,7 @@ class TwitchBrowser: # Private method __ - We can instantiate webdriver only with init_browser def __init_firefox(self, show): - logger.info("⚙️ Init Firefox browser") + logger.info(emoji.emojize(":wrench: Init Firefox browser", use_aliases=True)) options = webdriver.FirefoxOptions() if not show: options.headless = True @@ -212,7 +213,7 @@ class TwitchBrowser: ) else: logger.info( - f"⚙️ Start betting at {event.streamer.chat_url} for event: {event}" + emoji.emojize(f":wrench: Start betting at {event.streamer.chat_url} for event: {event}", use_aliases=True) ) self.browser.get(event.streamer.chat_url) time.sleep(random.uniform(4, 6)) @@ -223,7 +224,7 @@ class TwitchBrowser: def complete_bet(self, event: EventPrediction): logger.info( - f"⚙️ Going to complete bet for event {event}. Current url page: {self.browser.current_url}" + emoji.emojize(f":wrench: Going to complete bet for event {event}. Current url page: {self.browser.current_url}", use_aliases=True) ) if event.box_fillable and self.currently_is_betting: decision = event.bet.calculate( @@ -238,7 +239,7 @@ class TwitchBrowser: try: logger.info( - f"⚙️ Going to write: {decision['amount']} on input {decision['choice']}" + emoji.emojize(f":wrench: Going to write: {decision['amount']} on input {decision['choice']}", use_aliases=True) ) self.__send_text( streamBetVoteInput + selector_index, @@ -277,21 +278,21 @@ class TwitchBrowser: ) def __open_coins_menu(self, event: EventPrediction): - logger.info(f"⚙️ Open coins menu for event: {event}") + logger.info(emoji.emojize(f":wrench: Open coins menu for event: {event}", use_aliases=True)) self.__click_when_exist(streamCoinsMenu, By.XPATH) time.sleep(random.uniform(0.05, 0.1)) if self.do_screenshot: self.screenshot(f"{event.event_id}___open_coins_menu.png".format) def __click_on_bet(self, event): - logger.info(f"⚙️ Click on the bet for event: {event}") + logger.info(emoji.emojize(f":wrench: Click on the bet for event: {event}", use_aliases=True)) self.__click_when_exist(streamBetTitleInBet, By.CSS_SELECTOR) time.sleep(random.uniform(0.05, 0.1)) if self.do_screenshot: self.screenshot(f"{event.event_id}___click_on_bet.png".format) def __enable_custom_bet_value(self, event): - logger.info(f"⚙️ Enable input of custom value for event: {event}") + logger.info(emoji.emojize(f":wrench: Enable input of custom value for event: {event}", use_aliases=True)) if self.__click_when_exist(streamBetCustomVote, By.CSS_SELECTOR) is not None: time.sleep(random.uniform(0.05, 0.1)) if self.do_screenshot: diff --git a/TwitchChannelPointsMiner/classes/WebSocketsPool.py b/TwitchChannelPointsMiner/classes/WebSocketsPool.py index 6ea4f78..4670f41 100644 --- a/TwitchChannelPointsMiner/classes/WebSocketsPool.py +++ b/TwitchChannelPointsMiner/classes/WebSocketsPool.py @@ -2,6 +2,7 @@ import logging import threading import time import json +import emoji from dateutil import parser @@ -81,14 +82,15 @@ class WebSocketsPool: @staticmethod def handle_websocket_reconnection(ws): - ws.is_closed = True - logger.info("Reconnecting to Twitch PubSub server in 30 seconds") - time.sleep(30) - self = ws.parent_pool - if self.ws == ws: - self.ws = None - for topic in ws.topics: - self.submit(topic) + if ws.keep_running: + ws.is_closed = True + logger.info("Reconnecting to Twitch PubSub server in 30 seconds") + time.sleep(30) + self = ws.parent_pool + if self.ws == ws: + self.ws = None + for topic in ws.topics: + self.submit(topic) @staticmethod def on_message(ws, message): @@ -127,7 +129,7 @@ class WebSocketsPool: "balance" ]["balance"] logger.info( - f"🚀 +{earned} → {ws.streamers[streamer_index]} - Reason: {message_data['point_gain']['reason_code']}." + emoji.emojize(f":rocket: +{earned} → {ws.streamers[streamer_index]} - Reason: {message_data['point_gain']['reason_code']}.", use_aliases=True) ) elif message_type == "claim-available": streamer_index = get_streamer_index( @@ -194,7 +196,7 @@ class WebSocketsPool: # complete_bet_thread.start() logger.info( - f"⏰ A thread should start and place the bet after: {event.closing_bet_after(current_timestamp)}s for the event: {ws.events_predictions[event_id]}" + emoji.emojize(f":alarm_clock: A thread should start and place the bet after: {event.closing_bet_after(current_timestamp)}s for the event: {ws.events_predictions[event_id]}", use_aliases=True) ) else: @@ -211,7 +213,7 @@ class WebSocketsPool: event_id = message_data["event"]["id"] if event_id in ws.events_predictions: logger.info( - f"📊 {ws.events_predictions[event_id]} - Result: {message_data['event']['result']['type']}, Points won: {message_data['event']['result']['type'] if message_data['event']['result']['type'] else 0}" + emoji.emojize(f":bar_chart: {ws.events_predictions[event_id]} - Result: {message_data['event']['result']['type']}, Points won: {message_data['event']['result']['type'] if message_data['event']['result']['type'] else 0}", use_aliases=True) ) elif response["type"] == "RESPONSE" and len(response.get("error", "")) > 0: diff --git a/requirements.txt b/requirements.txt index ea73063..4d16a69 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,4 +3,5 @@ websocket-client browser_cookie3 pillow selenium -python-dateutil \ No newline at end of file +python-dateutil +emoji \ No newline at end of file