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.

302 lines
12 KiB
Python

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import datetime,os,re
from collections import Counter
import log,skel,variables,tcgcore
def indexgen():
if os.path.exists("build/index.html"):
os.remove("build/index.html")
thefile = "build/index.html"
skel.headerwrite(thefile,"index")
content = open(thefile,"a")
firstdate = log.log[0]["date"]
if len(tcgcore.ownedcards()) > 14400:
rankcode = "rainbow"
extra = len(tcgcore.ownedcards()) - 14400
plusranks = int(extra / 300)
if plusranks > 0:
rank = "rainbow + " + str(plusranks)
else:
rank = "rainbow"
else:
if len(tcgcore.ownedcards()) > 14100:
rank = "himalayan"
elif len(tcgcore.ownedcards()) > 13800:
rank = "puma"
elif len(tcgcore.ownedcards()) > 13500:
rank = "chartreux"
elif len(tcgcore.ownedcards()) > 13500:
rank = "russian blue"
elif len(tcgcore.ownedcards()) > 12900:
rank = "panther"
elif len(tcgcore.ownedcards()) > 12600:
rank = "cheetah"
elif len(tcgcore.ownedcards()) > 12300:
rank = "tiger"
elif len(tcgcore.ownedcards()) > 12000:
rank = "lion"
elif len(tcgcore.ownedcards()) > 11700:
rank = "metal"
elif len(tcgcore.ownedcards()) > 11400:
rank = "ground"
elif len(tcgcore.ownedcards()) > 11100:
rank = "darkness"
elif len(tcgcore.ownedcards()) > 10800:
rank = "water"
elif len(tcgcore.ownedcards()) > 10500:
rank = "nature"
elif len(tcgcore.ownedcards()) > 10200:
rank = "light"
elif len(tcgcore.ownedcards()) > 9900:
rank = "wind"
elif len(tcgcore.ownedcards()) > 9600:
rank = "fire"
elif len(tcgcore.ownedcards()) > 9300:
rank = "mercury"
elif len(tcgcore.ownedcards()) > 9000:
rank = "jupiter"
elif len(tcgcore.ownedcards()) > 8700:
rank = "uranus"
elif len(tcgcore.ownedcards()) > 8400:
rank = "neptune"
elif len(tcgcore.ownedcards()) > 8100:
rank = "earth"
elif len(tcgcore.ownedcards()) > 7800:
rank = "venus"
elif len(tcgcore.ownedcards()) > 7500:
rank = "saturn"
elif len(tcgcore.ownedcards()) > 7200:
rank = "mars"
elif len(tcgcore.ownedcards()) > 6900:
rank = "magnolia"
elif len(tcgcore.ownedcards()) > 6600:
rank = "chocolate cosmos"
elif len(tcgcore.ownedcards()) > 6300:
rank = "lilac"
elif len(tcgcore.ownedcards()) > 6000:
rank = "hydrangea"
elif len(tcgcore.ownedcards()) > 5700:
rank = "clover"
elif len(tcgcore.ownedcards()) > 5400:
rank = "daffodil"
elif len(tcgcore.ownedcards()) > 5100:
rank = "tiger lily"
elif len(tcgcore.ownedcards()) > 4800:
rank = "sakura"
elif len(tcgcore.ownedcards()) > 4500:
rank = "silver"
elif len(tcgcore.ownedcards()) > 4200:
rank = "bronze"
elif len(tcgcore.ownedcards()) > 3900:
rank = "amethyst"
elif len(tcgcore.ownedcards()) > 3600:
rank = "sapphire"
elif len(tcgcore.ownedcards()) > 3300:
rank = "emerald"
elif len(tcgcore.ownedcards()) > 3000:
rank = "gold"
elif len(tcgcore.ownedcards()) > 2700:
rank = "amber"
elif len(tcgcore.ownedcards()) > 2400:
rank = "ruby"
elif len(tcgcore.ownedcards()) > 2200:
rank = "dragon fruit"
elif len(tcgcore.ownedcards()) > 2000:
rank = "apricot"
elif len(tcgcore.ownedcards()) > 1800:
rank = "grape"
elif len(tcgcore.ownedcards()) > 1600:
rank = "blueberry"
elif len(tcgcore.ownedcards()) > 1400:
rank = "lime"
elif len(tcgcore.ownedcards()) > 1200:
rank = "lemon"
elif len(tcgcore.ownedcards()) > 1000:
rank = "tangerine"
elif len(tcgcore.ownedcards()) > 800:
rank = "strawberry"
elif len(tcgcore.ownedcards()) > 700:
rank = "gray"
elif len(tcgcore.ownedcards()) > 600:
rank = "brown"
elif len(tcgcore.ownedcards()) > 500:
rank = "purple"
elif len(tcgcore.ownedcards()) > 400:
rank = "blue"
elif len(tcgcore.ownedcards()) > 300:
rank = "green"
elif len(tcgcore.ownedcards()) > 200:
rank = "yellow"
elif len(tcgcore.ownedcards()) > 100:
rank = "orange"
else:
rank = "red"
rankcode = re.sub(" ","",rank)
content.write("<a href=\"/levels\"><img src=\"/assets/levels/" + rankcode + ".gif\"></a>" + tcgcore.printcard("sig_" + variables.name.lower()) + "\n<ul>\n<li>player name: <span class=\"name\">" + variables.name + "</span></li>\n<li>" + str(len(tcgcore.ownedcards())) + " cards held <span class=\"rank " + rank + "\">(" + rank + ")</span></li>\n<li>started <code>" + firstdate.strftime("%Y-%m-%d") + "</code></li>\n<li>last updated <code>" + datetime.datetime.today().strftime("%Y-%m-%d") + "</code></li>\n<li><a href=\"https://git.praze.net/tre/tcg\">code</a> under construction</li>\n</ul>\n")
crayred = 0
crayorange = 0
crayyellow = 0
craygreen = 0
crayblue = 0
craypurple = 0
craybrown = 0
craygrey = 0
for event in log.log:
try:
crayred += event["crayons"]["red"]
except:
pass
try:
crayorange += event["crayons"]["orange"]
except:
pass
try:
crayyellow += event["crayons"]["yellow"]
except:
pass
try:
craygreen += event["crayons"]["green"]
except:
pass
try:
crayblue += event["crayons"]["blue"]
except:
pass
try:
craypurple += event["crayons"]["purple"]
except:
pass
try:
craybrown += event["crayons"]["brown"]
except:
pass
try:
craygrey += event["crayons"]["gray"]
except:
pass
if crayred + crayorange + crayyellow + craygreen + crayblue + craypurple + craybrown + craygrey > 0:
content.write("<table id=\"crayontable\">\n<tbody>\n<tr>\n")
if crayred > 0:
content.write("<td class=\"red\"><img src=\"/assets/crayons/crayon1.gif\" class=\"crayon\" title=\"red\"> × " + str(crayred) + "</td>\n")
if crayorange > 0:
content.write("<td class=\"orange\"><img src=\"/assets/crayons/crayon2.gif\" class=\"crayon\" title=\"orange\"> × " + str(crayorange) + "</td>\n")
if crayyellow > 0:
content.write("<td class=\"yellow\"><img src=\"/assets/crayons/crayon3.gif\" class=\"crayon\" title=\"yellow\"> × " + str(crayyellow) + "</td>\n")
if craygreen > 0:
content.write("<td class=\"green\"><img src=\"/assets/crayons/crayon4.gif\" class=\"crayon\" title=\"green\"> × " + str(craygreen) + "</td>\n")
if crayblue > 0:
content.write("<td class=\"blue\"><img src=\"/assets/crayons/crayon5.gif\" class=\"crayon\" title=\"blue\"> × " + str(crayblue) + "</td>\n")
if craypurple > 0:
content.write("<td class=\"purple\"><img src=\"/assets/crayons/crayon6.gif\" class=\"crayon\" title=\"purple\"> × " + str(craypurple) + "</td>\n")
if craybrown > 0:
content.write("<td class=\"brown\"><img src=\"/assets/crayons/crayon7.gif\" class=\"crayon\" title=\"brown\"> × " + str(craybrown) + "</td>\n")
if craygrey > 0:
content.write("<td class=\"grey\"><img src=\"/assets/crayons/crayon8.gif\" class=\"crayon\" title=\"")
if variables.british:
content.write("grey")
else:
content.write("gray")
content.write("\"> × " + str(craygrey) + "</td>\n")
content.write("</tr>\n</tbody>\n</table>\n")
tradeout = []
tradein = []
for event in log.log:
if event["event"][0:11] == "trade with ":
try:
for card in event["lost"]:
tradeout.append(event["event"])
except:
pass
try:
for card in event["received"]:
tradein.append(event["event"])
except:
pass
tradecommon = list((Counter(tradeout) & Counter(tradein)).elements())
sketch = len(tradecommon)
if sketch > 0:
content.write("<table class=\"sketchpads\">\n<tbody>\n<tr>\n<td><img src=\"/assets/sketch/")
if sketch % 20 < 10:
content.write("0" + str(sketch % 20))
else:
content.write(str(sketch % 20))
content.write(".gif\"></td>\n")
if sketch > 19:
content.write("<td><img src=\"/assets/sketch/20.gif\"></td>\n")
content.write("</tr>\n<tr>\n<td align=\"center\">" + str(sketch % 20) + "/20</td>\n")
if sketch > 19:
content.write("<td align=\"center\">" + str(int(sketch / 20)) + " completed</td>\n")
content.write("</tr>\n</tbody>\n</table>")
if len(tcgcore.getpalettes()) + len(tcgcore.getmonochrome()) > 0:
content.write("<a href=\"/portfolios\">\n<div class=\"foliocase\">\n")
if len(tcgcore.getpalettes()) > 0:
content.write(tcgcore.portfoliogen(tcgcore.getpalettes()[-1],"palette",len(tcgcore.getpalettes())))
if len(tcgcore.getmonochrome()) > 0:
content.write(tcgcore.portfoliogen(tcgcore.getmonochrome()[-1],"monochrome",len(tcgcore.getmonochrome())))
content.write("</div>\n</a>\n")
decksofinterest = []
for card in tcgcore.ownedcards():
if card[0:4] != "sig_":
decksofinterest.append(card[:-2])
decksofinterest = sorted(list(dict.fromkeys(decksofinterest)))
mastereddecks = []
for deck in decksofinterest:
if tcgcore.deckmastered(deck):
mastereddecks.append({"name":deck,"date":tcgcore.datemastered(deck)})
mastereddecks = sorted(mastereddecks,key=lambda d: d["date"],reverse=True)
if len(mastereddecks) > 0:
content.write("<h2>mastered decks</h2>\n<p id=\"masteredcarousel\">")
masteredcount = 0
for deck in mastereddecks:
if masteredcount < variables.maxmastered:
content.write("<img src=\"/decks/" + deck["name"] + "/master.gif\" title=\"mastered " + deck["name"] + "\">")
masteredcount += 1
if len(mastereddecks) > variables.maxmastered:
content.write(" <a href=\"mastered\">see all</a>")
content.write("</p>\n")
sigs = []
for card in tcgcore.ownedcards():
if card[0:4] == "sig_":
sigs.append(card)
if len(sigs) > 0:
content.write("<h2>signatures</h2>\n<p>")
for card in sigs:
content.write(tcgcore.printcard(card))
content.write("</p>\n")
if len(variables.faves) > 0:
content.write("<h2>faves</h2>\n<p>")
faveslist = sorted(variables.faves)
for card in faveslist:
content.write(tcgcore.printcard(card))
content.write("</p>\n")
coupons = []
for event in log.log:
try:
for newcoupon in event["coupons"]:
found = False
for oldcoupon in coupons:
if found == False:
if newcoupon == list(oldcoupon.keys())[0]:
found = True
oldcoupon[newcoupon] += event["coupons"][newcoupon]
if found == False:
coupons.append({newcoupon:event["coupons"][newcoupon]})
except:
pass
coupons = coupons[::-1]
if len(coupons) > 0:
content.write("<h2>coupons</h2>\n<p>")
for coupon in coupons:
for key,value in coupon.items():
content.write("<img src=\"/assets/coupons/" + key + ".png\" class=\"coupon")
if value == 0:
content.write(" expired\" title=\"expired\"")
else:
content.write("\" title=\"" + str(value) + " left\"")
content.write(" loading=\"lazy\">")
content.write("</p>\n")
content.close()
skel.footerwrite(thefile)
if __name__ == "__main__":
indexgen()