mirror of
https://github.com/FAUSheppy/skillbird
synced 2025-12-06 06:51:34 +01:00
[git fast commit] 10. Feb 2019 - 11:55:03
This commit is contained in:
@@ -29,5 +29,5 @@ def t_listen(conn):
|
||||
if type(ret) == str:
|
||||
ret = ret.encode("utf-8")
|
||||
conn.send(ret)
|
||||
except Exception:
|
||||
except IOError:
|
||||
pass
|
||||
|
||||
@@ -62,7 +62,7 @@ class PlayerInRound(Player):
|
||||
return PlayerInRound(steamid, name, team, active_time)
|
||||
|
||||
class PlayerForDatabase(Player):
|
||||
def __init__(self,steamid,name,rating,player=None):
|
||||
def __init__(self,steamid, name, rating, lastUpdate=None, player=None):
|
||||
if player:
|
||||
self.steamid = player.steamid
|
||||
self.name = player.name
|
||||
@@ -71,6 +71,7 @@ class PlayerForDatabase(Player):
|
||||
self.steamid = steamid
|
||||
self.name = name
|
||||
self.rating = rating
|
||||
self.lastUpdate = lastUpdate
|
||||
self.games = 0
|
||||
self.wins = 0
|
||||
def winratio(self):
|
||||
|
||||
@@ -31,6 +31,8 @@ def get_player_rank(p):
|
||||
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:
|
||||
@@ -58,7 +60,11 @@ def sync_from_database(players):
|
||||
if type(players) == dict:
|
||||
players[p] = p.rating
|
||||
else:
|
||||
known_players.update({Player.DummyPlayer(p.steamid, p.name):Player.PlayerForDatabase(None,None,None,player=p)})
|
||||
lastUpdate = datetime.now()
|
||||
known_players.update(\
|
||||
{ Player.DummyPlayer(p.steamid, p.name) : \
|
||||
Player.PlayerForDatabase(None, None, None, player=p, lastUpdate=lastUpdate)\
|
||||
})
|
||||
|
||||
def sync_to_database(players, win):
|
||||
for p in players:
|
||||
@@ -66,6 +72,7 @@ def sync_to_database(players, win):
|
||||
if win:
|
||||
known_players[p].wins += 1
|
||||
known_players[p].games += 1
|
||||
known_players[p].lastUpdate = datetime.now()
|
||||
updatePlayerRanks()
|
||||
|
||||
|
||||
@@ -75,7 +82,9 @@ def updatePlayerRanks(force=False):
|
||||
|
||||
if force or last_rank_update - datetime.now() > timedelta(seconds=240):
|
||||
last_rank_update = datetime.now()
|
||||
s = sorted(known_players.values(),key=lambda x: TS.get_env().expose(x.rating),reverse=True)
|
||||
s = sorted(known_players.values(), key=lambda x: TS.get_env().expose(x.rating),reverse=True)
|
||||
now = datetime.now()
|
||||
s = filter(lambda p: now - p.lastUpdate < timedelta(days=60), s)
|
||||
rank = 1
|
||||
for p in s:
|
||||
if p in player_ranks:
|
||||
|
||||
@@ -190,7 +190,7 @@ def create_event(etype,line,timestamp):
|
||||
else:
|
||||
raise Exception("Cannot create event from logline. (etype was: '{}')".format(etype))
|
||||
|
||||
def parseDate(line):
|
||||
def parseDate(l):
|
||||
if ": L " in l.split("0x42")[0]:
|
||||
timestamp = datetime.strptime(l.split(": L ")[1].split(": [")[0],"%m/%d/%Y - %H:%M:%S")
|
||||
else:
|
||||
@@ -202,12 +202,12 @@ def parse_line_to_event(l):
|
||||
tmp = l.split("0x42,")[1].strip("\n")
|
||||
etype = tmp.split(",")[0].split("|")[0]
|
||||
try:
|
||||
timestamp = parseDate(l)
|
||||
event = create_event(etype,tmp,timestamp)
|
||||
timestamp = parseDate(line)
|
||||
except ValueError:
|
||||
print(" ---- NO TIME ---- | WARNING: Failed to parse time for event, SKIP")
|
||||
return None
|
||||
except Exception as e:
|
||||
except IndexError as e:
|
||||
print("Failed to parse Event in line, skipping: {}".format(str(e)))
|
||||
return None
|
||||
|
||||
|
||||
Reference in New Issue
Block a user