1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
#!/usr/bin/python
# -*- coding: utf-8 -*-
import itertools
from flask import Flask, render_template, session, redirect
from werkzeug.contrib.cache import SimpleCache
import gamelocker
import ads
import config
app = Flask(__name__)
app.secret_key = config.secret_key
cache = SimpleCache()
@app.route("/")
def index():
if "ads" not in session:
session["ads"] = True
return render_template("index.html", ads=ads.ads, useads=session["ads"])
@app.route("/ads-toggle")
def adswitch():
session["ads"] = not session["ads"]
return redirect("/")
@app.route("/stats.js")
def data():
data = cache.get("data")
if data is not None:
return render_template("stats.js", stats=data)
data = dict()
api = gamelocker.Gamelocker("aaa.bbb.ccc").vainglory()
data["number"] = config.batchsize
matches = api.matches(data["number"])
gameModes = dict()
durations = dict()
players = dict()
heroes = dict()
picks = dict()
for match in matches:
if match.gameMode not in gameModes:
gameModes[match.gameMode] = 0
durations[match.gameMode] = []
picks[match.gameMode] = dict()
gameModes[match.gameMode] += 1
durations[match.gameMode] += [match.duration/60]
for roster in match.rosters:
for participant in roster.participants:
if participant.player.name not in players:
players[participant.player.name] = 0
players[participant.player.name] += 1
if participant.actor not in picks[match.gameMode]:
picks[match.gameMode][participant.actor] = 0
picks[match.gameMode][participant.actor] += 1
if participant.actor not in heroes:
heroes[participant.actor] = 0
data["gameModes"] = [{"name": k, "y": v} for k, v in gameModes.items()]
data["durations"] = [{"name": k, "data": list(zip([list(durations.keys()).index(k)]*len(v), v))} for k, v in durations.items()]
data["picks"] = [{"name": k, "data": list(v.values())} for k, v in picks.items()]
data["heroes"] = list(heroes.keys())
players = sorted(players.items(), key=lambda x: x[1])[:5]
data["players"] = [{"name": k, "data": [v]} for k, v in players]
cache.set("data", data, timeout=10*60)
return render_template("stats.js", stats=data)
if __name__ == "__main__":
app.run(debug=config.debug)
|