diff --git a/script.py b/script.py new file mode 100644 index 0000000..ff4619c --- /dev/null +++ b/script.py @@ -0,0 +1,59 @@ +from time import sleep +from os.path import getmtime +import json +import mysql.connector +import glob +import sys +import re +from pathlib import Path + +# prepare stuff +JSON_FILES="C:/dayzserver/ServerProfiles/Leaderboard/*.json" # Tipo de archivo a ver +POLLINNG_TIME = 60 # Cada cuanto tiempo detecta cambios (segundos) +FIELDS_TO_INSERT = ["id", "animalsKilled", "name", "deathsToZCount", "deathsToNaturalCauseCount", "deathsToAnimalCount", "suicideCount" +, "longestShot", "zKilled", "timeSurvived", "distTrav"] + +sql_insert = "REPLACE INTO NombreTabla ("+ (','.join(FIELDS_TO_INSERT)) +") VALUES ("+ ','.join("%s" for _ in FIELDS_TO_INSERT) +")" + + +def update_db(file, cursor): + fname = Path(file).name + with open(file) as f: + data = json.load(f) + data["id"] = re.match("Stats-(\\d*)\\.json", fname).group(1) + data["animalsKilled"] = len(data["animalsKilled"]) + values = tuple([data[x] for x in FIELDS_TO_INSERT]) + cursor.execute(sql_insert, values) + +last_modified_map = {} +db = None +try: + db = mysql.connector.connect( + host="localhost", + user="Usuario", + passwd="", + database = "NombreDB" + ) + cursor = db.cursor() + + while True: + needs_to_commit = False + + for file in glob.glob(JSON_FILES): + new_lm = getmtime(file) + last_modified = last_modified_map.get(file) + if new_lm != last_modified: + needs_to_commit = True + update_db(file, cursor) + + last_modified_map[file] = new_lm + + + if needs_to_commit: + db.commit() + + sleep(POLLINNG_TIME) +finally: + if db is not None: + cursor.close() + db.close() \ No newline at end of file