- remove gaps between images in paragraphs

- allow building site in a subfolder
- remove duplicates from search function
master
trémeur 5 days ago
parent 19c56c6abf
commit 85245c328b

@ -18,6 +18,7 @@ Python scripts to generate a mobile-friendly static site for tracking tcg cards
- Edit =variables.py= to set the variables as follows: - Edit =variables.py= to set the variables as follows:
- =servername=: name set for your remote in =rclone= - =servername=: name set for your remote in =rclone=
- =serverpath=: path to the site root on the server (with leading slash, without trailing slash) - =serverpath=: path to the site root on the server (with leading slash, without trailing slash)
- =subfolder=: subfolder under your (sub)domain in which the TCG pages will be located (leave as an empty string if they are at the top level)
- =name=: the name you use in the game - =name=: the name you use in the game
- =highpriority=: a list of high priority decks youre collecting - =highpriority=: a list of high priority decks youre collecting
- =tradepost=: URL of your trade post on Dreamwidth - =tradepost=: URL of your trade post on Dreamwidth

@ -160,7 +160,7 @@ h2.collectingheader {
background-color: Canvas; background-color: Canvas;
} }
p#masteredcarousel img { p img {
vertical-align: middle; vertical-align: middle;
} }

768
new.py

@ -433,54 +433,87 @@ if variables.keepsig == True:
def headerwrite(thefile,pagename): def headerwrite(thefile,pagename):
header = open(thefile,"a") 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=\"/style.css\">\n <link rel=\"stylesheet\" href=\"/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>") 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": if pagename == "index":
header.write("home") header.write("home")
else: else:
header.write("<a href=\"/\">home</a>") header.write("<a href=\"")
if len(variables.subfolder) > 0:
header.write("/" + variables.subfolder)
header.write("/\">home</a>")
header.write("</li>\n <li>") header.write("</li>\n <li>")
if pagename == "collecting": if pagename == "collecting":
header.write("collecting") header.write("collecting")
else: else:
header.write("<a href=\"/collecting\">collecting</a>") header.write("<a href=\"")
if len(variables.subfolder) > 0:
header.write("/" + variables.subfolder)
header.write("/collecting\">collecting</a>")
header.write("</li>\n <li>") header.write("</li>\n <li>")
if pagename == "mass": if pagename == "mass":
header.write("mass collecting") header.write("mass collecting")
else: else:
header.write("<a href=\"/mass\">mass collecting</a>") header.write("<a href=\"")
if len(variables.subfolder) > 0:
header.write("/" + variables.subfolder)
header.write("/mass\">mass collecting</a>")
header.write("</li>\n <li>") header.write("</li>\n <li>")
if pagename == "mastered": if pagename == "mastered":
header.write("mastered") header.write("mastered")
else: else:
header.write("<a href=\"/mastered\">mastered</a>") header.write("<a href=\"")
if len(variables.subfolder) > 0:
header.write("/" + variables.subfolder)
header.write("/mastered\">mastered</a>")
header.write("</li>\n") header.write("</li>\n")
if variables.ownedpage: if variables.ownedpage:
header.write(" <li>") header.write(" <li>")
if pagename == "owned": if pagename == "owned":
header.write("owned") header.write("owned")
else: else:
header.write("<a href=\"/owned\">owned</a>") header.write("<a href=\"")
if len(variables.subfolder) > 0:
header.write("/" + variables.subfolder)
header.write("/owned\">owned</a>")
header.write("</li>\n") header.write("</li>\n")
header.write(" <li>") header.write(" <li>")
if pagename == "trade": if pagename == "trade":
header.write("trading") header.write("trading")
else: else:
header.write("<a href=\"/trade\">trading</a>") header.write("<a href=\"")
if len(variables.subfolder) > 0:
header.write("/" + variables.subfolder)
header.write("/trade\">trading</a>")
header.write("</li>\n <li>") header.write("</li>\n <li>")
if pagename == "wanted": if pagename == "wanted":
header.write("wanted") header.write("wanted")
else: else:
header.write("<a href=\"/wanted\">wanted</a>") header.write("<a href=\"")
if len(variables.subfolder) > 0:
header.write("/" + variables.subfolder)
header.write("/wanted\">wanted</a>")
header.write("</li>\n <li>") header.write("</li>\n <li>")
if pagename == "search": if pagename == "search":
header.write("search") header.write("search")
else: else:
header.write("<a href=\"/search\">search</a>") header.write("<a href=\"")
if len(variables.subfolder) > 0:
header.write("/" + variables.subfolder)
header.write("/search\">search</a>")
header.write("</li>\n <li>") header.write("</li>\n <li>")
if pagename == "log": if pagename == "log":
header.write("log") header.write("log")
else: else:
header.write("<a href=\"/log\">log</a>") 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.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() header.close()
@ -492,18 +525,34 @@ def footerwrite(thefile):
def printcard(card): def printcard(card):
if type(card) == dict: if type(card) == dict:
if card["colour"] == "sig": if card["colour"] == "sig":
return "<img src=\"/decks/sigs/" + card["name"][4:] + ".gif\" title=\"" + card["name"] + "\" loading=\"lazy\">" 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: else:
deck = card["name"][:-2] deck = card["name"][:-2]
cardid = card["name"][-2:] cardid = card["name"][-2:]
return "<img src=\"/decks/" + deck + "/" + cardid + ".gif\" title=\"" + card["name"] + "\" loading=\"lazy\">" 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: elif type(card) == str:
if card[0:4] == "sig_": if card[0:4] == "sig_":
return "<img src=\"/decks/sigs/" + card[4:] + ".gif\" title=\"" + card + "\" loading=\"lazy\">" imgstring = "<img src=\""
if len(variables.subfolder) > 0:
imgstring += "/" + variables.subfolder
imgstring += "/decks/sigs/" + card[4:] + ".gif\" title=\"" + card + "\" loading=\"lazy\">"
return imgstring
else: else:
deck = card[:-2] deck = card[:-2]
cardid = card[-2:] cardid = card[-2:]
return "<img src=\"/decks/" + deck + "/" + cardid + ".gif\" title=\"" + card + "\" loading=\"lazy\">" 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): def cardtext(card):
cardtext = "<span class=\"cardname\">" cardtext = "<span class=\"cardname\">"
@ -815,16 +864,52 @@ def filterwrite(page,colour=False,sigs=False):
filterstring += "gray" filterstring += "gray"
else: else:
filterstring += colour filterstring += colour
filterstring += "</b></span>. <a href=\"/" + page + "\">Show all</a>" filterstring += "</b></span>. <a href=\""
if len(variables.subfolder) > 0:
filterstring += "/" + variables.subfolder
filterstring += "/" + page + "\">Show all</a>"
else: else:
filterstring += "Filter: <a href=\"/" + page + "/red\" title=\"red\">🔴</a> <a href=\"/" + page + "/orange\" title=\"orange\">🟠</a> <a href=\"/" + page + "/yellow\" title=\"yellow\">🟡</a> <a href=\"/" + page + "/green\" title=\"green\">🟢</a> <a href=\"/" + page + "/blue\" title=\"blue\">🔵</a> <a href=\"/" + page + "/purple\" title=\"purple\">🟣</a> <a href=\"/" + page + "/brown\" title=\"brown\">🟤</a> <a href=\"/" + page + "/gray\" title=\"" filterstring += "Filter: <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: if variables.british:
filterstring += "grey" filterstring += "grey"
else: else:
filterstring += "gray" filterstring += "gray"
filterstring += "\">⚪</a> <a href=\"/" + page + "/special\" title=\"special\">✨</a> <a href=\"/" + page + "/limited\" title=\"limited\">🌈</a>" 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: if sigs:
filterstring += " <a href=\"/" + page + "/sig\" title=\"sig\">✍</a>" filterstring += " <a href=\""
if len(variables.subfolder) > 0:
filterstring += "/" + variables.subfolder
filterstring += "/" + page + "/sig\" title=\"sig\">✍</a>"
filterstring += "</p>\n" filterstring += "</p>\n"
return filterstring return filterstring
@ -863,7 +948,10 @@ def printdeck(deck,fold=True):
found = True found = True
break break
if found == False: if found == False:
deckstring += "<img src=\"/decks/" + deck["name"] + "/00.gif\" loading=\"lazy\">" 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: if deck["name"] + teststring in pends:
deckstring += "<p class=\"pending\">pending</p>" deckstring += "<p class=\"pending\">pending</p>"
deckstring += "</td>\n" deckstring += "</td>\n"
@ -871,7 +959,10 @@ def printdeck(deck,fold=True):
deckstring += " </tr>\n" deckstring += " </tr>\n"
test += 1 test += 1
if deck["mastered"]: if deck["mastered"]:
deckstring += " <tr>\n <td colspan=\"5\" align=\"center\"><img src=\"/decks/" + deck["name"] + "/master.gif\" title=\"mastered " + deck["name"] 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: try:
if deck["name"] in variables.firstmasteries: if deck["name"] in variables.firstmasteries:
deckstring += " (first)\" class=\"first" deckstring += " (first)\" class=\"first"
@ -1042,28 +1133,61 @@ def indexgen():
else: else:
rank = "red" rank = "red"
rankcode = re.sub(" ","",rank) rankcode = re.sub(" ","",rank)
content.write("<a href=\"/levels\"><img src=\"/assets/levels/" + rankcode + ".gif\"></a><img src=\"/decks/sigs/" + variables.name.lower() + ".gif\" loading=\"lazy\">\n<ul>\n<li>player name: <span class=\"name\">" + variables.name + "</span></li>\n<li>" + str(len(cardlist)) + " 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\" target=\"_blank\">code</a> under construction</li>\n") 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><img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/decks/sigs/" + variables.name.lower() + ".gif\" loading=\"lazy\">\n<ul>\n<li>player name: <span class=\"name\">" + variables.name + "</span></li>\n<li>" + str(len(cardlist)) + " 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\" target=\"_blank\">code</a> under construction</li>\n")
if len(variables.misclink["text"]) > 0: if len(variables.misclink["text"]) > 0:
content.write("<li><a href=\"" + variables.misclink["link"] + "\">" + variables.misclink["text"] + "</a></li>\n") content.write("<li><a href=\"" + variables.misclink["link"] + "\">" + variables.misclink["text"] + "</a></li>\n")
content.write("</ul>\n") content.write("</ul>\n")
if crayred + crayorange + crayyellow + craygreen + crayblue + craypurple + craybrown + craygrey > 0: if crayred + crayorange + crayyellow + craygreen + crayblue + craypurple + craybrown + craygrey > 0:
content.write("<table id=\"crayontable\">\n<tbody>\n<tr>\n") content.write("<table id=\"crayontable\">\n<tbody>\n<tr>\n")
if crayred > 0: if crayred > 0:
content.write("<td class=\"red\"><img src=\"/assets/crayons/crayon1.gif\" class=\"crayon\" title=\"red\"> × " + str(crayred) + "</td>\n") 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: if crayorange > 0:
content.write("<td class=\"orange\"><img src=\"/assets/crayons/crayon2.gif\" class=\"crayon\" title=\"orange\"> × " + str(crayorange) + "</td>\n") 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: if crayyellow > 0:
content.write("<td class=\"yellow\"><img src=\"/assets/crayons/crayon3.gif\" class=\"crayon\" title=\"yellow\"> × " + str(crayyellow) + "</td>\n") 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: if craygreen > 0:
content.write("<td class=\"green\"><img src=\"/assets/crayons/crayon4.gif\" class=\"crayon\" title=\"green\"> × " + str(craygreen) + "</td>\n") 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: if crayblue > 0:
content.write("<td class=\"blue\"><img src=\"/assets/crayons/crayon5.gif\" class=\"crayon\" title=\"blue\"> × " + str(crayblue) + "</td>\n") 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: if craypurple > 0:
content.write("<td class=\"purple\"><img src=\"/assets/crayons/crayon6.gif\" class=\"crayon\" title=\"purple\"> × " + str(craypurple) + "</td>\n") 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: if craybrown > 0:
content.write("<td class=\"brown\"><img src=\"/assets/crayons/crayon7.gif\" class=\"crayon\" title=\"brown\"> × " + str(craybrown) + "</td>\n") 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: if craygrey > 0:
content.write("<td class=\"grey\"><img src=\"/assets/crayons/crayon8.gif\" class=\"crayon\" title=\"") 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: if variables.british:
content.write("grey") content.write("grey")
else: else:
@ -1073,14 +1197,20 @@ def indexgen():
tradecommon = list((Counter(tradeout) & Counter(tradein)).elements()) tradecommon = list((Counter(tradeout) & Counter(tradein)).elements())
sketch = len(tradecommon) sketch = len(tradecommon)
if sketch > 0: if sketch > 0:
content.write("<table class=\"sketchpads\">\n<tbody>\n<tr>\n<td><img src=\"/assets/sketch/") 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: if sketch % 20 < 10:
content.write("0" + str(sketch % 20)) content.write("0" + str(sketch % 20))
else: else:
content.write(str(sketch % 20)) content.write(str(sketch % 20))
content.write(".gif\"></td>\n") content.write(".gif\"></td>\n")
if sketch > 19: if sketch > 19:
content.write("<td><img src=\"/assets/sketch/20.gif\" title=\"") 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 sketchdifference = int(sketch / 20) - redeemedsketch
if sketchdifference > 0: if sketchdifference > 0:
content.write(str(sketchdifference) + " to turn in") content.write(str(sketchdifference) + " to turn in")
@ -1092,7 +1222,10 @@ def indexgen():
content.write("<td align=\"center\">" + str(int(sketch / 20)) + " completed</td>\n") content.write("<td align=\"center\">" + str(int(sketch / 20)) + " completed</td>\n")
content.write("</tr>\n</tbody>\n</table>") content.write("</tr>\n</tbody>\n</table>")
if latestpalette + latestmonochrome > 0: if latestpalette + latestmonochrome > 0:
content.write("<a href=\"/portfolios\">\n<div class=\"foliocase\">\n") content.write("<a href=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/portfolios\">\n<div class=\"foliocase\">\n")
if latestpalette > 0: if latestpalette > 0:
content.write(portfoliogen(portfolios[latestpalette-1],"palette",palettes)) content.write(portfoliogen(portfolios[latestpalette-1],"palette",palettes))
if latestmonochrome > 0: if latestmonochrome > 0:
@ -1109,7 +1242,10 @@ def indexgen():
masteredcount = 0 masteredcount = 0
for deck in mastereddecks: for deck in mastereddecks:
if masteredcount < variables.maxmastered: if masteredcount < variables.maxmastered:
content.write("<img src=\"/decks/" + deck["name"] + "/master.gif\" title=\"mastered " + deck["name"]) 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: try:
if deck["name"] in variables.firstmasteries: if deck["name"] in variables.firstmasteries:
content.write(" (first)\" class=\"first") content.write(" (first)\" class=\"first")
@ -1118,7 +1254,10 @@ def indexgen():
content.write("\">") content.write("\">")
masteredcount += 1 masteredcount += 1
if len(mastereddecks) > variables.maxmastered: if len(mastereddecks) > variables.maxmastered:
content.write(" <a href=\"mastered\">see&nbsp;all</a>") content.write(" <a href=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("mastered\">see&nbsp;all</a>")
content.write("</p>\n") content.write("</p>\n")
sigs = [] sigs = []
for card in cardlist: for card in cardlist:
@ -1139,7 +1278,10 @@ def indexgen():
content.write("<h2>coupons</h2>\n<p>") content.write("<h2>coupons</h2>\n<p>")
for coupon in coupons: for coupon in coupons:
for key,value in coupon.items(): for key,value in coupon.items():
content.write("<img src=\"/assets/coupons/" + key + ".png\" class=\"coupon") content.write("<img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/coupons/" + key + ".png\" class=\"coupon")
if value == 0: if value == 0:
content.write(" expired\" title=\"expired\"") content.write(" expired\" title=\"expired\"")
else: else:
@ -1174,9 +1316,15 @@ def indexgen():
content.write("<h2>donations</h2>\n<p>") content.write("<h2>donations</h2>\n<p>")
for donation in donations: for donation in donations:
if donation["type"] == "deck": if donation["type"] == "deck":
content.write("<img src=\"/decks/" + donation["name"] + "/00.gif\" loading=\"lazy\">") 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": elif donation["type"] == "mastered":
content.write("<img src=\"/decks/" + donation["name"] + "/master.gif\" title=\"mastered " + donation["name"]) 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: try:
if donation["name"] in variables.firstmasteries: if donation["name"] in variables.firstmasteries:
content.write(" (first)\" class=\"first") content.write(" (first)\" class=\"first")
@ -1201,231 +1349,290 @@ def levelsgen():
thefile = "build/levels/index.html" thefile = "build/levels/index.html"
headerwrite(thefile,"levels") headerwrite(thefile,"levels")
content = open(thefile,"a") content = open(thefile,"a")
content.write("<h1>levels</h1>\n<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/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") content.write("<h1>levels</h1>\n<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
try: if len(variables.subfolder) > 0:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/orange.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[100].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("/" + variables.subfolder)
except: 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")
pass if len(cardlist) > 100:
try: content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/yellow.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[200].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") if len(variables.subfolder) > 0:
except: content.write("/" + variables.subfolder)
pass content.write("/assets/levels/orange.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[100].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
try: if len(cardlist) > 200:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/green.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[300].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
except: if len(variables.subfolder) > 0:
pass content.write("/" + variables.subfolder)
try: content.write("/assets/levels/yellow.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[200].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/blue.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[400].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") if len(cardlist) > 300:
except: content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
pass if len(variables.subfolder) > 0:
try: content.write("/" + variables.subfolder)
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/purple.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[500].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("/assets/levels/green.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[300].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
except: if len(cardlist) > 400:
pass content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
try: if len(variables.subfolder) > 0:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/brown.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[600].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("/" + variables.subfolder)
except: content.write("/assets/levels/blue.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[400].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
pass if len(cardlist) > 500:
try: content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/gray.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[700].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") if len(variables.subfolder) > 0:
except: content.write("/" + variables.subfolder)
pass content.write("/assets/levels/purple.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[500].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
try: if len(cardlist) > 600:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/strawberry.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[800].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
except: if len(variables.subfolder) > 0:
pass content.write("/" + variables.subfolder)
try: content.write("/assets/levels/brown.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[600].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/tangerine.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[1000].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") if len(cardlist) > 700:
except: content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
pass if len(variables.subfolder) > 0:
try: content.write("/" + variables.subfolder)
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/lemon.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[1200].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("/assets/levels/gray.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[700].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
except: if len(cardlist) > 800:
pass content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
try: if len(variables.subfolder) > 0:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/lime.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[1400].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("/" + variables.subfolder)
except: content.write("/assets/levels/strawberry.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[800].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
pass if len(cardlist) > 1000:
try: content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/blueberry.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[1600].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") if len(variables.subfolder) > 0:
except: content.write("/" + variables.subfolder)
pass content.write("/assets/levels/tangerine.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[1000].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
try: if len(cardlist) > 1200:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/grape.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[1800].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
except: if len(variables.subfolder) > 0:
pass content.write("/" + variables.subfolder)
try: content.write("/assets/levels/lemon.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[1200].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/apricot.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[2000].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") if len(cardlist) > 1400:
except: content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
pass if len(variables.subfolder) > 0:
try: content.write("/" + variables.subfolder)
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/dragonfruit.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[2200].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("/assets/levels/lime.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[1400].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
except: if len(cardlist) > 1600:
pass content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
try: if len(variables.subfolder) > 0:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/ruby.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[2400].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("/" + variables.subfolder)
except: content.write("/assets/levels/blueberry.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[1600].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
pass if len(cardlist) > 1800:
try: content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/amber.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[2700].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") if len(variables.subfolder) > 0:
except: content.write("/" + variables.subfolder)
pass content.write("/assets/levels/grape.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[1800].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
try: if len(cardlist) > 2000:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/gold.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[3000].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
except: if len(variables.subfolder) > 0:
pass content.write("/" + variables.subfolder)
try: content.write("/assets/levels/apricot.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[2000].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/emerald.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[3300].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") if len(cardlist) > 2200:
except: content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
pass if len(variables.subfolder) > 0:
try: content.write("/" + variables.subfolder)
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/sapphire.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[3600].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("/assets/levels/dragonfruit.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[2200].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
except: if len(cardlist) > 2400:
pass content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
try: if len(variables.subfolder) > 0:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/amethyst.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[3900].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("/" + variables.subfolder)
except: content.write("/assets/levels/ruby.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[2400].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
pass if len(cardlist) > 2700:
try: content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/bronze.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[4200].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") if len(variables.subfolder) > 0:
except: content.write("/" + variables.subfolder)
pass content.write("/assets/levels/amber.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[2700].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
try: if len(cardlist) > 3000:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/silver.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[4500].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
except: if len(variables.subfolder) > 0:
pass content.write("/" + variables.subfolder)
try: content.write("/assets/levels/gold.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[3000].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/sakura.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[4800].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") if len(cardlist) > 3300:
except: content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
pass if len(variables.subfolder) > 0:
try: content.write("/" + variables.subfolder)
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/tigerlily.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[5100].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("/assets/levels/emerald.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[3300].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
except: if len(cardlist) > 3600:
pass content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
try: if len(variables.subfolder) > 0:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/daffodil.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[5400].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("/" + variables.subfolder)
except: content.write("/assets/levels/sapphire.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[3600].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
pass if len(cardlist) > 3900:
try: content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/clover.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[5700].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") if len(variables.subfolder) > 0:
except: content.write("/" + variables.subfolder)
pass content.write("/assets/levels/amethyst.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[3900].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
try: if len(cardlist) > 4200:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/hydrangea.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[6000].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
except: if len(variables.subfolder) > 0:
pass content.write("/" + variables.subfolder)
try: content.write("/assets/levels/bronze.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[4200].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/lilac.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[6300].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") if len(cardlist) > 4500:
except: content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
pass if len(variables.subfolder) > 0:
try: content.write("/" + variables.subfolder)
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/chocolatecosmos.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[6600].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("/assets/levels/silver.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[4500].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
except: if len(cardlist) > 4800:
pass content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
try: if len(variables.subfolder) > 0:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/magnolia.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[6900].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("/" + variables.subfolder)
except: content.write("/assets/levels/sakura.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[4800].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
pass if len(cardlist) > 5100:
try: content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/mars.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[7200].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") if len(variables.subfolder) > 0:
except: content.write("/" + variables.subfolder)
pass content.write("/assets/levels/tigerlily.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[5100].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
try: if len(cardlist) > 5400:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/saturn.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[7500].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
except: if len(variables.subfolder) > 0:
pass content.write("/" + variables.subfolder)
try: content.write("/assets/levels/daffodil.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[5400].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/venus.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[7800].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") if len(cardlist) > 5700:
except: content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
pass if len(variables.subfolder) > 0:
try: content.write("/" + variables.subfolder)
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/earth.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[8100].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("/assets/levels/clover.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[5700].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
except: if len(cardlist) > 6000:
pass content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
try: if len(variables.subfolder) > 0:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/neptune.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[8400].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("/" + variables.subfolder)
except: content.write("/assets/levels/hydrangea.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[6000].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
pass if len(cardlist) > 6300:
try: content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/uranus.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[8700].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") if len(variables.subfolder) > 0:
except: content.write("/" + variables.subfolder)
pass content.write("/assets/levels/lilac.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[6300].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
try: if len(cardlist) > 6600:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/jupiter.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[9000].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
except: if len(variables.subfolder) > 0:
pass content.write("/" + variables.subfolder)
try: content.write("/assets/levels/chocolatecosmos.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[6600].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/mercury.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[9300].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") if len(cardlist) > 6900:
except: content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
pass if len(variables.subfolder) > 0:
try: content.write("/" + variables.subfolder)
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/fire.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[9600].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("/assets/levels/magnolia.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[6900].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
except: if len(cardlist) > 7200:
pass content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
try: if len(variables.subfolder) > 0:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/wind.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[9900].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("/" + variables.subfolder)
except: content.write("/assets/levels/mars.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[7200].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
pass if len(cardlist) > 7500:
try: content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/light.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[10200].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") if len(variables.subfolder) > 0:
except: content.write("/" + variables.subfolder)
pass content.write("/assets/levels/saturn.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[7500].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
try: if len(cardlist) > 7800:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/nature.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[10500].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
except: if len(variables.subfolder) > 0:
pass content.write("/" + variables.subfolder)
try: content.write("/assets/levels/venus.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[7800].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/water.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[10800].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") if len(cardlist) > 8100:
except: content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
pass if len(variables.subfolder) > 0:
try: content.write("/" + variables.subfolder)
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/darkness.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[11100].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("/assets/levels/earth.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[8100].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
except: if len(cardlist) > 8400:
pass content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
try: if len(variables.subfolder) > 0:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/ground.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[11400].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("/" + variables.subfolder)
except: content.write("/assets/levels/neptune.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[8400].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
pass if len(cardlist) > 8700:
try: content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/metal.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[11700].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") if len(variables.subfolder) > 0:
except: content.write("/" + variables.subfolder)
pass content.write("/assets/levels/uranus.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[8700].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
try: if len(cardlist) > 9000:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/lion.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[12000].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
except: if len(variables.subfolder) > 0:
pass content.write("/" + variables.subfolder)
try: content.write("/assets/levels/jupiter.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[9000].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/tiger.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[12300].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") if len(cardlist) > 9300:
except: content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
pass if len(variables.subfolder) > 0:
try: content.write("/" + variables.subfolder)
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/cheetah.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[12600].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("/assets/levels/mercury.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[9300].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
except: if len(cardlist) > 9600:
pass content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
try: if len(variables.subfolder) > 0:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/panther.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[12900].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("/" + variables.subfolder)
except: content.write("/assets/levels/fire.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[9600].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
pass if len(cardlist) > 9900:
try: content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/russianblue.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[13200].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") if len(variables.subfolder) > 0:
except: content.write("/" + variables.subfolder)
pass content.write("/assets/levels/wind.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[9900].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
try: if len(cardlist) > 10200:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/chartreux.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[13500].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
except: if len(variables.subfolder) > 0:
pass content.write("/" + variables.subfolder)
try: content.write("/assets/levels/light.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[10200].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/puma.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[13800].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") if len(cardlist) > 10500:
except: content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
pass if len(variables.subfolder) > 0:
try: content.write("/" + variables.subfolder)
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/himalayan.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[14100].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("/assets/levels/nature.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[10500].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
except: if len(cardlist) > 10800:
pass content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"")
try: if len(variables.subfolder) > 0:
content.write("<table class=\"level\">\n<tbody>\n<tr>\n<td align=\"center\"><img src=\"/assets/levels/rainbow.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[14400].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n") content.write("/" + variables.subfolder)
except: content.write("/assets/levels/water.gif\" loading=\"lazy\"></td>\n</tr>\n<tr>\n<td align=\"center\"><code>" + datelist[10800].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
pass if len(cardlist) > 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\"><code>" + datelist[11100].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) > 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\"><code>" + datelist[11400].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) > 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\"><code>" + datelist[11700].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) > 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\"><code>" + datelist[12000].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) > 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\"><code>" + datelist[12300].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) > 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\"><code>" + datelist[12600].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) > 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\"><code>" + datelist[12900].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) > 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\"><code>" + datelist[13200].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) > 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\"><code>" + datelist[13500].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) > 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\"><code>" + datelist[13800].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) > 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\"><code>" + datelist[14100].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
if len(cardlist) > 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\"><code>" + datelist[14400].strftime("%Y-%m-%d") + "</code></td>\n</tr>\n</tbody>\n</table>\n")
content.close() content.close()
footerwrite(thefile) footerwrite(thefile)
@ -1534,8 +1741,10 @@ def massindexgen():
content.write("<h1>mass collecting/keeping</h1>\n<ul>\n") content.write("<h1>mass collecting/keeping</h1>\n<ul>\n")
massindex = 1 massindex = 1
for series in masslist: for series in masslist:
content.write("<li><a href=\"/mass/" + str(massindex) + "\">" + series + "</a>") content.write("<li><a href=\"")
content.write("</li>\n") if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/mass/" + str(massindex) + "\">" + series + "</a></li>\n")
massindex += 1 massindex += 1
content.write("</ul>\n") content.write("</ul>\n")
content.close() content.close()
@ -1549,11 +1758,17 @@ def massseriesgen(series,massindex):
os.remove(thefile) os.remove(thefile)
headerwrite(thefile,"mass") headerwrite(thefile,"mass")
content = open(thefile,"a") content = open(thefile,"a")
content.write("<h1>" + series + "</h1>\n<p><a href=\"/mass\">back to mass decks page</a></p>\n<p>") 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: for deck in decklist:
if deck["mastered"]: if deck["mastered"]:
if series in deck["mass"] or series in deck["massmaster"]: if series in deck["mass"] or series in deck["massmaster"]:
content.write("<img src=\"/decks/" + deck["name"] + "/master.gif\" title=\"mastered " + deck["name"]) 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: try:
if deck["name"] in variables.firstmasteries: if deck["name"] in variables.firstmasteries:
content.write(" (first)\" class=\"first") content.write(" (first)\" class=\"first")
@ -1794,7 +2009,16 @@ def searchgen():
content.write(", ") content.write(", ")
content.write("'" + card["name"] + "'") content.write("'" + card["name"] + "'")
precomma = True precomma = True
content.write("];\n const searchstring = document.getElementById('cardinput').value;\n const searcharray = searchstring.replaceAll(' ','').replaceAll('\\n',',').replaceAll('\\r',',').toLowerCase().split(',');\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 } else if (mpw.includes(element)) {\n mpwfound.push(element);\n } else if (lpw.includes(element)) {\n lpwfound.push(element);\n } else if (hpt.includes(element)) {\n hptfound.push(element);\n } else if (mpt.includes(element)) {\n mptfound.push(element);\n } else 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 };\n if ((hptfound.length) > 0) {\n document.getElementById('hptfound').innerHTML = '<span class=\"sorttitle\">Will trade out for <a href=\"/wanted\">high priority cards</a> only:</span> <span class=\"searchresults\">' + hptfound.join(', ') + '</span>';\n } else {\n document.getElementById('hptfound').innerHTML = '';\n };\n if ((mptfound.length) > 0) {\n document.getElementById('mptfound').innerHTML = '<span class=\"sorttitle\">Will trade out for <a href=\"/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=\"/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) + (hptfound.length) + (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.write("];\n const searchstring = document.getElementById('cardinput').value;\n const dupesarray = searchstring.replaceAll(' ','').replaceAll('\\n',',').replaceAll('\\r',',').toLowerCase().split(',');\n var 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 } else if (mpw.includes(element)) {\n mpwfound.push(element);\n } else if (lpw.includes(element)) {\n lpwfound.push(element);\n } else if (hpt.includes(element)) {\n hptfound.push(element);\n } else if (mpt.includes(element)) {\n mptfound.push(element);\n } else 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 };\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 };\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) + (hptfound.length) + (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() content.close()
if __name__ == "__main__": if __name__ == "__main__":
@ -1818,9 +2042,15 @@ def loggen(month=False):
content = open(thefile,"a") content = open(thefile,"a")
content.write("<h1>log</h1>\n<p class=\"typefilter\">") content.write("<h1>log</h1>\n<p class=\"typefilter\">")
if month: if month:
content.write("<a href=\"/log\">Show all</a>") content.write("<a href=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/log\">Show all</a>")
else: else:
content.write("<a href=\"/log/month\">Show current month only</a>") 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") content.write("</p>\n")
for event in logitems: for event in logitems:
if month: if month:

@ -1,5 +1,6 @@
servername = "" servername = ""
serverpath = "" serverpath = ""
subfolder = ""
name = "your name" name = "your name"
highpriority = ["deckname","nameofadeck"] highpriority = ["deckname","nameofadeck"]
tradepost = "URL" tradepost = "URL"

Loading…
Cancel
Save