pancakecounter/make_table.py
2020-12-06 01:53:50 +01:00

43 lines
1.2 KiB
Python
Executable file

#!/usr/bin/env python3
import sys
import re
from datetime import datetime
from collections import defaultdict
from functools import partial
if sys.stdin.isatty():
print("Hint: stdin is a terminal, you may want to do `./make_table.py < verifications.log` instead.", file=sys.stderr)
users = defaultdict(partial(defaultdict, dict))
for line_nr, line in enumerate(sys.stdin, start=1):
line = line.rstrip()
m = re.fullmatch(r"([^ ]+) ([^ ]+) at ([^ ]+) verified by ([^ ]+) at ([^ ]+)", line)
if m:
awardee = m.group(1)
post_id = m.group(2)
post_time = datetime.fromisoformat(m.group(3))
verifier = m.group(4)
verification_time = datetime.fromisoformat(m.group(5))
users[awardee][post_id][verifier] = verification_time
continue
m = re.fullmatch(r"([^ ]+) ([^ ]+) verification removed by ([^ ]+)", line)
if m:
awardee = m.group(1)
post_id = m.group(2)
verifier = m.group(3)
try:
del users[awardee][post_id][verifier]
except KeyError:
print(f"Trying to remove non-existing verification by {verifier}, looks like the file is corrupt!", file=sys.stderr)
continue
for username, user_posts in users.items():
print(f"{username}: {len(user_posts)}")