From 03f2957c8fd6359bb89cf763ea8dfac0982db8ae Mon Sep 17 00:00:00 2001 From: Alek Ratzloff Date: Tue, 24 May 2022 20:32:37 -0700 Subject: [PATCH] Add markov_import script Used to import markov chains to the given channel. No help available. Use at your own risk. Signed-off-by: Alek Ratzloff --- tools/markov_import.py | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 tools/markov_import.py diff --git a/tools/markov_import.py b/tools/markov_import.py new file mode 100644 index 0000000..2515194 --- /dev/null +++ b/tools/markov_import.py @@ -0,0 +1,41 @@ +from omnibot.config import ServerConfig +from plugins.markov import Markov +import logging +import sys +import re + + +if __name__ == "__main__": + """ + Hacky "load my IRC logs" script + """ + + # TODO - add config path selection + logging.basicConfig( + level=logging.DEBUG, + format="%(asctime)s - %(name)-12s - %(levelname)-8s - %(message)s", + ) + log = logging.getLogger(__name__) + + channel = sys.argv[1] + files = sys.argv[2:] + server_config = ServerConfig() + server_config.load("config.toml") + # This only works on one plugin per config + plugin_config = [ + plugin for plugin in server_config.plugins if "markov" in plugin["module"] + ][0] + plugin = Markov(server_config, plugin_config) + + LINE_RE = re.compile(r"^\[[^\]]+\] <(?P[^>]+)> (?P.+)$") + + for fname in files: + log.info("Loading %s", fname) + with open(fname) as fp: + lines = list(fp) + for line in lines: + if mat := LINE_RE.search(line): + name = mat["name"] + message = mat["message"] + plugin.chains[channel][name].add(message) + plugin.save()