Use regex instead of parse

This commit is contained in:
Oliver Hartmann 2021-03-08 22:08:07 +01:00
parent dd080fe3a1
commit ee24f8a47b

View File

@ -1,8 +1,8 @@
import argparse
import time
from parse import parse
import datetime
from enum import Enum
import re
class Channel(Enum):
@ -42,11 +42,12 @@ def follow(thefile: str):
def parse_string(text: str) -> Message:
result = parse('{date} {time} {timemicro} {noidea} [{level} {client} {id}]{mess_type:1}{user}: {message}', text)
# result = parse('{date} {time} {timemicro} {noidea} [{level} {client} {id}]{mess_type:1}{user}: {message}', text)
result = re.search('(?P<date>\d\d\d\d/\d\d/\d\d \d\d:\d\d:\d\d) (\d+) (\S+) \[(?P<level>\S+) (\S+) (\d+)\] (?P<channel>[#@%$&]*)(?P<user>[^:]+): (?P<message>.*)', text)
if not result:
return None
date = datetime.datetime.strptime(f'{result["date"]} {result["time"]}', '%Y/%m/%d %H:%M:%S')
return Message(result['message'], date, result['user'], channel_mapping[result['mess_type']])
date = datetime.datetime.strptime(result.group('date'), '%Y/%m/%d %H:%M:%S')
return Message(result.group('message'), date, result.group('user'), channel_mapping[result.group('channel')])
def setup_args() -> argparse.Namespace: