summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordaniel-Jones <daniel@danieljon.es>2018-02-16 22:45:22 +1030
committerdaniel-Jones <daniel@danieljon.es>2018-02-16 22:45:22 +1030
commitd0532fb7ae66fd42f632df802ee58a4e3cc92dbc (patch)
tree14ac486720378a441fa9af55066da38fd678d9d6
downloadzncparse-d0532fb7ae66fd42f632df802ee58a4e3cc92dbc.tar.gz
zncparse-d0532fb7ae66fd42f632df802ee58a4e3cc92dbc.zip
first code push
-rw-r--r--zncparse.py80
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);
+