1
This repository has been archived on 2021-11-25. You can view files and clone it, but cannot push or open issues or pull requests.
Project_Steam_Tracker/run.py
2021-01-13 12:02:59 +01:00

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)