From 95b80881a578bb29dbfc4d02548c29e243eb5a7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?tr=C3=A9meur?= Date: Sat, 8 Mar 2025 10:36:53 +0000 Subject: [PATCH 1/3] Add unowned mass collecting cards to wantlist --- new.py | 56 +++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 39 insertions(+), 17 deletions(-) diff --git a/new.py b/new.py index 3ffc7cf..030fb34 100644 --- a/new.py +++ b/new.py @@ -8,7 +8,7 @@ numbers = ["01","02","03","04","05","06","07","08","09","10","11","12","13","14" print("Getting list of deck colours") -deckkey = [] +deckkey = {} request = requests.get("https://colors-tcg.eu/cards.php?view=alpha") alldecks = open("key.html","w") @@ -31,10 +31,8 @@ for row in souprows: soupcells = row.find_all("td") deckname = soupcells[2].text.lower().replace(" ","").replace("'","").replace("ç","c").replace(".","").replace("politetness","politeness") decktype = soupcells[3].text.lower() - thedeck = {} - thedeck[deckname] = decktype if decktype in values: - deckkey.append(thedeck) + deckkey[deckname] = decktype print("Parsing log") @@ -66,10 +64,7 @@ for event in log.log: thedecks = {} for spacedeck in event["decks"]: deck = spacedeck.replace(" ","") - for keydeck in deckkey: - if deck in keydeck: - thedecks[spacedeck] = keydeck[deck] - break + thedecks[spacedeck] = deckkey[deck] portcolours = list(thedecks.values()) portcolours = sorted(list(dict.fromkeys(portcolours))) if len(portcolours) < 3: @@ -106,10 +101,10 @@ for event in log.log: if card[0:4] == "sig_": thecard["colour"] = "sig" else: - for deck in deckkey: - if thedeck in deck: - thecard["colour"] = deck[thedeck] - break + try: + thecard["colour"] = deckkey[thedeck] + except: + pass try: if thecard["colour"]: pass @@ -268,10 +263,7 @@ decklist = [] for deck in decks: thedeck = {} thedeck["name"] = deck - for keydeck in deckkey: - if deck in keydeck: - thedeck["colour"] = keydeck[deck] - break + thedeck["colour"] = deckkey[deck] thedeck["mass"] = [] thedeck["massmaster"] = [] for theme in variables.masscollect: @@ -346,11 +338,41 @@ for deck in decklist: for number in numbers: if deck[number] == None: wantedcard = {} - wantedcard["name"] = deck["name"] + str(number) + wantedcard["name"] = deck["name"] + number wantedcard["colour"] = deck["colour"] wantedcard["priority"] = deck["priority"] wantedlist.append(wantedcard) +decknames = [] +for deck in decklist: + decknames.append(deck["name"]) + +for theme in variables.masscollect: + if variables.masscollect[theme]["full"] == True: + try: + for deck in variables.masscollect[theme]["decks"]: + if deck not in decknames: + for number in numbers: + wantedcard = {} + wantedcard["name"] = deck + number + wantedcard["colour"] = deckkey[deck] + wantedcard["priority"] = 3 + wantedlist.append(wantedcard) + except KeyError: + pass + try: + for card in variables.masscollect[theme]["singles"]: + if card[:-2] not in decknames: + wantedcard = {} + wantedcard["name"] = card + wantedcard["colour"] = deckkey[card[:-2]] + wantedcard["priority"] = 3 + wantedlist.append(wantedcard) + except KeyError: + pass + +wantedlist = sorted(wantedlist, key=lambda d: d["name"]) + print("Adjusting card priorities") for card in cardlist: From 042d143b04b40e8b9efd72ec810b7b4ffb55d14e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?tr=C3=A9meur?= Date: Sat, 8 Mar 2025 11:00:39 +0000 Subject: [PATCH 2/3] Show mastered donated decks --- new.py | 64 +++++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 43 insertions(+), 21 deletions(-) diff --git a/new.py b/new.py index 030fb34..ebcc4cc 100644 --- a/new.py +++ b/new.py @@ -464,12 +464,20 @@ def footerwrite(thefile): footer.close() def printcard(card): - if card["colour"] == "sig": - return "" - else: - deck = card["name"][:-2] - cardid = card["name"][-2:] - return "" + if type(card) == dict: + if card["colour"] == "sig": + return "" + else: + deck = card["name"][:-2] + cardid = card["name"][-2:] + return "" + elif type(card) == str: + if card[0:4] == "sig_": + return "" + else: + deck = card[:-2] + cardid = card[-2:] + return "" def cardtext(card): cardtext = "" @@ -1096,10 +1104,7 @@ def indexgen(): content.write("

faves

\n

") faveslist = sorted(variables.faves) for card in faveslist: - for thecard in cardlist: - if card == thecard["name"]: - content.write(printcard(thecard)) - break + content.write(printcard(card)) content.write("

\n") if len(coupons) > 0: content.write("

coupons

\n

") @@ -1114,26 +1119,43 @@ def indexgen(): content.write("

\n") donations = [] try: - for deck in variables.donations["decks"]: - donations.append(deck + "00") + for donatedeck in variables.donations["decks"]: + donation = {} + donation["name"] = donatedeck + for deck in decklist: + if deck["name"] == donatedeck: + if deck["mastered"]: + donation["type"] = "mastered" + else: + donation["type"] = "deck" + break + donations.append(donation) except: pass try: for card in variables.donations["scrapbook"]: - donations.append(card) + donation = {} + donation["name"] = card + donation["type"] = "single" + donations.append(donation) except: pass if len(donations) > 0: - donations = sorted(donations) + donations = sorted(donations, key=lambda d: d["name"]) content.write("

donations

\n

") for donation in donations: - if donation[-2:] == "00": - content.write("") - else: - for thecard in cardlist: - if donation == thecard["name"]: - content.write(printcard(thecard)) - break + if donation["type"] == "deck": + content.write("") + elif donation["type"] == "mastered": + content.write("") + elif donation["type"] == "single": + content.write(printcard(donation["name"])) content.write("

\n") content.close() footerwrite(thefile) From bfe656a5b4ea935975cf46ebbe1f600bffcdb63b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?tr=C3=A9meur?= Date: Sat, 8 Mar 2025 12:15:47 +0000 Subject: [PATCH 3/3] Account for pending cards --- README.org | 2 +- build/style.css | 20 ++++++++++++++++++++ log-template.py | 4 +++- new.py | 22 ++++++++++++++++++++++ 4 files changed, 46 insertions(+), 2 deletions(-) diff --git a/README.org b/README.org index 82fd3bf..d79dd0e 100644 --- a/README.org +++ b/README.org @@ -46,5 +46,5 @@ Python scripts to generate a mobile-friendly static site for tracking tcg cards - Add level images manually to =build/assets/levels/= - Add custom CSS to =build/user.css= *** Updating and building -- For each transaction, add a dictionary ={}= to the =log= list like in the example (removing any of ="received"=, ="lost"=, ="crayons"=, ="decks"=, ="coupons">= that aren’t relevant). +- For each transaction, add a dictionary ={}= to the =log= list like in the example (removing any of ="received"=, ="lost"=, ="crayons"=, ="decks"=, ="coupons"=, ="pend"=, ="unpend"= that aren’t relevant). - Run =./build.sh= in this directory to download the relevant card images and then upload everything to the server. diff --git a/build/style.css b/build/style.css index 6f12746..f29203e 100644 --- a/build/style.css +++ b/build/style.css @@ -563,7 +563,27 @@ span.searchresults { font-family: monospace; } +/* coupons */ + img.coupon.expired { -webkit-filter: grayscale(100%); filter: grayscale(100%); } + +/* pending cards */ + +td:has(.pending) { + position: relative; +} + +td:has(.pending) img { + filter: hue-rotate(180deg); +} + +td p.pending { + position: absolute; + font-size: 10px; + top: 50%; + left: 50%; + transform: translate(-50%, -200%); +} diff --git a/log-template.py b/log-template.py index 39786f4..5dd55b7 100644 --- a/log-template.py +++ b/log-template.py @@ -9,6 +9,8 @@ log = [ "crayons":{"red":1,"orange":2,"yellow":-3}, "coupons":{"01":5}, "decks":["deck1","deck2","deck3","deck4","deck5","deck6","deck7","deck8"], # only if "event":"portfolio" - "sketch":-1 # for turning in 1 sketchpad + "sketch":-1, # for turning in 1 sketchpad + "pend":["card05"], # to mark a card as pending + "unpend":["card06"] # to remove a card from the pending list if a trade is cancelled } ] diff --git a/new.py b/new.py index ebcc4cc..087a846 100644 --- a/new.py +++ b/new.py @@ -52,6 +52,7 @@ redeemedsketch = 0 coupons = [] datelist = [] logitems = [] +pends = [] for event in log.log: logentry = {} @@ -232,6 +233,16 @@ for event in log.log: coupons.append({newcoupon:event["coupons"][newcoupon]}) except: pass + try: + for card in event["pend"]: + pends.append(card) + except: + pass + try: + for card in event["unpend"]: + pends.remove(card) + except: + pass if logit == True: logitems.append(logentry) @@ -373,6 +384,15 @@ for theme in variables.masscollect: wantedlist = sorted(wantedlist, key=lambda d: d["name"]) +removelist = [] + +for card in wantedlist: + if card["name"] in pends: + removelist.append(card) + +for card in removelist: + wantedlist.remove(card) + print("Adjusting card priorities") for card in cardlist: @@ -837,6 +857,8 @@ def printdeck(deck,fold=True): break if found == False: deckstring += "" + if deck["name"] + teststring in pends: + deckstring += "

pending

" deckstring += "\n" if test % 5 == 0: deckstring += " \n"