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