157 lines
4.9 KiB
Python
157 lines
4.9 KiB
Python
import json
|
|
from flask import Flask, render_template, request
|
|
import ss
|
|
import stats
|
|
import steam_api
|
|
|
|
|
|
app = Flask(__name__) # flask app initialiseren
|
|
state_schuifregister = 0 # deze 3 waardes slaan de status op van de hardware onderdelen
|
|
state_ledstrip = 0
|
|
state_servo = 0
|
|
|
|
|
|
# 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)
|
|
|
|
# geheugen/variabelen vrijmaken
|
|
del blob, temp_biglst, temp_lst, temp_tpl
|
|
|
|
|
|
@app.route('/')
|
|
def root():
|
|
entries = []
|
|
|
|
# sorteer op de meest aantal gebruikers
|
|
data_lst = ss.nest_qsort(data_tpl, 16, True)
|
|
|
|
genre = stats.popgenre(data_tpl)
|
|
|
|
# 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)
|
|
|
|
if max_rows_per_page == -1:
|
|
max_rows_per_page = len(data_tpl)
|
|
|
|
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(0, max_rows_per_page):
|
|
entries.append(data_lst[x])
|
|
|
|
return render_template('fulltable.html', first_entry=data_tpl[0], entries=entries, reverse=not reverse)
|
|
|
|
|
|
@app.route('/hardware')
|
|
def hardware():
|
|
return render_template('hardware.html')
|
|
|
|
|
|
@app.route('/search')
|
|
def search():
|
|
query = request.args.get('q') # de request argument q opslaan in variabele query
|
|
|
|
entries = ss.nest_search(data_tpl, query) # de data_tpl doorzoeken voor de waarde query, entries wordt een list
|
|
|
|
return render_template('search.html', entries=entries)
|
|
|
|
|
|
@app.route('/app/<appid>')
|
|
def app_appid(appid):
|
|
data = steam_api.getappdata(appid) # applicatie data van steam opvragen en opslaan in variabele data
|
|
return render_template('app.html', data=data[appid])
|
|
|
|
|
|
@app.route('/api/afstandsensor')
|
|
def api_afstandsensor():
|
|
"""Dit pad geeft een json array met de key 'afstand' met waarde van de afstandsensor in cm """
|
|
afstand = 0
|
|
|
|
return {'afstand': afstand}
|
|
|
|
|
|
@app.route('/api/schuifregister', methods=['POST', 'GET'])
|
|
def api_schuifregister():
|
|
"""
|
|
Door het opvragen van dit pad met de GET functie is het mogelijk om de status van het schuifregister uit te lezen.
|
|
Door te POST'en naar dit pad met de waarde 'setstate' is het mogelijk om de status aan te passen.
|
|
"""
|
|
state = 00000000
|
|
return {'state': state}
|
|
|
|
|
|
@app.route('/api/servo', methods=['POST', 'GET'])
|
|
def api_servo():
|
|
"""
|
|
Door het opvragen van dit pad met de GET functie is het mogelijk om de status van de servo uit te lezen.
|
|
Door te POST'en naar dit pad met de waarde 'setstate' is het mogelijk om de status aan te passen.
|
|
"""
|
|
state = -90
|
|
return {'state': state}
|
|
|
|
|
|
@app.route('/api/pushbutton')
|
|
def api_pushbutton():
|
|
"""Dit pad geeft de status van de pushbuttons af in True en False, de keys alsvolgd genoemd: button0, button1"""
|
|
button0 = False
|
|
|
|
return {'button0': button0}
|
|
|
|
|
|
@app.route('/api/ledstrip', methods=['POST', 'GET'])
|
|
def api_ledstrip_set():
|
|
"""
|
|
Door het opvragen van dit pad met de GET functie is het mogelijk om de status van de ledstrip uit te lezen.
|
|
Door te POST'en naar dit pad met de waarde 'setstate' is het mogelijk om de status aan te passen.
|
|
"""
|
|
state = ((0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0))
|
|
return {'state': state}
|
|
|
|
|
|
if __name__ == "__main__":
|
|
app.run('0.0.0.0', port=5001, debug=True)
|