From 2ffe7a4a1df48f8f953d5d9ba2a8b724759ea54a Mon Sep 17 00:00:00 2001 From: rdavydov <15850461+rdavydov@users.noreply.github.com> Date: Mon, 24 Oct 2022 13:44:45 +0300 Subject: [PATCH] analytics fix --- .../TwitchChannelPointsMiner.py | 31 ++++++++++--------- TwitchChannelPointsMiner/classes/Settings.py | 2 +- .../classes/WebSocketsPool.py | 4 +-- example.py | 4 ++- 4 files changed, 23 insertions(+), 18 deletions(-) diff --git a/TwitchChannelPointsMiner/TwitchChannelPointsMiner.py b/TwitchChannelPointsMiner/TwitchChannelPointsMiner.py index f000431..78e3c60 100644 --- a/TwitchChannelPointsMiner/TwitchChannelPointsMiner.py +++ b/TwitchChannelPointsMiner/TwitchChannelPointsMiner.py @@ -52,7 +52,7 @@ class TwitchChannelPointsMiner: "username", "twitch", "claim_drops_startup", - "analytics", + "enable_analytics", "priority", "streamers", "events_predictions", @@ -72,7 +72,7 @@ class TwitchChannelPointsMiner: username: str, password: str = None, claim_drops_startup: bool = False, - analytics: bool = False, + enable_analytics: bool = False, # Settings for logging and selenium as you can see. priority: list = [Priority.STREAK, Priority.DROPS, Priority.ORDER], # This settings will be global shared trought Settings class @@ -81,10 +81,9 @@ class TwitchChannelPointsMiner: streamer_settings: StreamerSettings = StreamerSettings(), ): # Analytics switch - Settings.analytics = analytics + Settings.enable_analytics = enable_analytics - if Settings.analytics is True: - from TwitchChannelPointsMiner.classes.AnalyticsServer import AnalyticsServer + if enable_analytics is True: Settings.analytics_path = os.path.join(Path().absolute(), "analytics", username) Path(Settings.analytics_path).mkdir(parents=True, exist_ok=True) @@ -132,21 +131,25 @@ class TwitchChannelPointsMiner: for sign in [signal.SIGINT, signal.SIGSEGV, signal.SIGTERM]: signal.signal(sign, self.end) - # Analytics switch - if Settings.analytics is True: - def analytics( - self, - host: str = "127.0.0.1", - port: int = 5000, - refresh: int = 5, - days_ago: int = 7, - ): + def analytics( + self, + host: str = "127.0.0.1", + port: int = 5000, + refresh: int = 5, + days_ago: int = 7, + ): + # Analytics switch + if Settings.enable_analytics is True: + from TwitchChannelPointsMiner.classes.AnalyticsServer import AnalyticsServer + http_server = AnalyticsServer( host=host, port=port, refresh=refresh, days_ago=days_ago ) http_server.daemon = True http_server.name = "Analytics Thread" http_server.start() + else: + logger.error("Can't start analytics(), please set enable_analytics=True") def mine( self, diff --git a/TwitchChannelPointsMiner/classes/Settings.py b/TwitchChannelPointsMiner/classes/Settings.py index 1fdf1f8..e8c8b4f 100644 --- a/TwitchChannelPointsMiner/classes/Settings.py +++ b/TwitchChannelPointsMiner/classes/Settings.py @@ -20,7 +20,7 @@ class FollowersOrder(Enum): # Empty object shared between class class Settings(object): - __slots__ = ["logger", "streamer_settings", "analytics"] + __slots__ = ["logger", "streamer_settings", "enable_analytics"] class Events(Enum): diff --git a/TwitchChannelPointsMiner/classes/WebSocketsPool.py b/TwitchChannelPointsMiner/classes/WebSocketsPool.py index 9e28e4c..72d24a0 100644 --- a/TwitchChannelPointsMiner/classes/WebSocketsPool.py +++ b/TwitchChannelPointsMiner/classes/WebSocketsPool.py @@ -178,7 +178,7 @@ class WebSocketsPool: balance = message.data["balance"]["balance"] ws.streamers[streamer_index].channel_points = balance # Analytics switch - if Settings.analytics is True: + if Settings.enable_analytics is True: ws.streamers[streamer_index].persistent_series( event_type=message.data["point_gain"]["reason_code"] if message.type == "points-earned" @@ -200,7 +200,7 @@ class WebSocketsPool: reason_code, earned ) # Analytics switch - if Settings.analytics is True: + if Settings.enable_analytics is True: ws.streamers[streamer_index].persistent_annotations( reason_code, f"+{earned} - {reason_code}" ) diff --git a/example.py b/example.py index d0cb700..32ea33d 100644 --- a/example.py +++ b/example.py @@ -20,7 +20,7 @@ twitch_miner = TwitchChannelPointsMiner( Priority.DROPS, # - When we don't have anymore watch streak to catch, wait until all drops are collected over the streamers Priority.ORDER # - When we have all of the drops claimed and no watch-streak available, use the order priority (POINTS_ASCENDING, POINTS_DESCEDING) ], - analytics=False, # Disables Analytics if False. Disabling it significantly reduces memory consumption + enable_analytics=False, # Disables Analytics if False. Disabling it significantly reduces memory consumption logger_settings=LoggerSettings( save=True, # If you want to save logs in a file (suggested) console_level=logging.INFO, # Level of logs - use logging.DEBUG for more info @@ -77,6 +77,8 @@ twitch_miner = TwitchChannelPointsMiner( # For example, if in the mine function you don't provide any value for 'make_prediction' but you have set it on TwitchChannelPointsMiner instance, the script will take the value from here. # If you haven't set any value even in the instance the default one will be used +#twitch_miner.analytics(host="127.0.0.1", port=5000, refresh=5, days_ago=7) # Start the Analytics web-server + twitch_miner.mine( [ Streamer("streamer-username01", settings=StreamerSettings(make_predictions=True , follow_raid=False , claim_drops=True , watch_streak=True , bet=BetSettings(strategy=Strategy.SMART , percentage=5 , stealth_mode=True, percentage_gap=20 , max_points=234 , filter_condition=FilterCondition(by=OutcomeKeys.TOTAL_USERS, where=Condition.LTE, value=800 ) ) )),