1
mirror of git://git.acid.vegas/IRCP.git synced 2024-11-22 07:56:42 +00:00

Simplified parser for easy usage with grep

This commit is contained in:
Dionysus 2023-05-30 02:49:13 -04:00
parent 45100452da
commit c6c746117c
Signed by: acidvegas
GPG Key ID: EF4B922DB85DC9DE

View File

@ -5,64 +5,35 @@ import json
import os
import sys
def parse(line, raw): # TODO: finish adding custom outputs for certain fields
def parse(data, raw=True):
if not raw:
args = line.split()
numeric = args[1]
data = ' '.join(args[3:])
data = ' '.join(line.split()[3:])
if data[:1] == ':':
data = data[1:]
if numeric == '001' and len(args) >= 7 and data.lower().startswith('welcome to the '):
return args[6]
elif numeric == '002' and len(line.split('running version ')) == 2:
return line.split('running version ')[1]
elif numeric == '003':
check = [item for item in ('This server was cobbled together ','This server was created ','This server has been started ','This server was last re(started) on ','This server was last (re)started on ') if data.startswith(item)]
if check:
return data.replace(check[0],'')
elif numeric == '004' and len(args) >= 5:
return args[4]
elif numeric == '005':
return data.split(' :')[0]
elif numeric == '006':
while data[:1] in ('-','|',' ','`'):
data = data[1:]
return data.split()[0]
return line if raw else data
print(data)
return data
# Main
if len(sys.argv) >= 2:
check = sys.argv[1]
option = sys.argv[1]
raw = True
stats = False
if len(sys.argv) == 3:
if sys.argv[2] == 'clean':
raw = False
elif sys.argv == 'stats':
stats = True
logs = os.listdir('logs')
found = list()
for log in logs:
with open('logs/'+log) as logfile:
data = json.loads(logfile.read())
if check in data:
data = data[check]
if option in data:
data = data[option]
if type(data) == str:
print(parse(data, raw))
found.append(parse(data, raw))
elif type(data) == list:
for item in data:
print(parse(item, raw))
found.append(parse(item, raw))
if stats:
database = dict()
for item in found:
if item not in database:
database[item] = 1
else:
database[item] +=1
print(database)
print(f'\nFound {len(found)} results in {len(logs)} logs')
if found:
print(f'\nfound {len(found)} results in {len(logs)} logs')
else:
print('usage: python parser.py <field> [clean]\n')
print(' <field> may be any item in the snapshots (001, NOTICE, 464, etc)')