diff options
author | daniel-Jones <daniel@danieljon.es> | 2018-02-16 22:45:22 +1030 |
---|---|---|
committer | daniel-Jones <daniel@danieljon.es> | 2018-02-16 22:45:22 +1030 |
commit | d0532fb7ae66fd42f632df802ee58a4e3cc92dbc (patch) | |
tree | 14ac486720378a441fa9af55066da38fd678d9d6 | |
download | zncparse-d0532fb7ae66fd42f632df802ee58a4e3cc92dbc.tar.gz zncparse-d0532fb7ae66fd42f632df802ee58a4e3cc92dbc.zip |
first code push
-rw-r--r-- | zncparse.py | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/zncparse.py b/zncparse.py new file mode 100644 index 0000000..2a1eb2c --- /dev/null +++ b/zncparse.py @@ -0,0 +1,80 @@ +#!/usr/bin/env python3 +import os, json; + +class Message: + ''' + messages.append(Message(filepath)); + print(messages[x].filepath); + ''' + msgcount = 0; + channels = []; + def __init__(self, fp, line): + self.filepath = fp; + self.line = line; + Message.msgcount+=1; + + def parsechannel(self): + # channel name is taken from file path + self.channel = self.filepath.split("#")[1].split("_")[0]; + + def parsedate(self): + # date taken from file path + self.date = self.filepath.rsplit("_", 1)[1].rsplit(".", 1)[0]; + + def parseline(self): + try: + self.user = self.line.split("<", 1)[1].split(">", 1)[0]; + except: + self.user = "ZNCLOG"; + self.line = "[00:00:00] <ZNCLOG> disregard message"; + self.time = self.line.split(" <", 1)[0].replace("[", "").replace("]", ""); + self.message = self.line.split("> ", 1)[1]; + + def getstructuredmsg(self): + self.data = {}; + self.data["date"] = self.date; + self.data["time"] = self.time; + self.data["channel"] = self.channel; + self.data["user"] = self.user; + self.data["message"] = self.message; + return self.data; + + def parse(self): + # get message time + self.parseline(); + self.parsechannel(); + self.parsedate(); + +def getlines(logfile): + with open(logfile, encoding="utf-8") as f: + for line in f: + messages.append(Message(logfile, line)); + +def getlogpaths(): + # loop through each .log file inside indir + for file in os.listdir(indir): + if (file.endswith(".log")): + filepath = os.path.join(indir, file); + logfiles.append(filepath); + if (debug): + break; + +if __name__ == "__main__": + debug = 1; + indir = "logs/parse"; + outdir = "out"; + + logfiles = []; + messages = []; + getlogpaths(); + tmpdata = []; + # collect all lines + for file in logfiles: + getlines(file); + # parse each line + for x in range(len(messages)): + messages[x].parse(); + tmpdata.append(messages[x].getstructuredmsg()); + json_data = json.dumps(tmpdata); + print(json_data); + |