You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
169 lines
8.6 KiB
Python
169 lines
8.6 KiB
Python
import os
|
|
import gamesort,skeleton,variables
|
|
from datetime import datetime,timedelta
|
|
|
|
"""
|
|
Generates history page and RSS feed
|
|
"""
|
|
|
|
def history(local=False):
|
|
# delete existing files
|
|
if not os.path.isdir("build/history"):
|
|
os.mkdir("build/history")
|
|
if os.path.exists("build/history/index.html"):
|
|
os.remove("build/history/index.html")
|
|
if os.path.exists("build/feed.xml"):
|
|
os.remove("build/feed.xml")
|
|
# write header
|
|
skeleton.headerwrite("build/history/index.html","history",local)
|
|
output = "build/history/index.html"
|
|
filewrite = open(output, "a")
|
|
|
|
filewrite.write(" <section class=\"history\">\n <div class=\"list\">\n")
|
|
|
|
feedwrite = open("build/feed.xml", "a")
|
|
feedwrite.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n <channel>\n <atom:link href=\"" + variables.domain + variables.serverpath + "feed.xml\" rel=\"self\" type=\"application/rss+xml\" />\n <title>Static backlog</title>\n <link>" + variables.domain + variables.serverpath + "backlog</link>\n <description>Feed for gaming updates</description>\n <language>en-gb</language>")
|
|
|
|
theyear = int(gamesort.thisyear)
|
|
while theyear > 2016:
|
|
yearlist = []
|
|
enddate = datetime.strptime((str(theyear) + "-12-31"),"%Y-%m-%d")
|
|
startdate = datetime.strptime((str(theyear) + "-01-01"),"%Y-%m-%d")
|
|
eachdate = enddate
|
|
while eachdate >= startdate:
|
|
for game in gamesort.games:
|
|
if game["initialdate"] == eachdate:
|
|
yearlist.append({"date":eachdate,"name":game["name"],"console":game["console"],"action":"Added"})
|
|
try:
|
|
if game["firstplayed"] == eachdate:
|
|
yearlist.append({"date":eachdate,"name":game["name"],"console":game["console"],"action":"Started"})
|
|
except:
|
|
pass
|
|
try:
|
|
if game["beaten"] == eachdate:
|
|
yearlist.append({"date":eachdate,"name":game["name"],"console":game["console"],"action":"Beat"})
|
|
except:
|
|
pass
|
|
try:
|
|
if game["completed"] == eachdate:
|
|
yearlist.append({"date":eachdate,"name":game["name"],"console":game["console"],"action":"Completed"})
|
|
except:
|
|
pass
|
|
eachdate -= timedelta(days=1)
|
|
checkdate = enddate
|
|
for event in yearlist:
|
|
filewrite.write(" <div>\n")
|
|
if checkdate != event["date"]:
|
|
filewrite.write(" <h2>" + event["date"].strftime("%Y-%m-%d") + "</h2>\n")
|
|
filewrite.write(" <div>\n <div> " + event["action"] + "\n <div class=\"status-dot ")
|
|
if event["action"] == "Started":
|
|
fullpath = str(event["name"] + " (" + event["console"] + ")")
|
|
if fullpath in variables.endlessgames:
|
|
filewrite.write("Endless")
|
|
else:
|
|
filewrite.write("Started")
|
|
else:
|
|
filewrite.write(event["action"])
|
|
filewrite.write("\"></div>\n </div>\n <div> " + event["name"] + "\n <span>(" + event["console"] + ")</span>\n </div>\n </div>\n </div>\n")
|
|
feedwrite.write(" <item>\n <title>" + event["action"] + " " + event["name"] + " (" + event["console"] + ")</title>\n <pubDate>" + event["date"].strftime("%a, %-d %b %Y") + " 00:00:00 UT</pubDate>\n <link>" + variables.domain + variables.serverpath + "history</link>\n <guid isPermaLink=\"false\">" + event["action"] + "-" + event["name"].replace(" ","-") + "-" + event["console"] + "</guid>\n <description>" + event["action"] + " " + event["name"] + " (" + event["console"] + ")</description>\n </item>\n")
|
|
checkdate = event["date"]
|
|
theyear -= 1
|
|
|
|
feedwrite.write(" </channel>\n</rss>")
|
|
feedwrite.close()
|
|
|
|
filewrite.write(" </div>\n")
|
|
|
|
theyear = int(gamesort.thisyear)
|
|
filewrite.write(" <div class=\"side box_1\">\n")
|
|
while theyear > 2016:
|
|
yeargames = 0
|
|
yearplaying = 0
|
|
for game in gamesort.games:
|
|
if game["initialdate"].year == theyear:
|
|
try:
|
|
if game["gameplay"]:
|
|
if game["id"] not in variables.endlessgames:
|
|
yeargames += 1
|
|
except:
|
|
yeargames += 1
|
|
for game in gamesort.games:
|
|
try:
|
|
if game["beaten"].year == theyear:
|
|
yeargames -= 1
|
|
except:
|
|
try:
|
|
if game["completed"].year == theyear:
|
|
yeargames -= 1
|
|
except:
|
|
pass
|
|
|
|
yearbacklog = []
|
|
for game in gamesort.games:
|
|
try:
|
|
if game["completed"].year == theyear:
|
|
yearbacklog.append(game)
|
|
except:
|
|
try:
|
|
if game["beaten"].year == theyear:
|
|
yearbacklog.append(game)
|
|
except:
|
|
if game["initialdate"].year == theyear:
|
|
yearbacklog.append(game)
|
|
|
|
yearcompleted = 0
|
|
yearbeaten = 0
|
|
yearstarted = 0
|
|
yearadded = 0
|
|
yeartotal = len(yearbacklog)
|
|
if yeartotal > 0:
|
|
for game in yearbacklog:
|
|
try:
|
|
if game["initialdate"].year == theyear:
|
|
yearadded += 1
|
|
except:
|
|
pass
|
|
try:
|
|
if game["firstplayed"].year == theyear:
|
|
yearstarted += 1
|
|
except:
|
|
pass
|
|
try:
|
|
if game["completed"].year == theyear:
|
|
yearcompleted += 1
|
|
except:
|
|
pass
|
|
try:
|
|
if game["beaten"].year == theyear:
|
|
yearbeaten += 1
|
|
except:
|
|
pass
|
|
|
|
compare = []
|
|
compare.append(yearadded)
|
|
compare.append(yearstarted)
|
|
compare.append(yearbeaten)
|
|
compare.append(yearcompleted)
|
|
maxvalue = max(compare)
|
|
|
|
filewrite.write(" <div class=\"year-tally")
|
|
if theyear == int(gamesort.thisyear):
|
|
filewrite.write(" active")
|
|
filewrite.write("\">\n <h2> " + str(theyear) + " Summary\n <span>Backlog ")
|
|
if yeargames > 0:
|
|
filewrite.write("▲ " + str(yeargames))
|
|
elif yeargames == 0:
|
|
filewrite.write(" 0")
|
|
elif yeargames < 0:
|
|
filewrite.write("▼ " + str(yeargames * -1))
|
|
filewrite.write("</span></h2>\n <div>\n <div>Added</div>\n <div>" + str(yearadded) + "</div>\n <div>\n <div class=\"unplayed\" style=\"width: calc(95% * (" + str(yearadded) + " / " + str(maxvalue) + "));\">\n </div>\n </div>\n </div>\n <div>\n <div>Started</div>\n <div>" + str(yearstarted) + "</div>\n <div>\n <div class=\"unfinished\" style=\"width: calc(95% * (" + str(yearstarted) + " / " + str(maxvalue) + "));\">\n </div>\n </div>\n </div>\n <div>\n <div>Beat</div>\n <div>" + str(yearbeaten) + "</div>\n <div>\n <div class=\"beaten\" style=\"width: calc(95% * (" + str(yearbeaten) + " / " + str(maxvalue) + "));\">\n </div>\n </div>\n </div>\n <div>\n <div>Completed</div>\n <div>" + str(yearcompleted) + "</div>\n <div>\n <div class=\"completed\" style=\"width: calc(95% * (" + str(yearcompleted) + " / " + str(maxvalue) + "));\">\n </div>\n </div>\n </div>\n </div>\n")
|
|
theyear -= 1
|
|
|
|
filewrite.write(" </div>\n </section>\n")
|
|
|
|
filewrite.close()
|
|
skeleton.footerwrite("build/history/index.html")
|
|
|
|
if __name__ == "__main__":
|
|
history(True)
|