mirror of
https://github.com/FAUSheppy/open-web-leaderboard.git
synced 2025-12-06 07:01:36 +01:00
start implementation
This commit is contained in:
50
base.html
50
base.html
@@ -11,53 +11,9 @@
|
||||
<input class=input-field>
|
||||
</div>
|
||||
<div class=leaderboard-container>
|
||||
<div class=colum-names>LOL</div>
|
||||
<div class=line-even>even</div>
|
||||
<div class=line-odd>odd</div>
|
||||
<div class=line-even>even</div>
|
||||
<div class=line-odd>odd</div>
|
||||
<div class=line-even>even</div>
|
||||
<div class=line-odd>odd</div>
|
||||
<div class=line-even>even</div>
|
||||
<div class=line-odd>odd</div>
|
||||
<div class=line-even>even</div>
|
||||
<div class=line-odd>odd</div>
|
||||
<div class=line-even>even</div>
|
||||
<div class=line-odd>odd</div>
|
||||
<div class=line-even>even</div>
|
||||
<div class=line-odd>odd</div>
|
||||
<div class=line-even>even</div>
|
||||
<div class=line-odd>odd</div>
|
||||
<div class=line-even>even</div>
|
||||
<div class=line-odd>odd</div>
|
||||
<div class=line-even>even</div>
|
||||
<div class=line-odd>odd</div>
|
||||
<div class=line-even>even</div>
|
||||
<div class=line-odd>odd</div>
|
||||
<div class=line-even>even</div>
|
||||
<div class=line-odd>odd</div>
|
||||
<div class=line-even>even</div>
|
||||
<div class=line-odd>odd</div>
|
||||
<div class=line-even>even</div>
|
||||
<div class=line-odd>odd</div>
|
||||
<div class=line-even>even</div>
|
||||
<div class=line-odd>odd</div>
|
||||
<div class=line-even>even</div>
|
||||
<div class=line-odd>odd</div>
|
||||
<div class=line-even>even</div>
|
||||
<div class=line-odd>odd</div>
|
||||
<div class=line-even>even</div>
|
||||
<div class=line-odd>odd</div>
|
||||
<div class=line-even>even</div>
|
||||
<div class=line-odd>odd</div>
|
||||
<div class=line-even>even</div>
|
||||
<div class=line-odd>odd</div>
|
||||
<div class=line-even>even</div>
|
||||
<div class=line-odd>odd</div>
|
||||
<div class=line-even>even</div>
|
||||
<div class=line-odd>odd</div>
|
||||
<div class=line-even>even</div>
|
||||
<div class=line-odd>odd</div>
|
||||
{% for player in playerList %}
|
||||
<option value="">{{country}}</option>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class=footer>
|
||||
<a class="footerLink" href="https://blog.atlantishq.de/about">Impressum/Legal</a>
|
||||
|
||||
98
open-leaderboard-server.py
Executable file
98
open-leaderboard-server.py
Executable file
@@ -0,0 +1,98 @@
|
||||
#!/usr/bin/python3
|
||||
import flask
|
||||
import requests
|
||||
import argparse
|
||||
|
||||
|
||||
app = flask.Flask("open-leaderboard")
|
||||
|
||||
SERVER = "localhost:5000"
|
||||
LOCATION = "/rankrange"
|
||||
PARAM_START = "start"
|
||||
PARAM_END = "end"
|
||||
|
||||
BASE_URL = "http://{server}{path}?{paramStart}={start}&{paramEnd}={end}"
|
||||
SEGMENT = 100
|
||||
|
||||
class Player:
|
||||
def __init__(self, line):
|
||||
pass
|
||||
|
||||
def getLineHTML(self):
|
||||
pass
|
||||
|
||||
@app.route('/leaderboard')
|
||||
def leaderboard():
|
||||
'''Show main leaderboard page with range dependant on parameters'''
|
||||
|
||||
# parse parameters #
|
||||
start = flask.request.args.get(PARAM_START)
|
||||
page = flask.request.args.get("page")
|
||||
|
||||
if start:
|
||||
start = int(start)
|
||||
elif page:
|
||||
start = SEGMENT * int(page)
|
||||
else:
|
||||
start = 0
|
||||
|
||||
end = start + SEGMENT
|
||||
|
||||
# request information from rating server #
|
||||
requestURL = BASE_URL.format(server=SERVER, \
|
||||
path=LOCATION, \
|
||||
paramStart=PARAM_START, \
|
||||
paramEnd=PARAM_END, \
|
||||
start=start, \
|
||||
end=end)
|
||||
|
||||
response = str(requests.get(requestURL), "utf-8")
|
||||
|
||||
# create relevant html-lines from player
|
||||
players = [Player(line) for line in response.split("\n")]
|
||||
playersHTMLs = [p.getLineHTML() for p in players]
|
||||
|
||||
# sanity check reponse #
|
||||
if len(players) > 100:
|
||||
raise ValueError("Bad reponse from rating server")
|
||||
|
||||
# template html #
|
||||
leaderBoardColumnNames = "<div class=colum-names>{}</div>"
|
||||
leaderBoardEvenLine = "<div class=line-even>{}</div>"
|
||||
leaderBoardOddLine = "<div class=line-odd>{}</div>"
|
||||
|
||||
columContent = "LOL"
|
||||
leaderBoardContent = leaderBoardColumnNames.format(columContent)
|
||||
|
||||
for i in range(0, len(players)):
|
||||
if i%2 == 0:
|
||||
leaderBoardContent += leaderBoardEvenLine.format(players[i].getLineHTML())
|
||||
else:
|
||||
leaderBoardContent += leaderBoardOdd.format(players[i].getLineHTML())
|
||||
|
||||
finalResponse = render_template("base.html",
|
||||
return finalResponse
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(description='Start open-leaderboard')
|
||||
parser.add_argument('--rating-server', default=SERVER, \
|
||||
help='Compatible rating server to query, default %(default)')
|
||||
parser.add_argument('--request-url', default=LOCATION, \
|
||||
help='API location for rating range, default %(default)')
|
||||
parser.add_argument('--param-start', default=PARAM_START, \
|
||||
help='Name of parameter annotating the start of the rating range, default %(default)')
|
||||
parser.add_argument('--param-end', default=PARAM_END, \
|
||||
help='Name of parameter annotating the end of the rating range, default %(default)')
|
||||
parser.add_argument('--interface', default="localhost", \
|
||||
help='Interface on which flask (this server) will take requests on, default %(default)')
|
||||
parser.add_argument('--port', default="5002", \
|
||||
help='Port on which flask (this server) will take requests on, default %(default)')
|
||||
args = parser.parse_args()
|
||||
|
||||
SERVER = args.rating_server
|
||||
LOCATION = args.request_url
|
||||
PARAM_START = args.param_start
|
||||
PARAM_END = args.param_end
|
||||
|
||||
app.run(host=args.interface, port=args.port)
|
||||
Reference in New Issue
Block a user