not_used | ||
static/css | ||
templates | ||
.gitignore | ||
graphs.py | ||
poc.py | ||
README.md | ||
run.py | ||
ss.py | ||
stats.py | ||
steam_api.py | ||
steam_small.json | ||
steam.json |
Project_Steam_Tracker
Het doel van dit project is om een concept te ontwikkelen waarbij je een grafishe weergrave wat inzicht geeft op de game activiteiten van je vrienden op Steam. Een raspberypi wordt ook gebruikt om hardwarematig lapjes en sensoren aan te sturen.
Casus
Steam wil haar klanten beter bedienen door meer grafische weergaves te maken van gaming gedrag naar verschillende klantsegmenten. Hiervoor heeft ze een consultancybedrijf ingehuurd. De hoofdopdracht luidt: maak een grafische weergave die inzicht geeft in het gaming gedrag van jouw vrienden op het platform Steam, ondersteund door een netwerk waarbij gebruik gemaakt wordt van een RaspberryPi.
Voorbeeldvragen die Steam beantwoord wil zien voor haar klanten:
Welke games spelen mijn vrienden?
Welke spellen worden het meest gespeeld?
Wanneer zijn jouw vrienden online?
Wanneer heb je gepland om te gaan spelen?
Welke aanbevelingen kunnen er gemaakt worden om te spelen?
Uitvoeren applicatie
Deze applicatie maakt gebruik van de volgende python libraries, zorg ervoor dat deze zijn geinstalleerd.
- Flask
steamgeventeventemitter
- matplotlib
- requests
Om de dependencies te installeren voer het onderste commando uit.
pip install flask matplotlib requests
De applicatie is simpel uit te voeren door de python script uit te voeren. En via de browser naar de gegeven url te gaan.
python run.py
Data formaat geheugen tabel
Om het sorteren makkelijker te maken gaan we de json in een tuple/list opslaan in het geheugen. Het formaat is een tabel achtige structuur. Als voorbeeld de eerste json entry in een tuple.
{
"appid":10,
"name":"Counter-Strike",
"release_date":"2000-11-01",
"english":1,
"developer":"Valve",
"publisher":"Valve",
"platforms":"windows;mac;linux",
"required_age":0,
"categories":"Multi-player;Online Multi-Player;Local Multi-Player;Valve Anti-Cheat enabled",
"genres":"Action",
"steamspy_tags":"Action;FPS;Multiplayer",
"achievements":0,
"positive_ratings":124534,
"negative_ratings":3339,
"average_playtime":17612,
"median_playtime":317,
"owners":"10000000-20000000",
"price":7.19
}
(10, "Counter-Strike", "2000-11-01", 1, "Valve", "windows;mac;linux", 0,
"Multi-player;Online Multi-Player;Local Multi-Player;Valve Anti-Cheat enabled", "Action", "Action;FPS;Multiplayer",
0, 124534, 3339, 17612, 317, "10000000-20000000", 7.19)
En om meerdere entries op te slaan maken we het genest zoals alsvolgd.
(
(10, "Counter-Strike", "2000-11-01", 1, "Valve", "windows;mac;linux", 0, "Multi-player;Online Multi-Player;Local Multi-Player;Valve Anti-Cheat enabled", "Action", "Action;FPS;Multiplayer", 0, 124534, 3339, 17612, 317, "10000000-20000000", 7.19),
(20, "Team Fortress Classic", "1999-04-01", 1, "Valve", "Valve", "windows;mac;linux", 0, "Multi-player;Online Multi-Player;Local Multi-Player;Valve Anti-Cheat enabled", "Action", "Action;FPS;Multiplayer", 0, 3318, 633, 277, 62, "5000000-10000000", 3.99)
)
Uitleg functies
sorting.py
nest-qsort(tpl, colnum. reverse=False)
Deze recursieve functie kan de bovenstaande geneste tuple formaat sorteren. Als eerste argument geef je de geneste tuple , tweede argument is de kolom nummer vanaf 0 waarop je wilt sorteren. En de derde argument is een bool, als true dan sorteerd de functie van hoog naar laag.
qsort(tpl, reverse=False)
Deze recursieve functie is de standaard sorteer functie die wij gaan gebruiken. Als eerste argument neemt de functie een lijst of tuple met waardes, deze mogen ints of strings zijn. De tweede argument is een bool, als true dan sorteerd de functie van hoog naar laag.
stats.py
mediaan(lst)
Deze functie geeft de mediaan in de mee gegeven lijst.
freq(lst)
Deze functie geeft een dict terug met de frequentie van alle waardes in een lijst. Als voorbeeld met [1, 4, 6, 4] meegegeven wordt {1: 1, 4: 2, 6: 1} terug gegeven
gmld(lst)
Geeft de gemiddelde van een lijst terug in een float
graphs.py
De functie van dit bestand is om grafieken te maken van lijsten met waardes, deze grafieken worden als svg terug gegeven om door flask geserveerd te worden.
WIP verdere uitleg komt nog
steam_abstraction.py
De functie van dit bestand is om makkelijker te kunnen communiceren met de steam api door middel van een python library.