From 60c3396f745a9c36d111fb6dcb26daed6b910ecc Mon Sep 17 00:00:00 2001 From: Yannik Schmidt Date: Tue, 4 Jun 2019 19:29:31 +0200 Subject: [PATCH] improve formating --- StorrageBackend.py | 90 +++++++++++++++++++++++++++++----------------- 1 file changed, 58 insertions(+), 32 deletions(-) diff --git a/StorrageBackend.py b/StorrageBackend.py index 1dcd980..7d5bf31 100644 --- a/StorrageBackend.py +++ b/StorrageBackend.py @@ -9,6 +9,13 @@ known_players = dict() player_ranks = dict() last_rank_update = datetime.now() +def _get_known_players(): + return known_players + +############################################################# +###################### Save/Load File ####################### +############################################################# + def load_save(): with open("score.log") as f: for l in f: @@ -20,36 +27,9 @@ def save_to_file(fname="score.log"): for p in known_players.values(): f.write(p.toCSV()+'\n') -def get_player_rank(p): - global player_ranks - try: - return str(player_ranks[p]) - except KeyError: - return "N/A" - - -def dumpRatings(top=0, forceMeanSort=False, enforceWhitelist=None): - global known_players - ret = "" - updatePlayerRanks(force=True) - - if forceMeanSort: - sort = sorted(known_players.values(),key=lambda x: x.rating.mu,reverse=True) - else: - sort = sorted(known_players.values(),key=lambda x: TS.get_env().expose(x.rating),reverse=True) - if enforceWhitelist: - sort = list(filter(lambda x: x.name in enforceWhitelist, sort)) - tmp = ["{} {} mean: {} var: {} WinRatio: {}% ({} Games)".format(x.get_name().ljust(30),\ - str(int(TS.get_env().expose(x.rating))).rjust(5),str(int(x.rating.mu)).rjust(4),\ - str(int(x.rating.sigma)).rjust(4),x.winratio().rjust(4),str(x.games).rjust(3))\ - for x in sort] - if top != 0: - tmp = tmp[:top] - count = 0 - for s in tmp: - count += 1 - ret += ("Rank: "+str(count).rjust(4) +" " + s + "\n") - return ret +############################################################# +###################### SyncPlayerDict ####################### +############################################################# def sync_from_database(players): for p in players: @@ -75,6 +55,9 @@ def sync_to_database(players, win): known_players[p].lastUpdate = datetime.now() updatePlayerRanks() +############################################################# +##################### Handle Rank Cache ##################### +############################################################# def updatePlayerRanks(force=False): global last_rank_update @@ -93,9 +76,10 @@ def updatePlayerRanks(force=False): player_ranks.update({p:rank}) rank += 1 -def _get_known_players(): - return known_players +############################################################# +################## Write/Load External DB ################### +############################################################# def save_event(event): return @@ -106,6 +90,10 @@ def save_psql(): f.close() PSQL.save("insurgency", "insurgencyUser", "localhost", pw, known_players) +############################################################# +###################### Python API ########################### +############################################################# + def fuzzy_find_player(name): ret = "" tup_list = [] @@ -118,3 +106,41 @@ def fuzzy_find_player(name): TS.unlock() tmp = sorted(tup_list, key=lambda x: x[0], reverse=True) return list(filter(lambda x: x[0] > 80, tmp)) + +def get_player_rank(p): + global player_ranks + try: + return str(player_ranks[p]) + except KeyError: + return "N/A" + + +def dumpRatings(top=0, forceMeanSort=False, enforceWhitelist=None): + global known_players + ret = "" + updatePlayerRanks(force=True) + + if forceMeanSort: + sort = sorted(known_players.values(), \ + key=lambda x: x.rating.mu,reverse=True) + else: + sort = sorted(known_players.values(), \ + key=lambda x: TS.get_env().expose(x.rating),reverse=True) + if enforceWhitelist: + sort = list(filter(lambda x: x.name in enforceWhitelist, sort)) + + tmp = ["{} {} mean: {} var: {} WinRatio: {}% ({} Games)".format( \ + x.get_name().ljust(30), \ + str(int(TS.get_env().expose(x.rating))).rjust(5), \ + str(int(x.rating.mu)).rjust(4), \ + str(int(x.rating.sigma)).rjust(4),x.winratio().rjust(4), \ + str(x.games).rjust(3)) \ + for x in sort] + if top != 0: + tmp = tmp[:top] + count = 0 + for s in tmp: + count += 1 + ret += ("Rank: "+str(count).rjust(4) +" " + s + "\n") + return ret +