scripts: Add filter argument to shadacat.py

This commit is contained in:
ZyX 2015-10-18 21:08:42 +03:00
parent e38cbb9367
commit a85163a5d2

View File

@ -60,9 +60,22 @@ def mnormalize(o):
fname = sys.argv[1]
try:
filt = sys.argv[2]
except IndexError:
filt = lambda entry: True
else:
_filt = filt
filt = lambda entry: eval(_filt, globals(), {'entry': entry})
poswidth = len(str(os.stat(fname).st_size or 1000))
class FullEntry(dict):
def __init__(self, val):
self.__dict__.update(val)
with open(fname, 'rb') as fp:
unpacker = msgpack.Unpacker(file_like=fp, read_size=1)
max_type = max(typ.value for typ in EntryTypes)
@ -82,5 +95,15 @@ with open(fname, 'rb') as fp:
else:
entry = unpacker.unpack()
typ = EntryTypes(typ)
full_entry = FullEntry({
'value': entry,
'timestamp': timestamp,
'time': time,
'length': length,
'pos': pos,
'type': typ,
})
if not filt(full_entry):
continue
print('%*u %13s %s %5u %r' % (
poswidth, pos, typ.name, time.isoformat(), length, mnormalize(entry)))