Code format, import gui

This commit is contained in:
Oliver Hartmann 2021-03-12 16:14:31 +01:00
parent 831a698aa6
commit 6c4d1f5d1e

View File

@ -4,15 +4,17 @@ import datetime
from enum import Enum from enum import Enum
import re import re
import logging import logging
from gui import Gui
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
logging.basicConfig(level=logging.DEBUG) logging.basicConfig(level=logging.DEBUG)
re_log = re.compile('(?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<guild><\S+>)? ?(?P<user>[^:]+): (?P<message>.*)') re_log = re.compile(
re_trade = re.compile('Hi, I would like to buy your (?P<item>.+) listed for (?P<amount>\d+) (?P<currency>\S+) in (?P<league>\S+) \(stash tab "(?P<tab>.+)"; position: left (?P<col>\d+), top (?P<row>\d+)\)' '(?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<guild><\S+>)? ?(?P<user>[^:]+): (?P<message>.*)')
) re_trade = re.compile(
'Hi, I would like to buy your (?P<item>.+) listed for (?P<amount>\d+) (?P<currency>\S+) in (?P<league>\S+) \(stash tab "(?P<tab>.+)"; position: left (?P<col>\d+), top (?P<row>\d+)\)')
class Channel(Enum): class Channel(Enum):
WHISPER = 0 WHISPER = 0
@ -48,6 +50,7 @@ class Trade():
self.col = col self.col = col
self.league = league self.league = league
class Message(): class Message():
def __init__(self, def __init__(self,
message: str, message: str,
@ -70,7 +73,6 @@ class Message():
text = text + f'{self.user}: {self.message}' text = text + f'{self.user}: {self.message}'
return text return text
def parse_trade(self) -> Trade: def parse_trade(self) -> Trade:
res = re_trade.search(self.message) res = re_trade.search(self.message)
return Trade(item=res['item'], return Trade(item=res['item'],
@ -82,16 +84,6 @@ class Message():
league=res['league']) 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: def parse_string(text: str) -> Message:
result = re_log.search(text) result = re_log.search(text)
if not result: if not result:
@ -115,13 +107,29 @@ def setup_args() -> argparse.Namespace:
return parser.parse_args() return parser.parse_args()
if __name__ == "__main__": def read_log(logfile) -> None:
args = setup_args() logfile = open(logfile, 'r', encoding='utf8')
logfile = open(args.logfile, 'r', encoding='utf8')
loglines = follow(logfile) loglines = follow(logfile)
for line in loglines: for line in loglines:
message = parse_string(line) message = parse_string(line)
log.debug(message) log.debug(message)
if message and message.channel is Channel.WHISPER: if message and message.channel is Channel.WHISPER:
log.info('TRADE') 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()