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 <alekratz@gmail.com>
This commit is contained in:
2022-05-24 20:32:37 -07:00
parent 1bcfae171a
commit 03f2957c8f

41
tools/markov_import.py Normal file
View File

@@ -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<name>[^>]+)> (?P<message>.+)$")
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()