Add IDs to service links for CSS, make opening in new tabs optional

This commit is contained in:
mez 2025-08-31 18:58:40 +01:00
parent 3b9f830d95
commit a24391d01d
3 changed files with 99 additions and 16 deletions

View file

@ -54,6 +54,7 @@ Python scripts to generate a mobile-friendly static site for tracking tcg cards
- =maxmastered=: maximum number of most recently mastered decks to show on the index page - =maxmastered=: maximum number of most recently mastered decks to show on the index page
- =firstmasteries=: a list of decks you mastered first - =firstmasteries=: a list of decks you mastered first
- =misclink=: under ="link"=, a link to any page you choose, and under ~"text"~, text to display as the link - =misclink=: under ="link"=, a link to any page you choose, and under ~"text"~, text to display as the link
- =newtab=: whether links to external sites should open in new tabs
- =donations= : lists of donated decks and individual scrapbook cards - =donations= : lists of donated decks and individual scrapbook cards
- =masscollect=: list (python dict) of series/themes being mass collected, each containing at least one of ="series"= specifying a list of series from the online decklist, ="decks"= specifying a list of decks, or ="singles"= specifying a list of individual cards - =masscollect=: list (python dict) of series/themes being mass collected, each containing at least one of ="series"= specifying a list of series from the online decklist, ="decks"= specifying a list of decks, or ="singles"= specifying a list of individual cards
- =anniversary= : list of current anniversary decks - =anniversary= : list of current anniversary decks

113
colors.py
View file

@ -772,7 +772,43 @@ def headerwrite(thefile,pagename):
if len(variables.subfolder) > 0: if len(variables.subfolder) > 0:
header.write("/" + variables.subfolder) header.write("/" + variables.subfolder)
header.write("/log\">log</a>") header.write("/log\">log</a>")
header.write("</li>\n <li><a href=\"" + variables.tradepost + "\" target=\"_blank\">trade post @ dw</a></li>\n <li> <details>\n <summary>service links</summary>\n <ul>\n <li><a href=\"https://colors-tcg.dreamwidth.org/tag/%21activity+rewards\" target=\"_blank\">activity rewards</a></li>\n <li><a href=\"https://colors-tcg.dreamwidth.org/tag/%2Aart+shop\" target=\"_blank\">art shop</a></li>\n <li><a href=\"https://colors-tcg.dreamwidth.org/tag/%2Aart+studio\" target=\"_blank\">art studio</a></li>\n <li><a href=\"https://colors-tcg.dreamwidth.org/tag/%2Adonate+a+deck\" target=\"_blank\">deck donations</a></li>\n <li><a href=\"https://colors-tcg.dreamwidth.org/tag/%2Adonate+a+special+deck\" target=\"_blank\">special deck donations</a></li>\n <li><a href=\"https://colors-tcg.dreamwidth.org/tag/%2Adonate+graphics\" target=\"_blank\">graphics donations</a></li>\n <li><a href=\"https://colors-tcg.dreamwidth.org/tag/%21levels\" target=\"_blank\">levels</a></li>\n <li><a href=\"https://colors-tcg.dreamwidth.org/tag/%21masteries\" target=\"_blank\">masteries</a></li>\n <li><a href=\"https://colors-tcg.dreamwidth.org/tag/%2Aportfolios\" target=\"_blank\">portfolios</a></li>\n <li><a href=\"https://colors-tcg.eu/recycledart.php\" target=\"_blank\">recycled art</a></li>\n <li><a href=\"https://colors-tcg.dreamwidth.org/tag/%2Asignatures\" target=\"_blank\">signatures</a></li>\n </ul>\n </details>\n </li>\n </ul>\n </nav>\n <main>\n") header.write("</li>\n <li><a href=\"" + variables.tradepost + "\"")
if variables.newtab:
header.write(" target=\"_blank\"")
header.write(">trade post @ dw</a></li>\n <li> <details>\n <summary>service links</summary>\n <ul>\n <li id=\"activityrewards\"><a href=\"https://colors-tcg.dreamwidth.org/tag/%21activity+rewards\"")
if variables.newtab:
header.write(" target=\"_blank\"")
header.write(">activity rewards</a></li>\n <li id=\"artshop\"><a href=\"https://colors-tcg.dreamwidth.org/tag/%2Aart+shop\"")
if variables.newtab:
header.write(" target=\"_blank\"")
header.write(">art shop</a></li>\n <li id=\"artstudio\"><a href=\"https://colors-tcg.dreamwidth.org/tag/%2Aart+studio\"")
if variables.newtab:
header.write(" target=\"_blank\"")
header.write(">art studio</a></li>\n <li id=\"donation\"><a href=\"https://colors-tcg.dreamwidth.org/tag/%2Adonate+a+deck\"")
if variables.newtab:
header.write(" target=\"_blank\"")
header.write(">deck donations</a></li>\n <li id=\"specialdonation\"><a href=\"https://colors-tcg.dreamwidth.org/tag/%2Adonate+a+special+deck\"")
if variables.newtab:
header.write(" target=\"_blank\"")
header.write(">special deck donations</a></li>\n <li id=\"graphicdonation\"><a href=\"https://colors-tcg.dreamwidth.org/tag/%2Adonate+graphics\"")
if variables.newtab:
header.write(" target=\"_blank\"")
header.write(">graphics donations</a></li>\n <li id=\"redeemlevel\"><a href=\"https://colors-tcg.dreamwidth.org/tag/%21levels\"")
if variables.newtab:
header.write(" target=\"_blank\"")
header.write(">levels</a></li>\n <li id=\"redeemmastery\"><a href=\"https://colors-tcg.dreamwidth.org/tag/%21masteries\"")
if variables.newtab:
header.write(" target=\"_blank\"")
header.write(">masteries</a></li>\n <li id=\"redeemportfolio\"><a href=\"https://colors-tcg.dreamwidth.org/tag/%2Aportfolios\"")
if variables.newtab:
header.write(" target=\"_blank\"")
header.write(">portfolios</a></li>\n <li id=\"recycledart\"><a href=\"https://colors-tcg.eu/recycledart.php\"")
if variables.newtab:
header.write(" target=\"_blank\"")
header.write(">recycled art</a></li>\n <li id=\"getsigs\"><a href=\"https://colors-tcg.dreamwidth.org/tag/%2Asignatures\"")
if variables.newtab:
header.write(" target=\"_blank\"")
header.write(">signatures</a></li>\n </ul>\n </details>\n </li>\n </ul>\n </nav>\n <main>\n")
if variables.hiatus: if variables.hiatus:
header.write("<div id=\"hiatus\">\n<h1>hiatus</h1>\n<p>") header.write("<div id=\"hiatus\">\n<h1>hiatus</h1>\n<p>")
if type(variables.hiatus) == str: if type(variables.hiatus) == str:
@ -1021,7 +1057,10 @@ def portfoliogen(theportfolio,thetype,portnumber):
portstring += "" portstring += ""
break break
portstring += " " + specialdeck portstring += " " + specialdeck
portstring += "</td>\n</tr>\n<tr>\n<td colspan=\"2\"><a href=\"" + theportfolio["url"] + "\" target=\"_blank\">palette portfolio " portstring += "</td>\n</tr>\n<tr>\n<td colspan=\"2\"><a href=\"" + theportfolio["url"] + "\""
if variables.newtab:
portstring += " target=\"_blank\""
portstring += ">palette portfolio "
if portnumber < 10: if portnumber < 10:
portstring += "0" + str(portnumber) portstring += "0" + str(portnumber)
else: else:
@ -1094,7 +1133,10 @@ def portfoliogen(theportfolio,thetype,portnumber):
else: else:
portstring += "" portstring += ""
break break
portstring += " " + thedecks[7] + "</td>\n</tr>\n<tr>\n<td colspan=\"2\"><a href=\"" + theportfolio["url"] + "\" target=\"_blank\">monochrome portfolio " portstring += " " + thedecks[7] + "</td>\n</tr>\n<tr>\n<td colspan=\"2\"><a href=\"" + theportfolio["url"] + "\""
if variables.newtab:
portstring += " target=\"_blank\""
portstring += ">monochrome portfolio "
if portnumber < 10: if portnumber < 10:
portstring += "0" + str(portnumber) portstring += "0" + str(portnumber)
else: else:
@ -1230,7 +1272,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\"><a href=\"https://colors-tcg.eu/viewcards.php?deck=" + deck["name"] + "\" target=\"_blank\"><img src=\"" deckstring += " <tr>\n <td colspan=\"5\" align=\"center\"><a href=\"https://colors-tcg.eu/viewcards.php?deck=" + deck["name"] + "\""
if variables.newtab:
deckstring += " target=\"_blank\""
deckstring += "><img src=\""
if len(variables.subfolder) > 0: if len(variables.subfolder) > 0:
deckstring += "/" + variables.subfolder deckstring += "/" + variables.subfolder
deckstring += "/decks/" + deck["name"] + "/master.gif\" title=\"mastered " + deck["name"] deckstring += "/decks/" + deck["name"] + "/master.gif\" title=\"mastered " + deck["name"]
@ -1283,7 +1328,10 @@ def indexgen():
content.write("/" + variables.subfolder) content.write("/" + variables.subfolder)
content.write("/decks/sigs/" + variables.name.lower() + ".gif\" loading=\"lazy\">") content.write("/decks/sigs/" + variables.name.lower() + ".gif\" loading=\"lazy\">")
if variables.banner: if variables.banner:
content.write("<a target=\"_blank\" href=\"" + variables.tradepost + "\"><img src=\"") content.write("<a href=\"" + variables.tradepost + "\"")
if variables.newtab:
content.write(" target=\"_blank\"")
content.write("><img src=\"")
if len(variables.subfolder) > 0: if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder) content.write("/" + variables.subfolder)
content.write("/assets/banner.png\" loading=\"lazy\"></a>") content.write("/assets/banner.png\" loading=\"lazy\"></a>")
@ -1411,11 +1459,17 @@ def indexgen():
if tradepend > 1: if tradepend > 1:
content.write("s") content.write("s")
content.write(" held for trades</li>\n") 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> ") 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\"")
if variables.newtab:
content.write(" target=\"_blank\"")
content.write(">code</a> ")
if variables.name == "Mez": if variables.name == "Mez":
content.write("under construction") content.write("under construction")
else: else:
content.write("by <a href=\https://tcg.praze.net\" target=\"_blank\">mez</a>") content.write("by <a href=\https://tcg.praze.net\"")
if variables.newtab:
content.write(" target=\"_blank\"")
content.write(">mez</a>")
content.write("</li>\n") content.write("</li>\n")
try: try:
if len(variables.misclink["text"]) > 0: if len(variables.misclink["text"]) > 0:
@ -1519,7 +1573,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("<a href=\"https://colors-tcg.eu/viewcards.php?deck=" + deck["name"] + "\" target=\"_blank\"><img src=\"") content.write("<a href=\"https://colors-tcg.eu/viewcards.php?deck=" + deck["name"] + "\"")
if variables.newtab:
content.write(" target=\"_blank\"")
content.write("><img src=\"")
if len(variables.subfolder) > 0: if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder) content.write("/" + variables.subfolder)
content.write("/decks/" + deck["name"] + "/master.gif\" title=\"mastered " + deck["name"]) content.write("/decks/" + deck["name"] + "/master.gif\" title=\"mastered " + deck["name"])
@ -1553,7 +1610,10 @@ def indexgen():
else: else:
memberlink = False memberlink = False
if memberlink: if memberlink:
content.write("<a href=\"" + memberlink + "\" target=\"_blank\">") content.write("<a href=\"" + memberlink + "\"")
if variables.newtab:
content.write(" target=\"_blank\"")
content.write(">")
content.write(printcard(card)) content.write(printcard(card))
if memberlink: if memberlink:
content.write("</a>") content.write("</a>")
@ -1568,7 +1628,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:
if coupons[coupon]["count"] > 0: if coupons[coupon]["count"] > 0:
content.write("<a href=\"" + coupons[coupon]["inurl"] + "\" target=\"_blank\">") content.write("<a href=\"" + coupons[coupon]["inurl"] + "\"")
if variables.newtab:
content.write(" target=\"_blank\"")
content.write(">")
content.write("<img src=\"") content.write("<img src=\"")
if len(variables.subfolder) > 0: if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder) content.write("/" + variables.subfolder)
@ -1610,9 +1673,15 @@ def indexgen():
for donation in donations: for donation in donations:
content.write("<a href=\"https://colors-tcg.eu/viewcards.php?deck=") content.write("<a href=\"https://colors-tcg.eu/viewcards.php?deck=")
if donation["type"] == "single": if donation["type"] == "single":
content.write(donation["name"][:-2] + "\" target=\"_blank\">" + printcard(donation["name"])) content.write(donation["name"][:-2] + "\"")
if variables.newtab:
content.write(" target=\"_blank\"")
content.write(">" + printcard(donation["name"]))
else: else:
content.write(donation["name"] + "\" target=\"_blank\">") content.write(donation["name"] + "\"")
if variables.newtab:
content.write(" target=\"_blank\"")
content.write(">")
if donation["type"] == "deck": if donation["type"] == "deck":
content.write("<img src=\"") content.write("<img src=\"")
if len(variables.subfolder) > 0: if len(variables.subfolder) > 0:
@ -2342,7 +2411,10 @@ def massseriesgen(series,massindex):
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("<a href=\"https://colors-tcg.eu/viewcards.php?deck=" + deck["name"] + "\" target=\"_blank\"><img src=\"") content.write("<a href=\"https://colors-tcg.eu/viewcards.php?deck=" + deck["name"] + "\"")
if variables.newtab:
content.write(" target=\"_blank\"")
content.write("><img src=\"")
if len(variables.subfolder) > 0: if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder) content.write("/" + variables.subfolder)
content.write("/decks/" + deck["name"] + "/master.gif\" title=\"mastered " + deck["name"]) content.write("/decks/" + deck["name"] + "/master.gif\" title=\"mastered " + deck["name"])
@ -2354,7 +2426,10 @@ def massseriesgen(series,massindex):
content.write("\"></a>") content.write("\"></a>")
elif series == "colors universe": elif series == "colors universe":
if deck["colour"] == "limited": if deck["colour"] == "limited":
content.write("<a href=\"https://colors-tcg.eu/viewcards.php?deck=" + deck["name"] + "\" target=\"_blank\"><img src=\"") content.write("<a href=\"https://colors-tcg.eu/viewcards.php?deck=" + deck["name"] + "\"")
if variables.newtab:
content.write(" target=\"_blank\"")
content.write("><img src=\"")
if len(variables.subfolder) > 0: if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder) content.write("/" + variables.subfolder)
content.write("/decks/" + deck["name"] + "/master.gif\" title=\"mastered " + deck["name"]) content.write("/decks/" + deck["name"] + "/master.gif\" title=\"mastered " + deck["name"])
@ -2447,7 +2522,10 @@ def tradegen(colour=False):
content.write("<h1>available for trade</h1>\n" + filterwrite("trade",colour,True,True) + "<p class=\"tradeterms\">") content.write("<h1>available for trade</h1>\n" + filterwrite("trade",colour,True,True) + "<p class=\"tradeterms\">")
if len(variables.tradestatement) > 0: if len(variables.tradestatement) > 0:
content.write(variables.tradestatement + " ") content.write(variables.tradestatement + " ")
content.write("Trade cards <a href=\"" + variables.tradepost + "\" target=\"_blank\">here</a></p>\n<p><textarea readonly>") content.write("Trade cards <a href=\"" + variables.tradepost + "\"")
if variables.newtab:
content.write(" target=\"_blank\"")
content.write(">here</a></p>\n<p><textarea readonly>")
precomma = False precomma = False
for card in alltradelist: for card in alltradelist:
if colour: if colour:
@ -2689,7 +2767,10 @@ def loggen(month=False):
else: else:
admit = True admit = True
if admit == True: if admit == True:
content.write("<p><code>" + event["date"].strftime("%Y-%m-%d") + "</code> <a href=\"" + event["url"] + "\" target=\"_blank\">[" + event["name"] + "]</a>: ") content.write("<p><code>" + event["date"].strftime("%Y-%m-%d") + "</code> <a href=\"" + event["url"] + "\"")
if variables.newtab:
content.write(" target=\"_blank\"")
content.write(">[" + event["name"] + "]</a>: ")
try: try:
if event["received"]: if event["received"]:
content.write("Received ") content.write("Received ")

View file

@ -25,6 +25,7 @@ tradestatement = ""
maxmastered = 20 maxmastered = 20
firstmasteries = ["deckname","nameofdeck"] firstmasteries = ["deckname","nameofdeck"]
misclink = {"link":"","text":""} misclink = {"link":"","text":""}
newtab = True
donations = {"decks":[],"scrapbook":[]} donations = {"decks":[],"scrapbook":[]}
masscollect = {"series":{"series":["a series","another series"],"decks":["firstdeck","seconddeck"],"singles":["card01","card02"]}} masscollect = {"series":{"series":["a series","another series"],"decks":["firstdeck","seconddeck"],"singles":["card01","card02"]}}
anniversary = ["deckname"] anniversary = ["deckname"]