#!/usr/bin/env python import otime import mtr_log_extractor as mle import json import asyncio from difflib import Differ from watchgod import awatch from config import config from rich import print from rich import inspect from rich.console import Console from rich.columns import Columns from rich.table import Table def start(): global event event = otime.event(0, config['event_name']) event.import_ttime_cnf('/home/trygve/Documents/sprintcup040330/sprintcup040330.cnf') event.import_ttime_db(config['db_file']) event.import_mtr_file('/home/trygve/Documents/sprintcup040330/sprintcup040330.log') event.match_runners_cards() 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']): 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) clean = str(line).replace('+ ', '').split(';') runner = otime.runner.from_string(clean, event.o_classes) added_raw.append(runner) elif line[:1] == '-': #print(line) clean = str(line).replace('- ', '').split(';') 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 == 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 if __name__ == "__main__": print(dir(mle)) print('🤔') start() asyncio.run(main())