From 0f0fd6ebf2d6cb919921b7267bdd699a6397d8ba Mon Sep 17 00:00:00 2001 From: Trygve Date: Thu, 17 Mar 2022 17:52:26 +0100 Subject: [PATCH] Ferdigstilte oppdatering gjennom ttime db --- event_mgr.py | 60 +++++++++++++++++++++++++++++++++------------------- 1 file changed, 38 insertions(+), 22 deletions(-) diff --git a/event_mgr.py b/event_mgr.py index e758cb9..9cd17ee 100644 --- a/event_mgr.py +++ b/event_mgr.py @@ -1,6 +1,6 @@ #!/usr/bin/env python import otime -import pickle +import json import asyncio from difflib import Differ from watchgod import awatch @@ -18,49 +18,65 @@ def start(): event.import_ttime_db(config['db_file']) event.import_mtr_file('/home/trygve/Documents/sprintcup040330/sprintcup040330.log') event.match_runners_cards() - #event.get_xml_res().write(config['xml_res_file']) global db_file global db_file_u db_file = open(config['db_file'], 'r', encoding='latin_1').read().splitlines() async def main(): async for changes in awatch(config['db_file']): - #print(dir(changes)) - #print(changes.difference() global event global db_file global db_file_u + print(len(event.runners)) db_file_u = open(config['db_file'], 'r', encoding='latin_1').read().splitlines() d = Differ() result = list(d.compare(db_file, db_file_u)) db_file = db_file_u + added_raw = [] + removed_raw = [] + added = [] + removed = [] + changed = [] for line in result: if line[:1] == '+': - print(line) + #print(line) clean = str(line).replace('+ ', '').split(';') runner = otime.runner.from_string(clean, event.o_classes) - inspect(runner) - for i, n in enumerate(event.runners): - if n.id == runner.id: - inspect(n) - event.runners[i] = runner - inspect(n) - event.match_runners_cards() - inspect(n) + added_raw.append(runner) elif line[:1] == '-': - print(line) - print('MINUS') + #print(line) clean = str(line).replace('- ', '').split(';') - r_id = clean[1] - print(r_id) + runner = otime.runner.from_string(clean, event.o_classes) + removed_raw.append(runner) + + for plus in added_raw: + for index, minus in enumerate(removed_raw): + if plus.id == minus.id: + changed.append(plus) + removed_raw[index] = plus + break + + added = [x for x in added_raw if x not in changed] + removed = [x for x in removed_raw if x not in changed] + #print(len(added_raw),len(removed_raw)) + #print(len(added),len(removed),len(changed)) + + event.runners.extend(added) + + for r in removed: + for n in event.runners: + if n.id == r.id: + event.runners.remove(n) + + for change in changed: for i, n in enumerate(event.runners): - if n.id == r_id: - inspect(n) - print(len(event.runners)) - event.runners.remove(n) - print(len(event.runners)) + if n.id == runner.id: + event.runners[i] = runner + event.match_runners_cards() + print(len(event.runners)) + event.get_xml_res().write(config['xml_res_file']) db_file_u = None