tcg/colors.py

2624 lines
115 KiB
Python

import datetime,os,re,requests
from bs4 import BeautifulSoup
from collections import Counter
import log,variables
values = ["red","orange","yellow","green","blue","purple","brown","gray","special","limited"]
numbers = ["01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20"]
print("Getting list of deck colours")
deckkey = {}
request = requests.get("https://colors-tcg.eu/cards.php?view=alpha")
alldecks = open("key.html","w")
alldecks.write(request.text)
alldecks.close()
# need to correct some html issues
with open("key.html","r") as file:
filedata = file.read()
filedata = filedata.replace("</td></td>","</td>")
with open("key.html","w") as file:
file.write(filedata)
with open("key.html") as decks:
decksoup = BeautifulSoup(decks, "html.parser")
soupdecks = decksoup.find("table",{"id":"colors"})
souprows = soupdecks.find_all("tr")
for row in souprows:
soupcells = row.find_all("td")
deckname = soupcells[2].text.lower().replace(" ","").replace("'","").replace("ç","c").replace(".","").replace("politetness","politeness")
decktype = soupcells[3].text.lower()
if decktype in values:
deckkey[deckname] = decktype
elif decktype == "n/a":
deckkey[deckname] = "limited"
print("Parsing log")
cardlist = []
portfolios = []
crayred = 0
crayorange = 0
crayyellow = 0
craygreen = 0
crayblue = 0
craypurple = 0
craybrown = 0
craygrey = 0
tradeout = []
tradein = []
redeemedsketch = 0
coupons = []
datelist = []
logitems = []
pends = []
levelcrayons = 0
for event in log.log:
logentry = {}
logentry["date"] = event["date"]
logentry["name"] = event["event"]
logentry["url"] = event["url"]
logit = False
if event["event"] == "portfolio":
portfolio = {}
thedecks = {}
for spacedeck in event["decks"]:
deck = spacedeck.replace(" ","")
thedecks[spacedeck] = deckkey[deck]
portcolours = list(thedecks.values())
portcolours = sorted(list(dict.fromkeys(portcolours)))
if len(portcolours) < 3:
portfolio["type"] = "monochrome"
else:
portfolio["type"] = "palette"
portfolio["decks"] = thedecks
portfolio["url"] = event["url"]
portfolios.append(portfolio)
else:
try:
if event["received"]:
logit = True
receivedcards = []
for card in event["received"]:
thecard = {}
if card[0:4] != "sig_":
thedeck = card[:-2]
thecard["name"] = card
thecard["received"] = event["date"]
thecard["mass"] = []
if thecard["name"] in variables.faves:
thecard["priority"] = 1
else:
thecard["priority"] = 0
if card[0:4] != "sig_":
for theme in variables.masscollect:
try:
if thedeck in variables.masscollect[theme]["decks"]:
thecard["mass"].append(theme)
if thecard["priority"] == 0:
thecard["priority"] = 3
except KeyError:
pass
try:
if card in variables.masscollect[theme]["singles"]:
thecard["mass"].append(theme)
if thecard["priority"] == 0:
thecard["priority"] = 2
except KeyError:
pass
if card[0:4] == "sig_":
thecard["colour"] = "sig"
else:
try:
thecard["colour"] = deckkey[thedeck]
except:
if thedeck in variables.anniversary:
thecard["colour"] = "limited"
try:
if thecard["colour"]:
pass
except:
print("Warning: no colour found for " + thedeck)
if thecard["colour"] == "sig":
if card[4:] == variables.name.lower():
thecard["priority"] = 5
else:
thecard["priority"] = 1
else:
if thecard["priority"] == 0:
if thedeck in variables.highpriority:
thecard["priority"] = 1
elif len(thecard["mass"]) > 0:
thecard["priority"] = 3
else:
thecard["priority"] = 4
cardlist.append(thecard)
datelist.append(event["date"])
receivedcards.append(thecard)
logentry["received"] = receivedcards
except KeyError:
pass
try:
if event["lost"]:
logit = True
lostcards = []
for card in event["lost"]:
checkno = len(cardlist) - 1
deleted = False
while checkno >= 0:
if cardlist[checkno]["name"] == card:
if deleted == False:
colour = cardlist[checkno]["colour"]
cardlist.remove(cardlist[checkno])
deleted = True
checkno -= 1
if deleted == False:
print("Warning: trying to remove " + card + " but none found")
lostcard = {}
lostcard["name"] = card
lostcard["colour"] = colour
lostcards.append(lostcard)
datelist.remove(datelist[-1])
logentry["lost"] = lostcards
except KeyError:
pass
crayons = {}
try:
crayred += event["crayons"]["red"]
logit = True
crayons["red"] = event["crayons"]["red"]
except:
pass
try:
crayorange += event["crayons"]["orange"]
logit = True
crayons["orange"] = event["crayons"]["orange"]
except:
pass
try:
crayyellow += event["crayons"]["yellow"]
logit = True
crayons["yellow"] = event["crayons"]["yellow"]
except:
pass
try:
craygreen += event["crayons"]["green"]
logit = True
crayons["green"] = event["crayons"]["green"]
except:
pass
try:
crayblue += event["crayons"]["blue"]
logit = True
crayons["blue"] = event["crayons"]["blue"]
except:
pass
try:
craypurple += event["crayons"]["purple"]
logit = True
crayons["purple"] = event["crayons"]["purple"]
except:
pass
try:
craybrown += event["crayons"]["brown"]
logit = True
crayons["brown"] = event["crayons"]["brown"]
except:
pass
try:
craygrey += event["crayons"]["gray"]
logit = True
crayons["grey"] = event["crayons"]["gray"]
except:
pass
if len(crayons) > 0:
logentry["crayons"] = crayons
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
if len(crayons) > 0:
logentry["crayons"] = crayons
try:
redeemedsketch -= event["sketch"]
except:
pass
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
try:
for card in event["pend"]:
pends.append(card)
except:
pass
try:
for card in event["unpend"]:
pends.remove(card)
except:
pass
try:
for card in event["received"]:
pends.remove(card)
except:
pass
if event["event"] == "level up":
for crayontype in event["crayons"]:
levelcrayons += event["crayons"][crayontype]
if logit == True:
logitems.append(logentry)
logitems = logitems[::-1]
coupons = coupons[::-1]
tradepend = len(list(Counter(tradeout).elements())) - len(list(Counter(tradein).elements()))
print("Calculating level")
if len(cardlist) + tradepend > 14400:
rankcode = "rainbow"
extra = len(cardlist) + tradepend - 14400
plusranks = int(extra / 300)
if plusranks > 0:
rank = "rainbow + " + str(plusranks)
else:
rank = "rainbow"
else:
if len(cardlist) + tradepend > 14100:
rank = "himalayan"
elif len(cardlist) + tradepend > 13800:
rank = "puma"
elif len(cardlist) + tradepend > 13500:
rank = "chartreux"
elif len(cardlist) + tradepend > 13200:
rank = "russian blue"
elif len(cardlist) + tradepend > 12900:
rank = "panther"
elif len(cardlist) + tradepend > 12600:
rank = "cheetah"
elif len(cardlist) + tradepend > 12300:
rank = "tiger"
elif len(cardlist) + tradepend > 12000:
rank = "lion"
elif len(cardlist) + tradepend > 11700:
rank = "metal"
elif len(cardlist) + tradepend > 11400:
rank = "ground"
elif len(cardlist) + tradepend > 11100:
rank = "darkness"
elif len(cardlist) + tradepend > 10800:
rank = "water"
elif len(cardlist) + tradepend > 10500:
rank = "nature"
elif len(cardlist) + tradepend > 10200:
rank = "light"
elif len(cardlist) + tradepend > 9900:
rank = "wind"
elif len(cardlist) + tradepend > 9600:
rank = "fire"
elif len(cardlist) + tradepend > 9300:
rank = "mercury"
elif len(cardlist) + tradepend > 9000:
rank = "jupiter"
elif len(cardlist) + tradepend > 8700:
rank = "uranus"
elif len(cardlist) + tradepend > 8400:
rank = "neptune"
elif len(cardlist) + tradepend > 8100:
rank = "earth"
elif len(cardlist) + tradepend > 7800:
rank = "venus"
elif len(cardlist) + tradepend > 7500:
rank = "saturn"
elif len(cardlist) + tradepend > 7200:
rank = "mars"
elif len(cardlist) + tradepend > 6900:
rank = "magnolia"
elif len(cardlist) + tradepend > 6600:
rank = "chocolate cosmos"
elif len(cardlist) + tradepend > 6300:
rank = "lilac"
elif len(cardlist) + tradepend > 6000:
rank = "hydrangea"
elif len(cardlist) + tradepend > 5700:
rank = "clover"
elif len(cardlist) + tradepend > 5400:
rank = "daffodil"
elif len(cardlist) + tradepend > 5100:
rank = "tiger lily"
elif len(cardlist) + tradepend > 4800:
rank = "sakura"
elif len(cardlist) + tradepend > 4500:
rank = "silver"
elif len(cardlist) + tradepend > 4200:
rank = "bronze"
elif len(cardlist) + tradepend > 3900:
rank = "amethyst"
elif len(cardlist) + tradepend > 3600:
rank = "sapphire"
elif len(cardlist) + tradepend > 3300:
rank = "emerald"
elif len(cardlist) + tradepend > 3000:
rank = "gold"
elif len(cardlist) + tradepend > 2700:
rank = "amber"
elif len(cardlist) + tradepend > 2400:
rank = "ruby"
elif len(cardlist) + tradepend > 2200:
rank = "dragon fruit"
elif len(cardlist) + tradepend > 2000:
rank = "apricot"
elif len(cardlist) + tradepend > 1800:
rank = "grape"
elif len(cardlist) + tradepend > 1600:
rank = "blueberry"
elif len(cardlist) + tradepend > 1400:
rank = "lime"
elif len(cardlist) + tradepend > 1200:
rank = "lemon"
elif len(cardlist) + tradepend > 1000:
rank = "tangerine"
elif len(cardlist) + tradepend > 800:
rank = "strawberry"
elif len(cardlist) + tradepend > 700:
rank = "gray"
elif len(cardlist) + tradepend > 600:
rank = "brown"
elif len(cardlist) + tradepend > 500:
rank = "purple"
elif len(cardlist) + tradepend > 400:
rank = "blue"
elif len(cardlist) + tradepend > 300:
rank = "green"
elif len(cardlist) + tradepend > 200:
rank = "yellow"
elif len(cardlist) + tradepend > 100:
rank = "orange"
else:
rank = "red"
rankcode = re.sub(" ","",rank)
print("Getting list of owned decks")
portdecks = []
for portfolio in portfolios:
oneportdecks = list(portfolio["decks"].keys())
for deck in oneportdecks:
portdecks.append(deck.replace(" ",""))
portdecks = sorted(list(dict.fromkeys(portdecks)))
decks = []
for card in cardlist:
if card["colour"] != "sig":
deck = card["name"][:-2]
decks.append(deck)
decks = sorted(list(dict.fromkeys(decks)))
decklist = []
for deck in decks:
thedeck = {}
thedeck["name"] = deck
if deck in variables.anniversary:
thedeck["colour"] = "limited"
else:
thedeck["colour"] = deckkey[deck]
thedeck["mass"] = []
thedeck["massmaster"] = []
for theme in variables.masscollect:
try:
if deck in variables.masscollect[theme]["decks"]:
thedeck["mass"].append(theme)
except KeyError:
pass
try:
if deck in variables.masscollect[theme]["masters"]:
thedeck["massmaster"].append(theme)
except KeyError:
pass
for number in numbers:
thedeck[number] = None
thedeck["count"] = 0
decklist.append(thedeck)
for card in cardlist:
if card["colour"] != "sig":
for deck in decklist:
if deck["name"] == card["name"][:-2]:
if deck[card["name"][-2:]] == None:
deck[card["name"][-2:]] = card["received"]
deck["count"] += 1
for deck in decklist:
if deck["count"] == 20:
dates = []
for number in numbers:
dates.append(deck[number])
dates = sorted(dates)
deck["mastered"] = dates[-1]
else:
deck["mastered"] = False
if deck["name"] in variables.highpriority or deck["count"] >= variables.highthreshold or deck["name"] in portdecks or deck["colour"] == "limited":
deck["priority"] = 1
elif len(deck["mass"]) > 0:
if deck["count"] >= variables.massmediumthreshold:
deck["priority"] = 2
else:
deck["priority"] = 3
elif deck["count"] >= variables.mediumthreshold:
deck["priority"] = 2
elif deck["count"] >= variables.collectthreshold:
deck["priority"] = 3
else:
deck["priority"] = 4
if __name__ == "__main__":
print("Checking for new card images")
for card in cardlist:
if card["colour"] == "sig":
if not os.path.exists("build/decks/sigs/" + card["name"][4:] + ".gif"):
print("Downloading " + card["name"])
r = requests.get("https://colors-tcg.eu/cards/" + card["name"] + ".gif")
open("build/decks/sigs/" + card["name"][4:] + ".gif","wb").write(r.content)
for deck in decklist:
if not os.path.isdir("build/decks/" + deck["name"]):
os.mkdir("build/decks/" + deck["name"])
if deck["colour"] != "limited":
print("Downloading " + deck["name"])
number = 0
while number < 21:
if number < 10:
r = requests.get("https://colors-tcg.eu/cards/" + deck["name"] + "0" + str(number) + ".gif")
open("build/decks/" + deck["name"] + "/0" + str(number) + ".gif","wb").write(r.content)
else:
r = requests.get("https://colors-tcg.eu/cards/" + deck["name"] + str(number) + ".gif")
open("build/decks/" + deck["name"] + "/" + str(number) + ".gif","wb").write(r.content)
number += 1
master = requests.get("https://colors-tcg.eu/cards/" + deck["name"] + "master.gif")
open("build/decks/" + deck["name"] + "/master.gif","wb").write(master.content)
print("Getting list of wanted cards")
wantedlist = []
for deck in decklist:
if deck["priority"] < 4:
if deck["colour"] != "limited":
for number in numbers:
if deck[number] == None:
wantedcard = {}
wantedcard["name"] = deck["name"] + number
wantedcard["colour"] = deck["colour"]
wantedcard["priority"] = deck["priority"]
wantedlist.append(wantedcard)
decknames = []
for deck in decklist:
decknames.append(deck["name"])
cardnames = []
for card in cardlist:
cardnames.append(card["name"])
for theme in variables.masscollect:
try:
for deck in variables.masscollect[theme]["decks"]:
if deck not in decknames:
for number in numbers:
wantedcard = {}
wantedcard["name"] = deck + number
wantedcard["colour"] = deckkey[deck]
wantedcard["priority"] = 3
wantedlist.append(wantedcard)
except KeyError:
pass
try:
for card in variables.masscollect[theme]["singles"]:
if card not in cardnames:
wantedcard = {}
wantedcard["name"] = card
wantedcard["colour"] = deckkey[card[:-2]]
wantedcard["priority"] = 3
wantedlist.append(wantedcard)
except KeyError:
pass
wantedlist = sorted(wantedlist, key=lambda d: d["name"])
removelist = []
for card in wantedlist:
if card["name"] in pends:
removelist.append(card)
for card in removelist:
wantedlist.remove(card)
print("Adjusting card priorities")
for card in cardlist:
for deck in decklist:
if card["name"][:-2] == deck["name"]:
if card["priority"] > deck["priority"]:
card["priority"] = deck["priority"]
cardlist = sorted(cardlist, key=lambda d: d["name"])
theindex = 0
for card in cardlist:
card["dupe"] = False
if card["name"][0:4] != "sig_":
if theindex > 0:
if card["name"] == cardlist[theindex-1]["name"]:
card["priority"] = 4
card["dupe"] = True
theindex += 1
theindex = 0
if variables.keepsig == True:
for card in cardlist:
if card["name"] == "sig_" + variables.name.lower():
card["priority"] = 1
if theindex > 0:
if cardlist[theindex-1]["name"] == "sig_" + variables.name.lower():
card["priority"] = 5
theindex += 1
# core functions
def headerwrite(thefile,pagename):
header = open(thefile,"a")
header.write("<!DOCTYPE html>\n<html lang=\"en\" style=\"--headbg:" + variables.headerbackground + ";\">\n <head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <link rel=\"stylesheet\" href=\"")
if len(variables.subfolder) > 0:
header.write("/" + variables.subfolder)
header.write("/style.css\">\n <link rel=\"stylesheet\" href=\"")
if len(variables.subfolder) > 0:
header.write("/" + variables.subfolder)
header.write("/user.css\">\n <meta name=\"theme-color\" content=\"" + variables.headerbackground + "\">\n <title>" + variables.name + "’s card collection :: " + pagename + "</title>\n </head>\n <body class=\"" + pagename + "\">\n <aside>\n \n </aside>\n <nav>\n <ul>\n <li>")
if pagename == "index":
header.write("home")
else:
header.write("<a href=\"")
if len(variables.subfolder) > 0:
header.write("/" + variables.subfolder)
header.write("/\">home</a>")
header.write("</li>\n <li>")
if pagename == "collecting":
header.write("collecting")
else:
header.write("<a href=\"")
if len(variables.subfolder) > 0:
header.write("/" + variables.subfolder)
header.write("/collecting\">collecting</a>")
header.write("</li>\n <li>")
if pagename == "mass":
header.write("mass collecting")
else:
header.write("<a href=\"")
if len(variables.subfolder) > 0:
header.write("/" + variables.subfolder)
header.write("/mass\">mass collecting</a>")
header.write("</li>\n <li>")
if pagename == "mastered":
header.write("mastered")
else:
header.write("<a href=\"")
if len(variables.subfolder) > 0:
header.write("/" + variables.subfolder)
header.write("/mastered\">mastered</a>")
header.write("</li>\n <li>")
if pagename == "trade":
header.write("trading")
else:
header.write("<a href=\"")
if len(variables.subfolder) > 0:
header.write("/" + variables.subfolder)
header.write("/trade\">trading</a>")
header.write("</li>\n <li>")
if pagename == "wanted":
header.write("wanted")
else:
header.write("<a href=\"")
if len(variables.subfolder) > 0:
header.write("/" + variables.subfolder)
header.write("/wanted\">wanted</a>")
header.write("</li>\n <li>")
if pagename == "search":
header.write("search")
else:
header.write("<a href=\"")
if len(variables.subfolder) > 0:
header.write("/" + variables.subfolder)
header.write("/search\">search</a>")
header.write("</li>\n <li>")
if pagename == "log":
header.write("log")
else:
header.write("<a href=\"")
if len(variables.subfolder) > 0:
header.write("/" + variables.subfolder)
header.write("/log\">log</a>")
header.write("</li>\n <li><a href=\"" + variables.tradepost + "\" target=\"_blank\">trade post @ dw</a></li>\n <li><a href=\"https://colors-tcg.eu/services.php\" target=\"_blank\">service links</a></li>\n </ul>\n </nav>\n <main>\n")
header.close()
def footerwrite(thefile):
footer = open(thefile,"a")
footer.write(" </main>\n </body>\n</html>")
footer.close()
def printcard(card):
if type(card) == dict:
if card["colour"] == "sig":
imgstring = "<img src=\""
if len(variables.subfolder) > 0:
imgstring += "/" + variables.subfolder
imgstring += "/decks/sigs/" + card["name"][4:] + ".gif\" title=\"" + card["name"] + "\" loading=\"lazy\">"
return imgstring
else:
deck = card["name"][:-2]
cardid = card["name"][-2:]
imgstring = "<img src=\""
if len(variables.subfolder) > 0:
imgstring += "/" + variables.subfolder
imgstring += "/decks/" + deck + "/" + cardid + ".gif\" title=\"" + card["name"] + "\" loading=\"lazy\">"
return imgstring
elif type(card) == str:
if card[0:4] == "sig_":
imgstring = "<img src=\""
if len(variables.subfolder) > 0:
imgstring += "/" + variables.subfolder
imgstring += "/decks/sigs/" + card[4:] + ".gif\" title=\"" + card + "\" loading=\"lazy\">"
return imgstring
else:
deck = card[:-2]
cardid = card[-2:]
imgstring = "<img src=\""
if len(variables.subfolder) > 0:
imgstring += "/" + variables.subfolder
imgstring += "/decks/" + deck + "/" + cardid + ".gif\" title=\"" + card + "\" loading=\"lazy\">"
return imgstring
def cardtext(card):
cardtext = "<span class=\"cardname\">"
if card["colour"] == "red":
cardtext += "<span title=\"red\">🔴</span>"
elif card["colour"] == "orange":
cardtext += "<span title=\"orange\">🟠</span>"
elif card["colour"] == "yellow":
cardtext += "<span title=\"yellow\">🟡</span>"
elif card["colour"] == "green":
cardtext += "<span title=\"green\">🟢</span>"
elif card["colour"] == "blue":
cardtext += "<span title=\"blue\">🔵</span>"
elif card["colour"] == "purple":
cardtext += "<span title=\"purple\">🟣</span>"
elif card["colour"] == "brown":
cardtext += "<span title=\"brown\">🟤</span>"
elif card["colour"] == "gray":
cardtext += "<span title=\""
if variables.british:
cardtext += "grey"
else:
cardtext += "gray"
cardtext += "\">⚪</span>"
elif card["colour"] == "special":
cardtext += "<span title=\"special\">✨</span>"
elif card["colour"] == "limited":
cardtext += "<span title=\"limited\">🌈</span>"
elif card["colour"] == "sig":
cardtext += "<span title=\"signature\">✍</span>"
cardtext += card["name"] + "</span>"
return cardtext
def portfoliogen(theportfolio,thetype,portnumber):
if thetype == "palette":
portstring = "<table class=\"palette portfolio\">\n<tbody>\n<tr>\n<td colspan=\"2\">" + variables.name.lower() + "</td>\n</tr>\n<tr>\n<td class=\"deck1\">"
try:
reddeck = list(theportfolio["decks"].keys())[list(theportfolio["decks"].values()).index("red")]
for deck in decklist:
if deck["name"] == reddeck.replace(" ",""):
if deck["mastered"]:
portstring += ""
else:
portstring += ""
break
portstring += " " + reddeck
except:
specialdeck = list(theportfolio["decks"].keys())[list(theportfolio["decks"].values()).index("special")]
for deck in decklist:
if deck["name"] == specialdeck.replace(" ",""):
if deck["mastered"]:
portstring += ""
else:
portstring += ""
break
portstring += " " + specialdeck
portstring += "</td>\n<td class=\"deck5\">"
try:
bluedeck = list(theportfolio["decks"].keys())[list(theportfolio["decks"].values()).index("blue")]
for deck in decklist:
if deck["name"] == bluedeck.replace(" ",""):
if deck["mastered"]:
portstring += ""
else:
portstring += ""
break
portstring += " " + bluedeck
except:
specialdeck = list(theportfolio["decks"].keys())[list(theportfolio["decks"].values()).index("special")]
for deck in decklist:
if deck["name"] == specialdeck.replace(" ",""):
if deck["mastered"]:
portstring += ""
else:
portstring += ""
break
portstring += " " + specialdeck
portstring += "</td>\n</tr>\n<tr>\n<td class=\"deck2\">"
try:
orangedeck = list(theportfolio["decks"].keys())[list(theportfolio["decks"].values()).index("orange")]
for deck in decklist:
if deck["name"] == orangedeck.replace(" ",""):
if deck["mastered"]:
portstring += ""
else:
portstring += ""
break
portstring += " " + orangedeck
except:
specialdeck = list(theportfolio["decks"].keys())[list(theportfolio["decks"].values()).index("special")]
for deck in decklist:
if deck["name"] == specialdeck.replace(" ",""):
if deck["mastered"]:
portstring += ""
else:
portstring += ""
break
portstring += " " + specialdeck
portstring += "</td>\n<td class=\"deck6\">"
try:
purpledeck = list(theportfolio["decks"].keys())[list(theportfolio["decks"].values()).index("purple")]
for deck in decklist:
if deck["name"] == purpledeck.replace(" ",""):
if deck["mastered"]:
portstring += ""
else:
portstring += ""
break
portstring += " " + purpledeck
except:
specialdeck = list(theportfolio["decks"].keys())[list(theportfolio["decks"].values()).index("special")]
for deck in decklist:
if deck["name"] == specialdeck.replace(" ",""):
if deck["mastered"]:
portstring += ""
else:
portstring += ""
break
portstring += " " + specialdeck
portstring += "</td>\n</tr>\n<tr>\n<td class=\"deck3\">"
try:
yellowdeck = list(theportfolio["decks"].keys())[list(theportfolio["decks"].values()).index("yellow")]
for deck in decklist:
if deck["name"] == yellowdeck.replace(" ",""):
if deck["mastered"]:
portstring += ""
else:
portstring += ""
break
portstring += " " + yellowdeck
except:
specialdeck = list(theportfolio["decks"].keys())[list(theportfolio["decks"].values()).index("special")]
for deck in decklist:
if deck["name"] == specialdeck.replace(" ",""):
if deck["mastered"]:
portstring += ""
else:
portstring += ""
break
portstring += " " + specialdeck
portstring += "</td>\n<td class=\"deck7\">"
try:
browndeck = list(theportfolio["decks"].keys())[list(theportfolio["decks"].values()).index("brown")]
for deck in decklist:
if deck["name"] == browndeck.replace(" ",""):
if deck["mastered"]:
portstring += ""
else:
portstring += ""
break
portstring += " " + browndeck
except:
specialdeck = list(theportfolio["decks"].keys())[list(theportfolio["decks"].values()).index("special")]
for deck in decklist:
if deck["name"] == specialdeck.replace(" ",""):
if deck["mastered"]:
portstring += ""
else:
portstring += ""
break
portstring += " " + specialdeck
portstring += "</td>\n</tr>\n<tr>\n<td class=\"deck4\">"
try:
greendeck = list(theportfolio["decks"].keys())[list(theportfolio["decks"].values()).index("green")]
for deck in decklist:
if deck["name"] == greendeck.replace(" ",""):
if deck["mastered"]:
portstring += ""
else:
portstring += ""
break
portstring += " " + greendeck
except:
specialdeck = list(theportfolio["decks"].keys())[list(theportfolio["decks"].values()).index("special")]
for deck in decklist:
if deck["name"] == specialdeck.replace(" ",""):
if deck["mastered"]:
portstring += ""
else:
portstring += ""
break
portstring += " " + specialdeck
portstring += "</td>\n<td class=\"deck8\">"
try:
greydeck = list(theportfolio["decks"].keys())[list(theportfolio["decks"].values()).index("gray")]
for deck in decklist:
if deck["name"] == greydeck.replace(" ",""):
if deck["mastered"]:
portstring += ""
else:
portstring += ""
break
portstring += " " + greydeck
except:
specialdeck = list(theportfolio["decks"].keys())[list(theportfolio["decks"].values()).index("special")]
for deck in decklist:
if deck["name"] == specialdeck.replace(" ",""):
if deck["mastered"]:
portstring += ""
else:
portstring += ""
break
portstring += " " + specialdeck
portstring += "</td>\n</tr>\n<tr>\n<td colspan=\"2\"><a href=\"" + theportfolio["url"] + "\">palette portfolio "
if portnumber < 10:
portstring += "0" + str(portnumber)
else:
portstring += str(portnumber)
portstring += "</a></td>\n</tr>\n</tbody>\n</table>\n"
elif thetype == "monochrome":
thecolour = list(theportfolio["decks"].values())[0]
portstring = "<table class=\"" + thecolour + " portfolio\">\n<tbody>\n<tr>\n<td colspan=\"2\">" + variables.name.lower() + "</td>\n</tr>\n<tr>\n<td class=\"deck1\">"
thedecks = sorted(list(theportfolio["decks"].keys()))
for deck in decklist:
if deck["name"] == thedecks[0].replace(" ",""):
if deck["mastered"]:
portstring += ""
else:
portstring += ""
break
portstring += " " + thedecks[0] + "</td>\n<td class=\"deck5\">"
for deck in decklist:
if deck["name"] == thedecks[4].replace(" ",""):
if deck["mastered"]:
portstring += ""
else:
portstring += ""
break
portstring += " " + thedecks[4] + "</td>\n</tr>\n<tr>\n<td class=\"deck2\">"
for deck in decklist:
if deck["name"] == thedecks[1].replace(" ",""):
if deck["mastered"]:
portstring += ""
else:
portstring += ""
break
portstring += " " + thedecks[1] + "</td>\n<td class=\"deck6\">"
for deck in decklist:
if deck["name"] == thedecks[5].replace(" ",""):
if deck["mastered"]:
portstring += ""
else:
portstring += ""
break
portstring += " " + thedecks[5] + "</td>\n</tr>\n<tr>\n<td class=\"deck3\">"
for deck in decklist:
if deck["name"] == thedecks[2].replace(" ",""):
if deck["mastered"]:
portstring += ""
else:
portstring += ""
break
portstring += " " + thedecks[2] + "</td>\n<td class=\"deck7\">"
for deck in decklist:
if deck["name"] == thedecks[6].replace(" ",""):
if deck["mastered"]:
portstring += ""
else:
portstring += ""
break
portstring += " " + thedecks[6] + "</td>\n</tr>\n<tr>\n<td class=\"deck4\">"
for deck in decklist:
if deck["name"] == thedecks[3].replace(" ",""):
if deck["mastered"]:
portstring += ""
else:
portstring += ""
break
portstring += " " + thedecks[3] + "</td>\n<td class=\"deck8\">"
for deck in decklist:
if deck["name"] == thedecks[7].replace(" ",""):
if deck["mastered"]:
portstring += ""
else:
portstring += ""
break
portstring += " " + thedecks[7] + "</td>\n</tr>\n<tr>\n<td colspan=\"2\"><a href=\"" + theportfolio["url"] + "\">monochrome portfolio "
if portnumber < 10:
portstring += "0" + str(portnumber)
else:
portstring += str(portnumber)
portstring += "</a></td>\n</tr>\n</tbody>\n</table>\n"
return portstring
portfoliosearch = len(portfolios)
latestpalette = 0
latestmonochrome = 0
palettes = 0
monochromes = 0
while portfoliosearch > 0:
if portfolios[portfoliosearch-1]["type"] == "palette":
palettes += 1
if latestpalette == 0:
latestpalette = portfoliosearch
if portfolios[portfoliosearch-1]["type"] == "monochrome":
monochromes += 1
if latestmonochrome == 0:
latestmonochrome = portfoliosearch
portfoliosearch -= 1
def filterwrite(page,colour=False,sigs=False,recent=False):
filterstring = "<p class=\"typefilter\">"
if colour:
filterstring += "Filtered to <span class=\"" + colour + "\"><b>"
if colour == "gray":
if variables.british:
filterstring += "grey"
else:
filterstring += "gray"
elif colour == "recent":
filterstring += "cards gained in " + datetime.datetime.now().strftime("%B")
else:
filterstring += colour
filterstring += "</b></span>. <a href=\""
if len(variables.subfolder) > 0:
filterstring += "/" + variables.subfolder
filterstring += "/" + page + "\">Show all</a>"
else:
filterstring += "Filter: <a href=\""
if recent:
if len(variables.subfolder) > 0:
filterstring += "/" + variables.subfolder
filterstring += "/" + page + "/recent\" title=\"gained this month\">📅</a> <a href=\""
if len(variables.subfolder) > 0:
filterstring += "/" + variables.subfolder
filterstring += "/" + page + "/red\" title=\"red\">🔴</a> <a href=\""
if len(variables.subfolder) > 0:
filterstring += "/" + variables.subfolder
filterstring += "/" + page + "/orange\" title=\"orange\">🟠</a> <a href=\""
if len(variables.subfolder) > 0:
filterstring += "/" + variables.subfolder
filterstring += "/" + page + "/yellow\" title=\"yellow\">🟡</a> <a href=\""
if len(variables.subfolder) > 0:
filterstring += "/" + variables.subfolder
filterstring += "/" + page + "/green\" title=\"green\">🟢</a> <a href=\""
if len(variables.subfolder) > 0:
filterstring += "/" + variables.subfolder
filterstring += "/" + page + "/blue\" title=\"blue\">🔵</a> <a href=\""
if len(variables.subfolder) > 0:
filterstring += "/" + variables.subfolder
filterstring += "/" + page + "/purple\" title=\"purple\">🟣</a> <a href=\""
if len(variables.subfolder) > 0:
filterstring += "/" + variables.subfolder
filterstring += "/" + page + "/brown\" title=\"brown\">🟤</a> <a href=\""
if len(variables.subfolder) > 0:
filterstring += "/" + variables.subfolder
filterstring += "/" + page + "/gray\" title=\""
if variables.british:
filterstring += "grey"
else:
filterstring += "gray"
filterstring += "\">⚪</a> <a href=\""
if len(variables.subfolder) > 0:
filterstring += "/" + variables.subfolder
filterstring += "/" + page + "/special\" title=\"special\">✨</a> <a href=\""
if len(variables.subfolder) > 0:
filterstring += "/" + variables.subfolder
filterstring += "/" + page + "/limited\" title=\"limited\">🌈</a>"
if sigs:
filterstring += " <a href=\""
if len(variables.subfolder) > 0:
filterstring += "/" + variables.subfolder
filterstring += "/" + page + "/sig\" title=\"sig\">✍</a>"
filterstring += "</p>\n"
return filterstring
def printdeck(deck,fold=True):
if fold:
deckstring = "<details class=\"deckwrap\">\n<summary>" + deck["name"] + " ["
if deck["mastered"]:
deckstring += deck["mastered"].strftime("%Y-%m-%d")
else:
deckstring += str(deck["count"]) + "/20"
deckstring += "]</summary>\n"
else:
deckstring = ""
deckstring += "<table class=\"decktable " + deck["colour"] + "\">\n"
if not fold:
deckstring += "<thead>\n <tr>\n <th colspan=\"5\">" + deck["name"] + " ["
if deck["mastered"]:
deckstring += deck["mastered"].strftime("%Y-%m-%d")
else:
deckstring += str(deck["count"]) + "/20"
deckstring += "]</th>\n </tr>\n</thead>\n"
deckstring += "<tbody>\n"
test = 1
while test < 21:
if test % 5 == 1:
deckstring += " <tr>\n"
deckstring += " <td>"
if test < 10:
teststring = "0" + str(test)
else:
teststring = str(test)
found = False
for card in cardlist:
if card["name"] == deck["name"] + teststring:
deckstring += printcard(card)
found = True
break
if found == False:
deckstring += "<img src=\""
if len(variables.subfolder) > 0:
deckstring += "/" + variables.subfolder
deckstring += "/decks/" + deck["name"] + "/00.gif\" loading=\"lazy\">"
if deck["name"] + teststring in pends:
deckstring += "<p class=\"pending\">pending</p>"
deckstring += "</td>\n"
if test % 5 == 0:
deckstring += " </tr>\n"
test += 1
if deck["mastered"]:
deckstring += " <tr>\n <td colspan=\"5\" align=\"center\"><img src=\""
if len(variables.subfolder) > 0:
deckstring += "/" + variables.subfolder
deckstring += "/decks/" + deck["name"] + "/master.gif\" title=\"mastered " + deck["name"]
try:
if deck["name"] in variables.firstmasteries:
deckstring += " (first)\" class=\"first"
except:
pass
deckstring += "\"><td>\n</tr>\n"
deckstring += "</tbody>\n</table>\n"
if fold:
deckstring += "</details>\n"
return deckstring
def crayonlog(colour,event):
crayonno = event["crayons"][colour]
if variables.british:
if colour == "grey":
crayonrend = "grey"
else:
crayonrend = colour
else:
crayonrend = colour
if crayonno > 0:
crayonstring = "+" + str(crayonno) + " " + crayonrend
else:
crayonstring = str(crayonno) + " " + crayonrend
return crayonstring
if __name__ == "__main__":
print("Building index page")
def indexgen():
if os.path.exists("build/index.html"):
os.remove("build/index.html")
thefile = "build/index.html"
headerwrite(thefile,"index")
content = open(thefile,"a")
firstdate = log.log[0]["date"]
content.write("<a href=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/levels\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/" + rankcode + ".gif\"></a>")
if variables.sig:
content.write("<img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/decks/sigs/" + variables.name.lower() + ".gif\" loading=\"lazy\">")
if variables.banner:
content.write("<a target=\"_blank\" href=\"" + variables.tradepost + "\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/banner.png\" loading=\"lazy\"></a>")
content.write("\n<ul>\n<li>player name: <span class=\"name\">" + variables.name + "</span></li>\n<li>" + str(len(cardlist) + tradepend) + " cards <span class=\"rank " + rank + "\" title=\"redeemed: ")
if levelcrayons == 0:
content.write("red")
elif levelcrayons == 1:
content.write("orange")
elif levelcrayons == 2:
content.write("yellow")
elif levelcrayons == 3:
content.write("green")
elif levelcrayons == 4:
content.write("blue")
elif levelcrayons == 5:
content.write("purple")
elif levelcrayons == 6:
content.write("brown")
elif levelcrayons == 7:
if variables.british:
content.write("grey")
else:
content.write("gray")
elif levelcrayons == 8:
content.write("strawberry")
elif levelcrayons == 9:
content.write("tangerine")
elif levelcrayons == 10:
content.write("lemon")
elif levelcrayons == 11:
content.write("lime")
elif levelcrayons == 12:
content.write("blueberry")
elif levelcrayons == 13:
content.write("grape")
elif levelcrayons == 14:
content.write("apricot")
elif levelcrayons == 15:
content.write("dragon fruit")
elif levelcrayons == 16:
content.write("ruby")
elif levelcrayons == 17:
content.write("amber")
elif levelcrayons == 18:
content.write("gold")
elif levelcrayons == 19:
content.write("emerald")
elif levelcrayons == 20:
content.write("sapphire")
elif levelcrayons == 21:
content.write("amethyst")
elif levelcrayons == 22:
content.write("bronze")
elif levelcrayons == 23:
content.write("silver")
elif levelcrayons == 24:
content.write("sakura")
elif levelcrayons == 25:
content.write("tiger lily")
elif levelcrayons == 26:
content.write("daffodil")
elif levelcrayons == 27:
content.write("clover")
elif levelcrayons == 28:
content.write("hydrangea")
elif levelcrayons == 29:
content.write("lilac")
elif levelcrayons == 30:
content.write("chocolate cosmos")
elif levelcrayons == 31:
content.write("magnolia")
elif levelcrayons == 32:
content.write("mars")
elif levelcrayons == 33:
content.write("saturn")
elif levelcrayons == 34:
content.write("venus")
elif levelcrayons == 35:
content.write("earth")
elif levelcrayons == 36:
content.write("neptune")
elif levelcrayons == 37:
content.write("uranus")
elif levelcrayons == 38:
content.write("jupiter")
elif levelcrayons == 39:
content.write("mercury")
elif levelcrayons == 40:
content.write("fire")
elif levelcrayons == 41:
content.write("wind")
elif levelcrayons == 42:
content.write("light")
elif levelcrayons == 43:
content.write("nature")
elif levelcrayons == 44:
content.write("water")
elif levelcrayons == 45:
content.write("darkness")
elif levelcrayons == 46:
content.write("ground")
elif levelcrayons == 47:
content.write("metal")
elif levelcrayons == 48:
content.write("lion")
elif levelcrayons == 49:
content.write("tiger")
elif levelcrayons == 50:
content.write("cheetah")
elif levelcrayons == 51:
content.write("panther")
elif levelcrayons == 52:
content.write("russian blue")
elif levelcrayons == 53:
content.write("chartreux")
elif levelcrayons == 54:
content.write("puma")
elif levelcrayons == 55:
content.write("himalayan")
else:
content.write("rainbow" + " + " + str(levelcrayons - 56))
content.write("\">(" + rank + ")</span></li>\n")
if tradepend > 0:
content.write("<li>" + str(tradepend) + " card")
if tradepend > 1:
content.write("s")
content.write(" held for trades</li>\n")
content.write("<li>started <code>" + firstdate.strftime("%Y-%m-%d") + "</code></li>\n<li>last updated <code>" + datetime.datetime.now().strftime("%Y-%m-%d") + "</code></li>\n<li><a href=\"https://git.praze.net/tre/tcg\" target=\"_blank\">code</a> ")
if variables.name == "Mez":
content.write("under construction")
else:
content.write("by <a href=\https://tcg.praze.net\">mez</a>")
content.write("</li>\n")
try:
if len(variables.misclink["text"]) > 0:
content.write("<li><a href=\"" + variables.misclink["link"] + "\">" + variables.misclink["text"] + "</a></li>\n")
except:
pass
content.write("</ul>\n")
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=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/crayons/crayon1.gif\" class=\"crayon\" title=\"red\"> × " + str(crayred) + "</td>\n")
if crayorange > 0:
content.write("<td class=\"orange\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/crayons/crayon2.gif\" class=\"crayon\" title=\"orange\"> × " + str(crayorange) + "</td>\n")
if crayyellow > 0:
content.write("<td class=\"yellow\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/crayons/crayon3.gif\" class=\"crayon\" title=\"yellow\"> × " + str(crayyellow) + "</td>\n")
if craygreen > 0:
content.write("<td class=\"green\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/crayons/crayon4.gif\" class=\"crayon\" title=\"green\"> × " + str(craygreen) + "</td>\n")
if crayblue > 0:
content.write("<td class=\"blue\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/crayons/crayon5.gif\" class=\"crayon\" title=\"blue\"> × " + str(crayblue) + "</td>\n")
if craypurple > 0:
content.write("<td class=\"purple\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/crayons/crayon6.gif\" class=\"crayon\" title=\"purple\"> × " + str(craypurple) + "</td>\n")
if craybrown > 0:
content.write("<td class=\"brown\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/crayons/crayon7.gif\" class=\"crayon\" title=\"brown\"> × " + str(craybrown) + "</td>\n")
if craygrey > 0:
content.write("<td class=\"grey\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/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")
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=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/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=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/sketch/20.gif\" title=\"")
sketchdifference = int(sketch / 20) - redeemedsketch
if sketchdifference > 0:
content.write(str(sketchdifference) + " to turn in")
else:
content.write("all turned in")
content.write("\"></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 latestpalette + latestmonochrome > 0:
content.write("<a href=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/portfolios\">\n<div class=\"foliocase\">\n")
if latestpalette > 0:
content.write(portfoliogen(portfolios[latestpalette-1],"palette",palettes))
if latestmonochrome > 0:
content.write(portfoliogen(portfolios[latestmonochrome-1],"monochrome",monochromes))
content.write("</div>\n</a>\n")
decksofinterest = []
mastereddecks = []
for deck in decklist:
if deck["mastered"]:
mastereddecks.append(deck)
mastereddecks = sorted(mastereddecks,key=lambda d: d["mastered"],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=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/decks/" + deck["name"] + "/master.gif\" title=\"mastered " + deck["name"])
try:
if deck["name"] in variables.firstmasteries:
content.write(" (first)\" class=\"first")
except:
pass
content.write("\">")
masteredcount += 1
if len(mastereddecks) > variables.maxmastered:
content.write(" <a href=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("mastered\">see&nbsp;all</a>")
content.write("</p>\n")
sigs = []
for card in cardlist:
if card["name"][0:4] == "sig_":
sigs.append(card)
if len(sigs) > 0:
content.write("<h2>signatures</h2>\n<p>")
for card in sigs:
content.write(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(printcard(card))
content.write("</p>\n")
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=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/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")
donations = []
try:
for donatedeck in variables.donations["decks"]:
donation = {}
donation["name"] = donatedeck
for deck in decklist:
if deck["name"] == donatedeck:
if deck["mastered"]:
donation["type"] = "mastered"
else:
donation["type"] = "deck"
break
donations.append(donation)
except:
pass
try:
for card in variables.donations["scrapbook"]:
donation = {}
donation["name"] = card
donation["type"] = "single"
donations.append(donation)
except:
pass
if len(donations) > 0:
donations = sorted(donations, key=lambda d: d["name"])
content.write("<h2>donations</h2>\n<p>")
for donation in donations:
if donation["type"] == "deck":
content.write("<img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/decks/" + donation["name"] + "/00.gif\" loading=\"lazy\">")
elif donation["type"] == "mastered":
content.write("<img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/decks/" + donation["name"] + "/master.gif\" title=\"mastered " + donation["name"])
try:
if donation["name"] in variables.firstmasteries:
content.write(" (first)\" class=\"first")
except:
pass
content.write("\">")
elif donation["type"] == "single":
content.write(printcard(donation["name"]))
content.write("</p>\n")
content.close()
footerwrite(thefile)
if __name__ == "__main__":
indexgen()
print("Building levels page")
def levelsgen():
if not os.path.isdir("build/levels"):
os.mkdir("build/levels")
if os.path.exists("build/levels/index.html"):
os.remove("build/levels/index.html")
thefile = "build/levels/index.html"
headerwrite(thefile,"levels")
content = open(thefile,"a")
content.write("<h1>levels</h1>\n<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/red.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[0].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 100:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/orange.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[100].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 200:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/yellow.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[200].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 300:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/green.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[300].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 400:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/blue.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[400].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 500:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/purple.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[500].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 600:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/brown.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[600].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 700:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/gray.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[700].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 800:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/strawberry.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[800].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 1000:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/tangerine.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[1000].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 1200:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/lemon.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[1200].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 1400:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/lime.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[1400].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 1600:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/blueberry.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[1600].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 1800:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/grape.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[1800].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 2000:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/apricot.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[2000].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 2200:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/dragonfruit.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[2200].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 2400:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/ruby.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[2400].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 2700:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/amber.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[2700].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 3000:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/gold.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[3000].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 3300:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/emerald.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[3300].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 3600:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/sapphire.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[3600].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 3900:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/amethyst.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[3900].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 4200:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/bronze.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[4200].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 4500:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/silver.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[4500].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 4800:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/sakura.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[4800].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 5100:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/tigerlily.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[5100].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 5400:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/daffodil.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[5400].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 5700:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/clover.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[5700].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 6000:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/hydrangea.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[6000].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 6300:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/lilac.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[6300].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 6600:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/chocolatecosmos.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[6600].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 6900:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/magnolia.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[6900].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 7200:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/mars.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[7200].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 7500:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/saturn.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[7500].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 7800:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/venus.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[7800].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 8100:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/earth.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[8100].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 8400:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/neptune.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[8400].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 8700:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/uranus.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[8700].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 9000:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/jupiter.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[9000].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 9300:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/mercury.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[9300].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 9600:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/fire.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[9600].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 9900:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/wind.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[9900].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 10200:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/light.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[10200].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 10500:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/nature.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[10500].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 10800:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/water.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[10800].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 11100:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/darkness.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[11100].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 11400:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/ground.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[11400].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 11700:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/metal.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[11700].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 12000:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/lion.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[12000].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 12300:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/tiger.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[12300].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 12600:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/cheetah.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[12600].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 12900:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/panther.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[12900].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 13200:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/russianblue.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[13200].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 13500:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/chartreux.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[13500].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 13800:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/puma.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[13800].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 14100:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/himalayan.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[14100].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) + tradepend > 14400:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/levels/rainbow.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\">")
try:
content.write("<code>" + datelist[14400].strftime("%Y-%m-%d") + "</code>")
except:
content.write("<span title=\"recorded date pending trade completion\">tbc</span>")
content.write("</td>\n</tr>\n</tbody>\n</table>\n")
content.close()
footerwrite(thefile)
if __name__ == "__main__":
levelsgen()
print("Building portfolios page")
def portfoliosgen(colour=False):
if not os.path.isdir("build/portfolios"):
os.mkdir("build/portfolios")
if colour:
if not os.path.isdir("build/portfolios/" + colour):
os.mkdir("build/portfolios/" + colour)
thefile = "build/portfolios/" + colour + "/index.html"
else:
thefile = "build/portfolios/index.html"
if os.path.exists(thefile):
os.remove(thefile)
headerwrite(thefile,"portfolios")
content = open(thefile,"a")
content.write("<h1>portfolios</h1>\n")
if latestpalette + latestmonochrome > 0:
if latestpalette > 0:
content.write("<div class=\"foliocase\">\n")
portnumber = 1
for portfolio in portfolios:
if portfolio["type"] == "palette":
content.write(portfoliogen(portfolio,"palette",portnumber))
portnumber += 1
content.write("</div>\n")
if latestmonochrome > 0:
content.write("<div class=\"foliocase\">\n")
portnumber = 1
for portfolio in portfolios:
if portfolio["type"] == "monochrome":
content.write(portfoliogen(portfolio,"monochrome",portnumber))
portnumber += 1
content.write("</div>\n")
content.close()
footerwrite(thefile)
if __name__ == "__main__":
portfoliosgen()
print("Building collecting page")
def collectinggen(colour=False):
if not os.path.isdir("build/collecting"):
os.mkdir("build/collecting")
if colour:
if not os.path.isdir("build/collecting/" + colour):
os.mkdir("build/collecting/" + colour)
thefile = "build/collecting/" + colour + "/index.html"
else:
thefile = "build/collecting/index.html"
if os.path.exists(thefile):
os.remove(thefile)
headerwrite(thefile,"collecting")
content = open(thefile,"a")
content.write("<h1>decks in progress</h1>\n" + filterwrite("collecting",colour) + "<div>\n<h2 class=\"collectingheader\">High priority</h2>\n")
for deck in decklist:
if deck["priority"] == 1 and deck["mastered"] == False:
if colour:
if deck["colour"] == colour:
content.write(printdeck(deck,False))
else:
content.write(printdeck(deck,False))
content.write("</div>\n<div>\n<h2 class=\"collectingheader\">Medium priority</h2>\n")
for deck in decklist:
if deck["priority"] == 2 and deck["mastered"] == False:
if colour:
if deck["colour"] == colour:
content.write(printdeck(deck))
else:
content.write(printdeck(deck))
content.write("</div>\n<div>\n<h2 class=\"collectingheader\">Low priority</h2>\n")
for deck in decklist:
if deck["priority"] == 3 and deck["mastered"] == False:
if colour:
if deck["colour"] == colour:
content.write(printdeck(deck))
else:
content.write(printdeck(deck))
content.write("</div>\n")
content.close()
footerwrite(thefile)
def collectingall():
collectinggen()
for thevalue in values:
collectinggen(thevalue)
if __name__ == "__main__":
collectingall()
print("Building mass collecting pages")
masslist = sorted(list(variables.masscollect.keys()))
def massindexgen():
if not os.path.isdir("build/mass"):
os.mkdir("build/mass")
thefile = "build/mass/index.html"
if os.path.exists(thefile):
os.remove(thefile)
headerwrite(thefile,"mass")
content = open(thefile,"a")
content.write("<h1>mass collecting/keeping</h1>\n<ul>\n")
massindex = 1
for series in masslist:
content.write("<li><a href=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/mass/" + str(massindex) + "\">" + series + "</a></li>\n")
massindex += 1
content.write("</ul>\n")
content.close()
footerwrite(thefile)
def massseriesgen(series,massindex):
if not os.path.isdir("build/mass/" + str(massindex)):
os.mkdir("build/mass/" + str(massindex))
thefile = "build/mass/" + str(massindex) + "/index.html"
if os.path.exists(thefile):
os.remove(thefile)
headerwrite(thefile,"mass")
content = open(thefile,"a")
content.write("<h1>" + series + "</h1>\n<p><a href=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/mass\">back to mass decks page</a></p>\n<p>")
for deck in decklist:
if deck["mastered"]:
if series in deck["mass"] or series in deck["massmaster"]:
content.write("<img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/decks/" + deck["name"] + "/master.gif\" title=\"mastered " + deck["name"])
try:
if deck["name"] in variables.firstmasteries:
content.write(" (first)\" class=\"first")
except:
pass
content.write("\">")
content.write("</p><p>")
for card in cardlist:
if series in card["mass"]:
if card["dupe"] == False:
content.write(printcard(card))
content.write("</p>\n")
content.close()
footerwrite(thefile)
def massall():
massindexgen()
massindex = 1
for series in masslist:
massseriesgen(series,massindex)
massindex += 1
if __name__ == "__main__":
massall()
print("Building mastered page")
def masteredgen(colour=False):
if not os.path.isdir("build/mastered"):
os.mkdir("build/mastered")
if colour:
if not os.path.isdir("build/mastered/" + colour):
os.mkdir("build/mastered/" + colour)
thefile = "build/mastered/" + colour + "/index.html"
else:
thefile = "build/mastered/index.html"
if os.path.exists(thefile):
os.remove(thefile)
headerwrite(thefile,"mastered")
content = open(thefile,"a")
content.write("<h1>mastered decks</h1>\n")
content.write(filterwrite("mastered",colour))
for deck in decklist:
if deck["mastered"]:
if colour:
if deck["colour"] == colour:
content.write(printdeck(deck))
else:
content.write(printdeck(deck))
content.close()
footerwrite(thefile)
def masteredall():
masteredgen()
for thevalue in values:
masteredgen(thevalue)
if __name__ == "__main__":
masteredall()
print("Building trading page")
tradelist = []
sigtradelist = []
for card in cardlist:
if card["priority"] == 4:
tradelist.append(card)
elif card["priority"] == 5:
sigtradelist.append(card)
alltradelist = tradelist + sigtradelist
def tradegen(colour=False):
if not os.path.isdir("build/trade"):
os.mkdir("build/trade")
if colour:
if not os.path.isdir("build/trade/" + colour):
os.mkdir("build/trade/" + colour)
thefile = "build/trade/" + colour + "/index.html"
else:
thefile = "build/trade/index.html"
if os.path.exists(thefile):
os.remove(thefile)
headerwrite(thefile,"trade")
content = open(thefile,"a")
content.write("<h1>available for trade</h1>\n" + filterwrite("trade",colour,True,True) + "<p class=\"tradeterms\">")
if len(variables.tradestatement) > 0:
content.write(variables.tradestatement + " ")
content.write("Trade cards <a href=\"" + variables.tradepost + "\">here</a></p>\n<p><textarea readonly>")
precomma = False
for card in alltradelist:
if colour:
if colour == "recent":
if card["received"].month == datetime.datetime.now().month and card["received"].year == datetime.datetime.now().year:
if precomma:
content.write(", ")
content.write(card["name"])
precomma = True
elif card["colour"] == colour:
if precomma:
content.write(", ")
content.write(card["name"])
precomma = True
else:
if precomma:
content.write(", ")
content.write(card["name"])
precomma = True
content.write("</textarea>\n<p>")
for card in alltradelist:
if colour:
if colour == "recent":
if card["received"].month == datetime.datetime.now().month and card["received"].year == datetime.datetime.now().year:
content.write(printcard(card))
elif card["colour"] == colour:
content.write(printcard(card))
else:
content.write(printcard(card))
content.write("</p>\n")
content.close()
footerwrite(thefile)
def tradeall():
tradegen()
for thevalue in values:
tradegen(thevalue)
tradegen("recent")
tradegen("sig")
if __name__ == "__main__":
tradeall()
print("Building wanted page")
def wantedgen():
if not os.path.isdir("build/wanted"):
os.mkdir("build/wanted")
if os.path.exists("build/wanted/index.html"):
os.remove("build/wanted/index.html")
thefile = "build/wanted/index.html"
headerwrite(thefile,"wanted")
content = open(thefile,"a")
content.write("<h1>wanted cards</h1>\n<h2>High priority</h2>\n<textarea readonly>")
precomma = False
for card in wantedlist:
if card["priority"] == 1:
if precomma:
content.write(", ")
content.write(card["name"])
precomma = True
precomma = False
content.write("</textarea>\n<p>")
for card in wantedlist:
if card["priority"] == 1:
if precomma:
content.write(", ")
content.write(cardtext(card))
precomma = True
precomma = False
content.write("</p>\n<h2>Medium priority</h2>\n<textarea readonly>")
for card in wantedlist:
if card["priority"] == 2:
if precomma:
content.write(", ")
content.write(card["name"])
precomma = True
precomma = False
content.write("</textarea>\n<p>")
for card in wantedlist:
if card["priority"] == 2:
if precomma:
content.write(", ")
content.write(cardtext(card))
precomma = True
precomma = False
content.write("</p>\n<h2>Low priority</h2>\n<textarea readonly>")
for card in wantedlist:
if card["priority"] == 3:
if precomma:
content.write(", ")
content.write(card["name"])
precomma = True
precomma = False
content.write("</textarea>\n<p>")
for card in wantedlist:
if card["priority"] == 3:
if precomma:
content.write(", ")
content.write(cardtext(card))
precomma = True
content.write("</p>\n")
content.close()
footerwrite(thefile)
if __name__ == "__main__":
wantedgen()
print("Building search page")
def searchgen():
if not os.path.isdir("build/search"):
os.mkdir("build/search")
thefile = "build/search/index.html"
if os.path.exists(thefile):
os.remove(thefile)
headerwrite(thefile,"search")
content = open(thefile,"a")
content.write("<h1>card search</h1>\n<form>\n <label for=\"cardinput\">Enter a list of cards and/or decks here:</label>\n <textarea id=\"cardinput\" name=\"cardinput\"></textarea>\n <input type=\"button\" value=\"Search\" onclick=\"searchcards()\">\n</form>\n<p id=\"hpwfound\"></p>\n<p id=\"mpwfound\"></p>\n<p id=\"lpwfound\"></p>\n<p id=\"hptfound\"></p>\n<p id=\"mptfound\"></p>\n<p id=\"lptfound\"></p>\n<p id=\"nothing\"></p>\n<script>\n function searchcards() {\n const thecards = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20'];\n const hpw = [")
precomma = False
for card in wantedlist:
if card["priority"] == 1:
if precomma:
content.write(", ")
content.write("'" + card["name"] + "'")
precomma = True
content.write("];\n const mpw = [")
precomma = False
for card in wantedlist:
if card["priority"] == 2:
if precomma:
content.write(", ")
content.write("'" + card["name"] + "'")
precomma = True
content.write("];\n const lpw = [")
precomma = False
for card in wantedlist:
if card["priority"] == 3:
if precomma:
content.write(", ")
content.write("'" + card["name"] + "'")
precomma = True
content.write("];\n const hpt = [")
precomma = False
for card in cardlist:
if card["priority"] == 2:
if precomma:
content.write(", ")
content.write("'" + card["name"] + "'")
precomma = True
content.write("];\n const mpt = [")
precomma = False
for card in cardlist:
if card["priority"] == 3:
if card["colour"] != "special":
if precomma:
content.write(", ")
content.write("'" + card["name"] + "'")
precomma = True
content.write("];\n const lpt = [")
precomma = False
for card in cardlist:
if card["priority"] == 4:
if precomma:
content.write(", ")
content.write("'" + card["name"] + "'")
precomma = True
content.write("];\n const searchstring = document.getElementById('cardinput').value;\n const dupesarray = searchstring.replaceAll(' ','').replaceAll('\\n',',').replaceAll('\\r',',').replaceAll('🔴','').replaceAll('🟠','').replaceAll('🟡','').replaceAll('🟢','').replaceAll('🔵','').replaceAll('🟣','').replaceAll('🟤','').replaceAll('','').replaceAll('','').replaceAll('🌈','').replaceAll('','').toLowerCase().split(',');\n const searcharray = [ ...new Set(dupesarray) ];\n const hpwfound = [];\n const mpwfound = [];\n const lpwfound = [];\n const hptfound = [];\n const mptfound = [];\n const lptfound = [];\n for (const element of searcharray) {\n let cardend = element.substring(element.length, element.length - 2);\n if (!(thecards.includes(cardend))) {\n for (const ending of thecards) {\n searcharray.push(element + ending);\n };\n };\n };\n for (const element of searcharray) {\n if (hpw.includes(element)) {\n hpwfound.push(element);\n };\n if (mpw.includes(element)) {\n mpwfound.push(element);\n };\n if (lpw.includes(element)) {\n lpwfound.push(element);\n };\n if (hpt.includes(element)) {\n hptfound.push(element);\n };\n if (mpt.includes(element)) {\n mptfound.push(element);\n };\n if (lpt.includes(element)) {\n lptfound.push(element);\n };\n };\n if ((hpwfound.length) > 0) {\n document.getElementById('hpwfound').innerHTML = '<span class=\"sorttitle\">Wanted (high priority):</span> <span class=\"searchresults\">' + hpwfound.join(', ') + '</span>';\n } else {\n document.getElementById('hpwfound').innerHTML = '';\n };\n if ((mpwfound.length) > 0) {\n document.getElementById('mpwfound').innerHTML = '<span class=\"sorttitle\">Wanted (medium priority):</span> <span class=\"searchresults\">' + mpwfound.join(', ') + '</span>';\n } else {\n document.getElementById('mpwfound').innerHTML = '';\n };\n if ((lpwfound.length) > 0) {\n document.getElementById('lpwfound').innerHTML = '<span class=\"sorttitle\">Wanted (low priority):</span> <span class=\"searchresults\">' + lpwfound.join(', ') + '</span>';\n } else {\n document.getElementById('lpwfound').innerHTML = '';\n };")
if variables.trademedium:
content.write("\n if ((hptfound.length) > 0) {\n document.getElementById('hptfound').innerHTML = '<span class=\"sorttitle\">Will trade out for <a href=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/wanted\">high priority cards</a> only:</span> <span class=\"searchresults\">' + hptfound.join(', ') + '</span>';\n } else {\n document.getElementById('hptfound').innerHTML = '';\n };")
content.write("\n if ((mptfound.length) > 0) {\n document.getElementById('mptfound').innerHTML = '<span class=\"sorttitle\">Will trade out for <a href=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/wanted\">high or medium priority cards</a>:</span> <span class=\"searchresults\">' + mptfound.join(', ') + '</span>';\n } else {\n document.getElementById('mptfound').innerHTML = '';\n };\n if ((lptfound.length) > 0) {\n document.getElementById('lptfound').innerHTML = '<span class=\"sorttitle\">Will trade out for <a href=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/wanted\">any wanted card</a>:</span> <span class=\"searchresults\">' + lptfound.join(', ') + '</span>';\n } else {\n document.getElementById('lptfound').innerHTML = '';\n };\n if ((hpwfound.length) + (mpwfound.length) + (lpwfound.length)")
if variables.trademedium:
content.write(" + (hptfound.length)")
content.write(" + (mptfound.length) + (lptfound.length) == 0) {\n document.getElementById('nothing').innerHTML = 'No results';\n } else {\n document.getElementById('nothing').innerHTML = '';\n }\n }\n</script>\n </main>\n </body>\n</html>")
content.close()
if __name__ == "__main__":
searchgen()
print("Building log page")
def loggen(month=False):
if month:
if not os.path.isdir("build/log/month"):
os.mkdir("build/log/month")
if os.path.exists("build/log/month/index.html"):
os.remove("build/log/month/index.html")
thefile = "build/log/month/index.html"
else:
if not os.path.isdir("build/log"):
os.mkdir("build/log")
if os.path.exists("build/log/index.html"):
os.remove("build/log/index.html")
thefile = "build/log/index.html"
headerwrite(thefile,"log")
content = open(thefile,"a")
content.write("<h1>log</h1>\n<p class=\"typefilter\">")
if month:
content.write("<a href=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/log\">Show all</a>")
else:
content.write("<a href=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/log/month\">Show current month only</a>")
content.write("</p>\n")
for event in logitems:
if month:
if event["date"].month == datetime.datetime.now().month and event["date"].year == datetime.datetime.now().year:
admit = True
else:
admit = False
else:
admit = True
if admit == True:
content.write("<p><code>" + event["date"].strftime("%Y-%m-%d") + "</code> <a href=\"" + event["url"] + "\">[" + event["name"] + "]</a>: ")
try:
if event["received"]:
content.write("Received ")
receivedlist = sorted(event["received"], key=lambda d: d["name"])
position = 1
for card in receivedlist:
content.write(cardtext(card))
if len(receivedlist) != position:
content.write(", ")
position += 1
content.write(".")
try:
if event["lost"]:
content.write(" ")
except:
try:
if event["crayons"]:
content.write(" ")
except:
pass
except:
pass
try:
if event["lost"]:
content.write("Lost ")
lostlist = sorted(event["lost"], key=lambda d: d["name"])
position = 1
for card in lostlist:
content.write(cardtext(card))
if len(lostlist) != position:
content.write(", ")
position += 1
content.write(".")
try:
if event["crayons"]:
content.write(" ")
except:
pass
except:
pass
try:
if event["crayons"]:
content.write("Crayons: ")
try:
content.write(crayonlog("red",event))
if list(event["crayons"])[-1] != "red":
content.write(", ")
except:
pass
try:
content.write(crayonlog("orange",event))
if list(event["crayons"])[-1] != "orange":
content.write(", ")
except:
pass
try:
content.write(crayonlog("yellow",event))
if list(event["crayons"])[-1] != "yellow":
content.write(", ")
except:
pass
try:
content.write(crayonlog("green",event))
if list(event["crayons"])[-1] != "green":
content.write(", ")
except:
pass
try:
content.write(crayonlog("blue",event))
if list(event["crayons"])[-1] != "blue":
content.write(", ")
except:
pass
try:
content.write(crayonlog("purple",event))
if list(event["crayons"])[-1] != "purple":
content.write(", ")
except:
pass
try:
content.write(crayonlog("brown",event))
if list(event["crayons"])[-1] != "brown":
content.write(", ")
except:
pass
try:
content.write(crayonlog("grey",event))
except:
pass
content.write(".")
except:
pass
content.write("</p>\n")
content.close()
footerwrite(thefile)
def logall():
loggen(False)
loggen(True)
if __name__ == "__main__":
logall()