From 80a0bfa2c44b40b0b316c59e52b842f4028883f5 Mon Sep 17 00:00:00 2001 From: JustAnotherArchivist Date: Fri, 18 Dec 2020 01:49:32 +0000 Subject: [PATCH] Initial commit --- efnet-irclogger-convert.py | 44 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 efnet-irclogger-convert.py diff --git a/efnet-irclogger-convert.py b/efnet-irclogger-convert.py new file mode 100644 index 0000000..c8eeb76 --- /dev/null +++ b/efnet-irclogger-convert.py @@ -0,0 +1,44 @@ +import datetime +import sys + + +assert len(sys.argv) == 2, 'Arg: filename' +filename = sys.argv[1] + +date = filename[:10] + +with open(filename, 'r') as fp: + for line in fp: + origLine = line + if not (line[0] == '[' and line[3] == ':' and line[6:8] == '] ' and line[-1] == '\n'): + print(f'MALFORMED LINE: {line!r}', file = sys.stderr) + continue + time = line[1:6] + line = line[8:-1] + ts = datetime.datetime(int(date[:4]), int(date[5:7]), int(date[8:]), int(time[:2]), int(time[3:]), 0).replace(tzinfo = datetime.timezone.utc).timestamp() + if line.startswith('<'): #PRIVMSG + print(f'{ts} PRIVMSG {line}') + elif line.startswith('* '): #ACTION + print(f'{ts} ACTION {line[2:]}') + elif line.startswith('*** '): + words = line.split(' ')[1:] + if words[1:3] == ['has', 'joined']: # JOIN + print(f'{ts} JOIN {words[0]} joins') + elif words[1:3] == ['has', 'left']: # PART + print(f'{ts} PART {words[0]} leaves') + elif words[1:4] == ['has', 'quit', 'IRC']: # QUIT + print(f'{ts} QUIT {words[0]} quits [{" ".join(words[4:])[1:-1]}]') + elif words[1:4] == ['was', 'kicked', 'by']: # KICK + print(f'{ts} KICK {words[0]} is kicked by {words[4]} [{" ".join(words[5:])[1:-1]}]') + elif words[1:3] == ['sets', 'mode:']: # MODE + print(f'{ts} MODE {line[4:]}') + elif words[1:4] == ['changes', 'topic', 'to:']: # TOPIC + print(f'{ts} TOPIC {words[0]} sets the topic to: {" ".join(words[5:])}') + elif words[1:5] == ['is', 'now', 'known', 'as']: # NICK + print(f'{ts} NICK {line[4:]}') + elif words[1:3] == ['starts', 'logging']: # Silently ignore (there's already a JOIN) + pass + else: + print(f'MALFORMED LINE: {origLine!r}', file = sys.stderr) + else: + print(f'MALFORMED LINE: {origLine!r}', file = sys.stderr)