Use config yaml file
This commit is contained in:
parent
11bde6d597
commit
3c7c5c5f5d
6
config.yaml
Normal file
6
config.yaml
Normal file
@ -0,0 +1,6 @@
|
||||
General:
|
||||
log_file: 'D:\Poe\logs\Client.txt'
|
||||
log_level: 'DEBUG'
|
||||
Parser:
|
||||
re_log: '(?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<ToFrom>To|From)?\s?(?P<guild><\S+>)? ?(?P<user>[^:]+): (?P<message>.*)'
|
||||
re_trade: '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+)\)'
|
8
main.py
8
main.py
@ -1,5 +1,7 @@
|
||||
from src import gui
|
||||
from src import trader
|
||||
from src import config
|
||||
from src import data
|
||||
from threading import Thread
|
||||
from argparse import Namespace, ArgumentParser
|
||||
|
||||
@ -8,14 +10,16 @@ def setup_args() -> Namespace:
|
||||
parser = ArgumentParser(
|
||||
description='Poe Trader', epilog="And that's how you trade")
|
||||
|
||||
parser.add_argument('-l', '--logfile', help='Path of the logfile that should be used', default=r'D:\Poe\logs\Client.txt')
|
||||
parser.add_argument('-c', '--configfile', help='Path to the yaml config file.', default=r'config.yaml')
|
||||
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
args = setup_args()
|
||||
conf = config.read_config(args.configfile)
|
||||
data.compile_regex(conf)
|
||||
app = gui.Gui()
|
||||
my_thread = Thread(target=trader.read_log, args=(args.logfile, app))
|
||||
my_thread = Thread(target=trader.read_log, args=(conf['General']['log_file'], app))
|
||||
my_thread.start()
|
||||
app.mainloop()
|
||||
|
@ -1 +1,2 @@
|
||||
pytest==6.2.2
|
||||
pyyaml==5.4.1
|
6
src/config.py
Normal file
6
src/config.py
Normal file
@ -0,0 +1,6 @@
|
||||
import yaml
|
||||
|
||||
|
||||
def read_config(filename):
|
||||
with open(filename, 'r') as f:
|
||||
return yaml.safe_load(f)
|
13
src/data.py
13
src/data.py
@ -6,6 +6,19 @@ re_trade = re.compile(
|
||||
r'Hi, I would like to buy your (?P<item>.+) listed for (?P<amount>\d+) (?P<currency>\S+) in (?P<league>\S+) '
|
||||
r'\(stash tab "(?P<tab>.+)"; position: left (?P<col>\d+), top (?P<row>\d+)\)'
|
||||
)
|
||||
re_log = re.compile(
|
||||
r'(?P<date>\d\d\d\d/\d\d/\d\d \d\d:\d\d:\d\d) (\d+) (\S+) \[(?P<level>\S+) (\S+) (\d+)\] '
|
||||
r'(?P<channel>[#@%$&]?)(?P<ToFrom>To|From)?\s?(?P<guild><\S+>)? ?(?P<user>[^:]+): (?P<message>.*)'
|
||||
)
|
||||
|
||||
|
||||
def compile_regex(conf: dict):
|
||||
global re_trade, re_log
|
||||
if 'General' in conf:
|
||||
if 're_log' in conf['Parser']:
|
||||
re_log = re.compile(conf['Parser']['re_log'])
|
||||
if 're_trade' in conf['Parser']:
|
||||
re_trade = re.compile(conf['Parser']['re_trade'])
|
||||
|
||||
|
||||
class Channel(Enum):
|
||||
|
@ -1,20 +1,13 @@
|
||||
import time
|
||||
import datetime
|
||||
import re
|
||||
import logging
|
||||
from .data import Message, channel_mapping
|
||||
from .data import Message, channel_mapping, re_log
|
||||
from . import gui
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
logging.basicConfig(level=logging.DEBUG)
|
||||
|
||||
|
||||
re_log = re.compile(
|
||||
r'(?P<date>\d\d\d\d/\d\d/\d\d \d\d:\d\d:\d\d) (\d+) (\S+) \[(?P<level>\S+) (\S+) (\d+)\] '
|
||||
r'(?P<channel>[#@%$&]?)(?P<ToFrom>To|From)?\s?(?P<guild><\S+>)? ?(?P<user>[^:]+): (?P<message>.*)'
|
||||
)
|
||||
|
||||
|
||||
def parse_log(text: str) -> Message:
|
||||
result = re_log.search(text)
|
||||
if not result:
|
||||
|
@ -1,9 +1,13 @@
|
||||
from src import trader
|
||||
from src import config
|
||||
from src import data
|
||||
from datetime import datetime
|
||||
from src.data import Channel
|
||||
|
||||
|
||||
def test_message_from():
|
||||
conf = config.read_config(r'config.yaml')
|
||||
data.compile_regex(conf)
|
||||
text = '2021/03/08 23:24:52 17931875 bb3 [INFO Client 1492] @From NyhaiPuki: Hi, I would like to buy your level 21 23% Vaal Impurity of Lightning ' \
|
||||
'listed for 18 chaos in Ritual (stash tab "$"; position: left 22, top 5)'
|
||||
message = trader.parse_log(text)
|
||||
@ -23,6 +27,8 @@ def test_message_from():
|
||||
|
||||
|
||||
def test_message_to():
|
||||
conf = config.read_config(r'config.yaml')
|
||||
data.compile_regex(conf)
|
||||
text_to = '2021/01/24 23:11:23 17039703 bb2 [INFO Client 10144] @To EraseAndDelete: Thank you & good luck!'
|
||||
message = trader.parse_log(text_to)
|
||||
assert message.user == 'EraseAndDelete'
|
||||
@ -35,6 +41,8 @@ def test_message_to():
|
||||
|
||||
|
||||
def test_message_global():
|
||||
conf = config.read_config(r'config.yaml')
|
||||
data.compile_regex(conf)
|
||||
text_global = '2021/02/10 19:01:56 2720500 bb2 [INFO Client 3464] #HarvestScarab: so by the time it was finally juiced you couldnt do it'
|
||||
message = trader.parse_log(text_global)
|
||||
assert message.user == 'HarvestScarab'
|
||||
|
Loading…
x
Reference in New Issue
Block a user