diff --git a/src/data.py b/src/data.py index fcb091c..9de50c8 100644 --- a/src/data.py +++ b/src/data.py @@ -1,6 +1,7 @@ from enum import Enum import re import datetime +import logging re_trade = re.compile( r'Hi, I would like to buy your (?P.+) listed for (?P\d+) (?P\S+) in (?P\S+) ' @@ -10,6 +11,8 @@ re_log = re.compile( r'(?P\d\d\d\d/\d\d/\d\d \d\d:\d\d:\d\d) (\d+) (\S+) \[(?P\S+) (\S+) (\d+)\] ' r'(?P[#@%$&]?)(?PTo|From)?\s?(?P<\S+>)? ?(?P[^:]+): (?P.*)' ) +log = logging.getLogger(__name__) +logging.basicConfig(level=logging.DEBUG) def compile_regex(conf: dict): @@ -74,6 +77,24 @@ class Message(): if self.channel is Channel.WHISPER: self.parse_trade() + @classmethod + def from_text(cls, text: str): + result = re_log.search(text) + if not result: + log.debug(f'Result is none for text "{text}"') + return None + date = datetime.datetime.strptime( + result.group('date'), '%Y/%m/%d %H:%M:%S') + guild = result.group('guild') + if guild: + guild = guild.strip('<>') + return cls(result.group('message'), + date, + result.group('user'), + channel_mapping[result.group('channel')], + guild, + result.group('ToFrom')) + def __str__(self) -> str: text = f'{self.date} - {self.channel.name}: ' if self.to_from: diff --git a/src/trader.py b/src/trader.py index bdba67a..beb8e3a 100644 --- a/src/trader.py +++ b/src/trader.py @@ -1,36 +1,17 @@ import time -import datetime import logging -from .data import Message, channel_mapping, re_log +from .data import Message from . import gui log = logging.getLogger(__name__) logging.basicConfig(level=logging.DEBUG) -def parse_log(text: str) -> Message: - result = re_log.search(text) - if not result: - log.debug(f'Result is none for text "{text}"') - return None - date = datetime.datetime.strptime( - result.group('date'), '%Y/%m/%d %H:%M:%S') - guild = result.group('guild') - if guild: - guild = guild.strip('<>') - return Message(result.group('message'), - date, - result.group('user'), - channel_mapping[result.group('channel')], - guild, - result.group('ToFrom')) - - def read_log(logfile: str, app: gui.Gui) -> None: logfile = open(logfile, 'r', encoding='utf8') loglines = follow(logfile) for line in loglines: - message = parse_log(line) + message = Message.from_text(line) log.debug(message) if message and message.trade and message.to_from == 'From': app.add_tab(30, message)