144 lines
3.9 KiB
Python
144 lines
3.9 KiB
Python
import json
|
|
from flask import Flask, render_template, request, url_for, Response
|
|
import ss
|
|
import stats
|
|
#import steam_abstraction
|
|
import graphs
|
|
|
|
|
|
app = Flask(__name__)
|
|
|
|
# lees json bestand en maak de tabel structuur aan, data_tpl
|
|
with open('steam.json') as file:
|
|
# laad de json in een list
|
|
blob = json.load(file)
|
|
|
|
# lege lijst aanmaken
|
|
temp_biglst = []
|
|
|
|
# voor elke item in de list
|
|
for i in blob:
|
|
# voeg elke regel in de item toe aan een tijdelijke list
|
|
temp_lst = [i['appid'], i['name'], i['release_date'], i['english'], i['developer'], i['publisher'],
|
|
i['platforms'], i['required_age'], i['categories'], i['genres'], i['steamspy_tags'],
|
|
i['achievements'], i['positive_ratings'], i['negative_ratings'], i['average_playtime'],
|
|
i['median_playtime'], i['owners'], i['price']]
|
|
|
|
# zet de tijdelijke lijst om in een tuple
|
|
temp_tpl = tuple(temp_lst)
|
|
# voeg de tijdelijke list toe in de datalijst
|
|
temp_biglst.append(temp_tpl)
|
|
|
|
# datalijst omzetten in tuple, dit is de globale variabele die opgeroepen mag worden
|
|
data_tpl = tuple(temp_biglst)
|
|
|
|
|
|
@app.route('/')
|
|
def root():
|
|
entries = []
|
|
|
|
# sorteer op de meest aantal gebruikers
|
|
data_lst = ss.nest_qsort(data_tpl, 16, True)
|
|
|
|
genre = 0
|
|
|
|
# limiteer tabel tot en met 15 entries
|
|
for x in range(0, 15):
|
|
entries.append(data_lst[x])
|
|
|
|
return render_template('index.html', first_entry=data_tpl[0], sizedb=len(data_tpl), entries=entries, genre=genre)
|
|
|
|
|
|
@app.route('/fulltable')
|
|
def fulltable():
|
|
max_rows_per_page = request.args.get('r', 100, int)
|
|
page = request.args.get('p', 1, int)
|
|
|
|
if max_rows_per_page == -1:
|
|
max_rows_per_page = 100
|
|
|
|
entries = []
|
|
|
|
if request.args.get('reverse') == 'True':
|
|
reverse = True
|
|
else:
|
|
reverse = False
|
|
|
|
if request.args.get('sortby') == "name":
|
|
data_lst = ss.nest_qsort(data_tpl, 1, reverse)
|
|
elif request.args.get('sortby') == "release_date":
|
|
data_lst = ss.nest_qsort(data_tpl, 2, reverse)
|
|
elif request.args.get('sortby') == "users":
|
|
data_lst = ss.nest_qsort(data_tpl, 16, reverse)
|
|
elif request.args.get('sortby') == "price":
|
|
data_lst = ss.nest_qsort(data_tpl, 17, reverse)
|
|
else:
|
|
data_lst = data_tpl # hoezo memory efficient werken?
|
|
|
|
for x in range(max_rows_per_page*page-max_rows_per_page, max_rows_per_page*page):
|
|
entries.append(data_lst[x])
|
|
|
|
return render_template('fulltable.html', first_entry=data_tpl[0], entries=entries, reverse=not reverse)
|
|
|
|
|
|
@app.route('/statistics')
|
|
def statistics():
|
|
return render_template('statistics.html')
|
|
|
|
|
|
@app.route('/search')
|
|
def search():
|
|
tosearch = []
|
|
query = request.args.get('q')
|
|
|
|
entries = ss.nest_search(data_tpl, query)
|
|
|
|
return render_template('search.html', entries=entries)
|
|
|
|
|
|
# @app.route('/login', methods=['GET', 'POST'])
|
|
# def login():
|
|
# if request.method == 'POST':
|
|
# if steam_abstraction.steamlogin(request.form['loginACC'], request.form['loginPASS'], request.form['loginMFA']):
|
|
# return url_for('root')
|
|
# else:
|
|
# return "login problem"
|
|
# else:
|
|
# return "login page, please post to this path"
|
|
|
|
|
|
# @app.route('/logout')
|
|
# def logout():
|
|
# steam_abstraction.steamlogout()
|
|
|
|
|
|
@app.route('/svgplot/randomplot.svg')
|
|
def randomplot():
|
|
svg = graphs.random_plot()
|
|
return Response(svg, mimetype='image/svg+xml')
|
|
|
|
|
|
@app.route('/svgplot/releasemean.svg')
|
|
def releasemean():
|
|
lst = []
|
|
dates = []
|
|
times = []
|
|
|
|
for x in data_tpl:
|
|
lst.append(x[2])
|
|
|
|
lst = ss.qsort(lst)
|
|
|
|
freqs = stats.freq(lst)
|
|
|
|
for x in freqs:
|
|
dates.append(x)
|
|
times.append(freqs.get(x))
|
|
|
|
svg = graphs.plot_xy(dates, times)
|
|
return Response(svg, mimetype='image/png')
|
|
|
|
|
|
if __name__ == "__main__":
|
|
app.run('0.0.0.0', port=5001, debug=True)
|