diff --git a/medals.py b/medals.py new file mode 100644 index 0000000..8d53724 --- /dev/null +++ b/medals.py @@ -0,0 +1,93 @@ +import flask + +medalDict = { "games-played-1" : { "name" : "Tourist", + "text" : "Played {} games on this server", + "color" : "white", + "text-color" : "black" }, + + "games-played-2" : { "name" : "Enlisted", + "text" : "Played {} games on this server", + "color": "green", + "text-color" : "white" }, + + "games-played-3" : { "name" : "Veteran", + "text" : "Played {} games on this server", + "color" : "yellow", + "text-color" : "black" }, + + "rating-cur-1" : { "name" : "Slightly skilled", + "text" : "Rated above 1500", + "color" : "beige", + "text-color" : "black" }, + + "rating-2k-1" : { "name" : "Contender", + "text" : "Played {} games above 2000 rating", + "color" : "coral", + "text-color" : "black" }, + "rating-2k-2" : { "name" : "Known Contender", + "text" : "Played {} games above 2000 rating", + "color" : "lightgreen", + "text-color" : "black" }, + + "rating-3k-1" : { "name" : "Epic", + "text" : "Played {} games above 3000 rating", + "color" : "lightblue", + "text-color" : "black" }, + "rating-3k-2" : { "name" : "Legend", + "text" : "Played {} games above 3000 rating", + "color" : "orange", + "text-color" : "black" }, + "rating-3k-3" : { "name" : "All Along The Watchtower", + "text" : "Played {} games above 3000 rating", + "color" : "red", + "text-color" : "black" }, + } + +def medalGen(medal, formatInsert=None): + '''Gen HTML for metal''' + html = '\ +
\ + {text}\ +
\ + ' + tmp = html.format(bg=medal["color"], tooltip=medal["text"], text=medal["name"], + color=medal["text-color"]) + if formatInsert: + tmp = tmp.format(formatInsert) + return flask.Markup(tmp) + +def getMedals(ratingList, gamesPlayed, currentRating): + '''Get Medals this player should have''' + medals = [] + + if gamesPlayed > 500: + medals += [medalGen(medalDict["games-played-3"], gamesPlayed)] + elif gamesPlayed > 100: + medals += [medalGen(medalDict["games-played-2"], gamesPlayed)] + elif gamesPlayed > 50: + medals += [medalGen(medalDict["games-played-1"], gamesPlayed)] + + games2k = len(list(filter(lambda x: x > 2000, ratingList))) + games3k = len(list(filter(lambda x: x > 3000, ratingList))) + + if games2k > 100: + medals += [medalGen(medalDict["rating-2k-2"], games2k)] + elif games2k > 0: + medals += [medalGen(medalDict["rating-2k-1"], games2k)] + + if games3k > 200: + medals += [medalGen(medalDict["rating-3k-3"], game3k)] + + if games3k > 50: + medals += [medalGen(medalDict["rating-3k-2"], games3k)] + elif games3k > 5: + medals += [medalGen(medalDict["rating-3k-1"], games3k)] + + if currentRating > 1500: + medals += [medalGen(medalDict["rating-cur-1"])] + + return medals + + diff --git a/server.py b/server.py index 51de4a4..39245cb 100755 --- a/server.py +++ b/server.py @@ -1,4 +1,5 @@ #!/usr/bin/python3 +import medals import flask import requests import argparse @@ -159,16 +160,29 @@ def player(): minRating = 3000 maxRating = 0 + # data for medals # + medalsRatingList = [] + if histData: datapoints = histData[playerId] if datapoints: tickCounter = 10 for dpk in datapoints.keys(): + + # timestamp # t = datetime.datetime.fromtimestamp(int(float(dpk))) tsMs = str(int(t.timestamp() * 1000)) - ratingString = str(int(datapoints[dpk]["mu"]) - 2*int(datapoints[dpk]["sigma"])) + + computedRating = int(datapoints[dpk]["mu"]) - 2*int(datapoints[dpk]["sigma"]) + + # for medals # + medalsRatingList += [computedRating] + + # for moment js # + ratingString = str(computedRating) ratingAmored = '{ x : ' + tsMs + ', y : ' + ratingString + '}' + csv_timestamps += [str(tsMs)] csv_ratings += [ratingAmored] @@ -181,6 +195,8 @@ def player(): maxRating = max(maxRating, int(ratingString)) yMin, yMax = prettifyMinMaxY(minRating, maxRating) + + medalsList = medals.getMedals(medalsRatingList, player.games, player.rating) # change displayed rank to start from 1 :) player.rank += 1 @@ -188,7 +204,7 @@ def player(): return flask.render_template("player.html", player=player, CSV_RATINGS=",".join(csv_ratings), CSV_MONTH_YEAR_OF_RATINGS=",".join(csv_month_year), CSV_TIMESTAMPS=csv_timestamps, - Y_MIN=yMin, Y_MAX=yMax) + Y_MIN=yMin, Y_MAX=yMax, medals=medalsList) @app.route('/leaderboard') @app.route('/') diff --git a/templates/player.html b/templates/player.html index 6d45b2c..1fed57f 100644 --- a/templates/player.html +++ b/templates/player.html @@ -27,6 +27,11 @@ +
+ {% for m in medals %} + {{ m }} + {% endfor %} +