Code format, import gui
This commit is contained in:
parent
831a698aa6
commit
6c4d1f5d1e
44
trader.py
44
trader.py
@ -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()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user