Link to member posts and coupon comments

This commit is contained in:
mez 2025-08-30 13:03:39 +01:00
parent 27cb1876e3
commit 6e291f3a89
4 changed files with 72 additions and 23 deletions

3
.gitignore vendored
View file

@ -17,4 +17,5 @@ variables.py
log.py
trade.py
build/user.css
key.html
key.html
members.html

View file

@ -28,6 +28,7 @@ Python scripts to generate a mobile-friendly static site for tracking tcg cards
- =name=: the name you use in the game
- =hovertext=: text to display when hovering over the header image
- =sig=: set to =True= when you have a signature card
- =membersdisambig=: uncomment and set to a member’s name as given in their sig card + the URL of their card post where necessary (in case of any sigs failing to link or linking incorrectly)
- =banner=: set to =True= when you have a player banner, and save this in =build/assets/= as =banner.png=
- =lowpriority=: a list of decks you’re collecting that aren’t in mass decks
- =trademedium=: whether to allow trading medium-priority cards away in exchange for high-priority cards (special cards will not be listed as tradeable)

View file

@ -26,7 +26,7 @@ except:
print("Using cached version of decklist")
with open("key.html") as decks:
decksoup = BeautifulSoup(decks, "html.parser")
decksoup = BeautifulSoup(decks,"html.parser")
soupdecks = decksoup.find("table",{"id":"colors"})
souprows = soupdecks.find_all("tr")
souprows = souprows[1:]
@ -43,6 +43,38 @@ for row in souprows:
deckdict["series"] = deckseries
deckkey[deckname] = deckdict
try:
request = requests.get("https://colors-tcg.eu/members.php")
print("Getting members list")
allmembers = open("members.html","w")
allmembers.write(request.text)
allmembers.close()
# need to correct some html issues
with open("members.html","r") as file:
filedata = file.read()
filedata = filedata.replace("</a></td>","</td>")
with open("members.html","w") as file:
file.write(filedata)
except:
print("Using cached version of members list")
with open("members.html") as members:
membersoup = BeautifulSoup(members,"html.parser")
tcgmembers = {}
soupmembers = membersoup.find_all("table")
soupmembers = soupmembers[1:]
for level in soupmembers:
souprows = level.find_all("tr")
souprows = souprows[1:]
for row in souprows:
soupcells = row.find_all("td")
membername = soupcells[0].text.lower()
memberlink = soupcells[2].find("a")["href"]
tcgmembers[membername] = memberlink
print("Parsing log")
cardlist = []
@ -58,7 +90,7 @@ craygrey = 0
tradeout = []
tradein = []
redeemedsketch = 0
coupons = []
coupons = {}
datelist = []
logitems = []
pends = []
@ -257,15 +289,13 @@ for event in log.log:
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]})
for coupon in event["coupons"]:
if coupon in coupons:
coupons[coupon]["count"] += event["coupons"][coupon]
if event["coupons"][coupon] > 0:
coupons[coupon]["inurl"] = event["url"]
else:
coupons[coupon] = {"count":event["coupons"][coupon],"inurl":event["url"]}
except:
pass
try:
@ -290,7 +320,7 @@ for event in log.log:
logitems.append(logentry)
logitems = logitems[::-1]
coupons = coupons[::-1]
coupons = dict(reversed(list(coupons.items())))
tradepend = len(tradeout) - len(tradein)
tradediff = tradeout.copy()
@ -1513,7 +1543,20 @@ def indexgen():
if len(sigs) > 0:
content.write("<h2>signatures</h2>\n<p>")
for card in sigs:
membername = card["name"][4:]
if membername == variables.name.lower():
memberlink = False
elif membername in variables.membersdisambig:
memberlink = variables.membersdisambig[membername]
elif membername in tcgmembers:
memberlink = tcgmembers[membername]
else:
memberlink = False
if memberlink:
content.write("<a href=\"" + memberlink + "\" target=\"_blank\">")
content.write(printcard(card))
if memberlink:
content.write("</a>")
content.write("</p>\n")
if len(variables.faves) > 0:
content.write("<h2>faves</h2>\n<p>")
@ -1524,16 +1567,19 @@ def indexgen():
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\">")
if coupons[coupon]["count"] > 0:
content.write("<a href=\"" + coupons[coupon]["inurl"] + "\" target=\"_blank\">")
content.write("<img src=\"")
if len(variables.subfolder) > 0:
content.write("/" + variables.subfolder)
content.write("/assets/coupons/" + coupon + ".png\" class=\"coupon")
if coupons[coupon]["count"] == 0:
content.write(" expired\" title=\"expired\"")
else:
content.write("\" title=\"" + str(coupons[coupon]["count"]) + " left\"")
content.write(" loading=\"lazy\">")
if coupons[coupon]["count"] > 0:
content.write("</a>")
content.write("</p>\n")
donations = []
try:

View file

@ -6,6 +6,7 @@ url = ""
name = "your name"
hovertext = ""
sig = False
# membersdisambig = {"name1":"url1","name2":"url2"}
banner = False
lowpriority = ["deckname","nameofadeck"]
trademedium = True