diff --git a/TwitchChannelPointsMiner/TwitchChannelPointsMiner.py b/TwitchChannelPointsMiner/TwitchChannelPointsMiner.py index 950c272a..f937351a 100644 --- a/TwitchChannelPointsMiner/TwitchChannelPointsMiner.py +++ b/TwitchChannelPointsMiner/TwitchChannelPointsMiner.py @@ -191,7 +191,7 @@ def analytics( from TwitchChannelPointsMiner.classes.AnalyticsServer import AnalyticsServer http_server = AnalyticsServer( - host=host, port=port, refresh=refresh, days_ago=days_ago + host=host, port=port, refresh=refresh, days_ago=days_ago, username=self.username ) http_server.daemon = True http_server.name = "Analytics Thread" diff --git a/TwitchChannelPointsMiner/classes/AnalyticsServer.py b/TwitchChannelPointsMiner/classes/AnalyticsServer.py index 7b59c586..0aabbe10 100644 --- a/TwitchChannelPointsMiner/classes/AnalyticsServer.py +++ b/TwitchChannelPointsMiner/classes/AnalyticsServer.py @@ -222,6 +222,7 @@ def check_assets(): download_assets(assets_folder, required_files) break +last_sent_log_index = 0 class AnalyticsServer(Thread): def __init__( @@ -230,6 +231,7 @@ def __init__( port: int = 5000, refresh: int = 5, days_ago: int = 7, + username: str = None ): super(AnalyticsServer, self).__init__() @@ -239,6 +241,28 @@ def __init__( self.port = port self.refresh = refresh self.days_ago = days_ago + self.username = username + + def generate_log(): + global last_sent_log_index # Use the global variable + + # Get the last received log index from the client request parameters + last_received_index = int(request.args.get("lastIndex", last_sent_log_index)) + + logs_path = os.path.join(Path().absolute(), "logs") + log_file_path = os.path.join(logs_path, f"{username}.log") + try: + with open(log_file_path, "r") as log_file: + log_content = log_file.read() + + # Extract new log entries since the last received index + new_log_entries = log_content[last_received_index:] + last_sent_log_index = len(log_content) # Update the last sent index + + return Response(new_log_entries, status=200, mimetype="text/plain") + + except FileNotFoundError: + return Response("Log file not found.", status=404, mimetype="text/plain") self.app = Flask( __name__, @@ -259,6 +283,8 @@ def __init__( ) self.app.add_url_rule("/json_all", "json_all", json_all, methods=["GET"]) + self.app.add_url_rule( + "/log", "log", generate_log, methods=["GET"]) def run(self): logger.info( diff --git a/assets/charts.html b/assets/charts.html index fbae91be..844bc630 100644 --- a/assets/charts.html +++ b/assets/charts.html @@ -153,6 +153,10 @@