diff --git a/trader.py b/trader.py index 8fdcb08..94196c7 100644 --- a/trader.py +++ b/trader.py @@ -4,15 +4,17 @@ import datetime from enum import Enum import re import logging - +from gui import Gui log = logging.getLogger(__name__) logging.basicConfig(level=logging.DEBUG) -re_log = re.compile('(?P\d\d\d\d/\d\d/\d\d \d\d:\d\d:\d\d) (\d+) (\S+) \[(?P\S+) (\S+) (\d+)\] (?P[#@%$&]?)(?P<\S+>)? ?(?P[^:]+): (?P.*)') -re_trade = re.compile('Hi, I would like to buy your (?P.+) listed for (?P\d+) (?P\S+) in (?P\S+) \(stash tab "(?P.+)"; position: left (?P\d+), top (?P\d+)\)' -) +re_log = re.compile( + '(?P\d\d\d\d/\d\d/\d\d \d\d:\d\d:\d\d) (\d+) (\S+) \[(?P\S+) (\S+) (\d+)\] (?P[#@%$&]?)(?P<\S+>)? ?(?P[^:]+): (?P.*)') +re_trade = re.compile( + 'Hi, I would like to buy your (?P.+) listed for (?P\d+) (?P\S+) in (?P\S+) \(stash tab "(?P.+)"; position: left (?P\d+), top (?P\d+)\)') + class Channel(Enum): WHISPER = 0 @@ -40,7 +42,7 @@ class Trade(): row: int, col: int, league: str) -> None: - self.item = item + self.item = item self.amount = amount self.currency = currency self.tab = tab @@ -48,6 +50,7 @@ class Trade(): self.col = col self.league = league + class Message(): def __init__(self, message: str, @@ -70,7 +73,6 @@ class Message(): text = text + f'{self.user}: {self.message}' return text - def parse_trade(self) -> Trade: res = re_trade.search(self.message) return Trade(item=res['item'], @@ -82,16 +84,6 @@ class Message(): league=res['league']) -def follow(thefile: str): - thefile.seek(0, 2) - while True: - line = thefile.readline() - if not line: - time.sleep(0.1) - continue - yield line - - def parse_string(text: str) -> Message: result = re_log.search(text) if not result: @@ -115,13 +107,29 @@ def setup_args() -> argparse.Namespace: return parser.parse_args() -if __name__ == "__main__": - args = setup_args() - logfile = open(args.logfile, 'r', encoding='utf8') +def read_log(logfile) -> None: + logfile = open(logfile, 'r', encoding='utf8') loglines = follow(logfile) for line in loglines: message = parse_string(line) log.debug(message) if message and message.channel is Channel.WHISPER: log.info('TRADE') - + trade = message.parse_trade() + + +def follow(thefile: str): + thefile.seek(0, 2) + while True: + line = thefile.readline() + if not line: + time.sleep(0.1) + continue + yield line + + +if __name__ == "__main__": + args = setup_args() + read_log(args.logfile) + app = Gui() + app.mainloop()