54 lines
1010 B
Python
54 lines
1010 B
Python
import json
|
|
|
|
class Output:
|
|
name = None
|
|
needsFilename = False
|
|
|
|
def __init__(self, name):
|
|
super().__init__()
|
|
self.name = name
|
|
|
|
def open(self, file: str = None):
|
|
pass
|
|
|
|
def close(self):
|
|
pass
|
|
|
|
def print(self, stats, msgcount, dialog):
|
|
pass
|
|
|
|
|
|
class STDOUT(Output):
|
|
|
|
def __init__(self, name: str = "stdout"):
|
|
super().__init__(name)
|
|
|
|
def print(self, stats, msgcount, dialog):
|
|
for stat in stats:
|
|
print(stat.name, ': ', stat.getValue(msgcount), sep='')
|
|
|
|
|
|
class jsonOut(Output):
|
|
|
|
file = None
|
|
needsFilename = True
|
|
outbuff = []
|
|
|
|
def __init__(self, name: str = "json"):
|
|
super().__init__(name)
|
|
|
|
def open(self, file):
|
|
if file is None:
|
|
file = "out.json"
|
|
self.file = open(file, "w")
|
|
|
|
def close(self):
|
|
json.dump(self.outbuff, self.file, indent=4)
|
|
self.file.close()
|
|
|
|
def print(self, stats, msgcount, dialog):
|
|
jsonpre = {"count": msgcount, 'chatid': dialog.id, 'chatname': dialog.name}
|
|
for stat in stats:
|
|
jsonpre[stat.name] = stat.getAll(msgcount)
|
|
self.outbuff.append(jsonpre)
|