From 8765e5a871b71cd3fabb945a0abf702c15c8d447 Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 8 Oct 2025 12:45:37 -0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=A5=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ahh pickles --- mesh_bot.py | 3 +++ modules/system.py | 27 +++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/mesh_bot.py b/mesh_bot.py index d93296a..7552166 100755 --- a/mesh_bot.py +++ b/mesh_bot.py @@ -1736,6 +1736,9 @@ async def start_rx(): logger.debug(f"System: Ignoring Channels: {ignoreChannels}") if noisyNodeLogging: logger.debug(f"System: Noisy Node Logging Enabled") + if logMetaStats: + logger.debug(f"System: Logging Metadata Stats Enabled, leaderboard") + loadLeaderboard() if enableSMTP: if enableImap: logger.debug(f"System: SMTP Email Alerting Enabled using IMAP") diff --git a/modules/system.py b/modules/system.py index 6592e8d..39b4bbe 100644 --- a/modules/system.py +++ b/modules/system.py @@ -1421,6 +1421,31 @@ def noisyTelemetryCheck(): # reset the packet count for the node positionMetadata[nodeID]['packetCount'] = 0 +def saveLeaderboard(): + # save the meshLeaderboard to a pickle file + global meshLeaderboard + try: + with open('data/leaderboard.pkl', 'wb') as f: + pickle.dump(meshLeaderboard, f) + if logMetaStats: + logger.debug("System: Mesh Leaderboard saved to mesh_leaderboard.pkl") + except Exception as e: + logger.warning(f"System: Error saving Mesh Leaderboard: {e}") + +def loadLeaderboard(): + # load the meshLeaderboard from a pickle file + global meshLeaderboard + try: + with open('data/leaderboard.pkl', 'rb') as f: + meshLeaderboard = pickle.load(f) + if logMetaStats: + logger.debug("System: Mesh Leaderboard loaded from mesh_leaderboard.pkl") + except FileNotFoundError: + if logMetaStats: + logger.debug("System: No existing Mesh Leaderboard found, starting fresh") + except Exception as e: + logger.warning(f"System: Error loading Mesh Leaderboard: {e}") + def get_mesh_leaderboard(): """Get formatted leaderboard of extreme mesh metrics""" global meshLeaderboard @@ -1748,6 +1773,8 @@ def exit_handler(): save_bbsdb() save_bbsdm() logger.debug(f"System: BBS Messages Saved") + if logMetaStats: + saveLeaderboard() logger.debug(f"System: Exiting") asyncLoop.stop() asyncLoop.close()