Add function to generate optimal portfolio

master
trémeur 2 days ago
parent 5b843a1537
commit 3d479f1f60

@ -19,6 +19,7 @@ Python scripts to generate a mobile-friendly static site for tracking tcg cards
- =servername=: name set for your remote in =rclone=
- =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)
- =url=: URL of your site index page including =https://=
- =name=: the name you use in the game
- =highpriority=: a list of high priority decks youre collecting
- =trademedium=: whether to allow trading medium-priority cards away in exchange for high-priority cards

@ -1029,6 +1029,338 @@ def riku():
print("Characters")
print(dupes(True,False,True,False))
def nextportfolio(monochrome=False):
useddecks = {}
already = 0
if monochrome:
for portfolio in portfolios:
if portfolio["type"] == "monochrome":
already += 1
useddecks.update(portfolio["decks"])
else:
for portfolio in portfolios:
if portfolio["type"] == "palette":
already += 1
useddecks.update(portfolio["decks"])
potentials = []
for deck in decklist:
if deck["mastered"]:
if deck["colour"] != "special" and deck["colour"] != "limited":
potential = True
for key, value in useddecks.items():
if deck["name"] == key.replace(" ",""):
potential = False
if potential:
potentials.append(deck)
potentials = sorted(potentials, key=lambda d: d["mastered"])
if monochrome:
reddecks = []
orangedecks = []
yellowdecks = []
greendecks = []
bluedecks = []
purpledecks = []
browndecks = []
greydecks = []
for deck in potentials:
if deck["colour"] == "red":
reddecks.append(deck)
elif deck["colour"] == "orange":
orangedecks.append(deck)
elif deck["colour"] == "yellow":
yellowdecks.append(deck)
elif deck["colour"] == "green":
greendecks.append(deck)
elif deck["colour"] == "blue":
bluedecks.append(deck)
elif deck["colour"] == "purple":
purpledecks.append(deck)
elif deck["colour"] == "brown":
browndecks.append(deck)
elif deck["colour"] == "gray":
greydecks.append(deck)
longestvalue = len(reddecks)
nextportcolour = "red"
if len(orangedecks) > longestvalue:
nextportcolour = "orange"
if len(yellowdecks) > longestvalue:
nextportcolour = "yellow"
if len(greendecks) > longestvalue:
nextportcolour = "green"
if len(bluedecks) > longestvalue:
nextportcolour = "blue"
if len(purpledecks) > longestvalue:
nextportcolour = "purple"
if len(browndecks) > longestvalue:
nextportcolour = "brown"
if len(greydecks) > longestvalue:
nextportcolour = "grey"
firstthree = []
if nextportcolour == "red":
firstthree.append(reddecks[0]["name"])
firstthree.append(reddecks[1]["name"])
firstthree.append(reddecks[2]["name"])
elif nextportcolour == "orange":
firstthree.append(orangedecks[0]["name"])
firstthree.append(orangedecks[1]["name"])
firstthree.append(orangedecks[2]["name"])
elif nextportcolour == "yellow":
firstthree.append(yellowdecks[0]["name"])
firstthree.append(yellowdecks[1]["name"])
firstthree.append(yellowdecks[2]["name"])
elif nextportcolour == "green":
firstthree.append(greendecks[0]["name"])
firstthree.append(greendecks[1]["name"])
firstthree.append(greendecks[2]["name"])
elif nextportcolour == "blue":
firstthree.append(bluedecks[0]["name"])
firstthree.append(bluedecks[1]["name"])
firstthree.append(bluedecks[2]["name"])
elif nextportcolour == "purple":
firstthree.append(purpledecks[0]["name"])
firstthree.append(purpledecks[1]["name"])
firstthree.append(purpledecks[2]["name"])
elif nextportcolour == "brown":
firstthree.append(browndecks[0]["name"])
firstthree.append(browndecks[1]["name"])
firstthree.append(browndecks[2]["name"])
elif nextportcolour == "grey":
firstthree.append(greydecks[0]["name"])
firstthree.append(greydecks[1]["name"])
firstthree.append(greydecks[2]["name"])
secondfive = []
nearingdecks = sorted(decklist, key=lambda d: d["count"],reverse=True)
slots = 5
for deck in nearingdecks:
if slots > 0:
if not deck["mastered"]:
if nextportcolour == "grey":
if deck["colour"] == "gray":
secondfive.append(deck["name"])
slots -= 1
else:
if deck["colour"] == nextportcolour:
secondfive.append(deck["name"])
slots -= 1
alleight = sorted(firstthree + secondfive)
else:
thereddeck = False
redmastered = False
theorangedeck = False
orangemastered = False
theyellowdeck = False
yellowmastered = False
thegreendeck = False
greenmastered = False
thebluedeck = False
bluemastered = False
thepurpledeck = False
purplemastered = False
thebrowndeck = False
brownmastered = False
thegreydeck = False
greymastered = False
sorteddecks = 0
for deck in potentials:
if sorteddecks < 3:
if deck["colour"] == "red" and thereddeck == False:
thereddeck = deck["name"]
redmastered = True
sorteddecks += 1
elif deck["colour"] == "orange" and theorangedeck == False:
theorangedeck = deck["name"]
orangemastered = True
sorteddecks += 1
elif deck["colour"] == "yellow" and theyellowdeck == False:
theyellowdeck = deck["name"]
yellowmastered = True
sorteddecks += 1
elif deck["colour"] == "green" and thegreendeck == False:
thegreendeck = deck["name"]
greenmastered = True
sorteddecks += 1
elif deck["colour"] == "blue" and thebluedeck == False:
thebluedeck = deck["name"]
bluemastered = True
sorteddecks += 1
elif deck["colour"] == "purple" and thepurpledeck == False:
thepurpledeck = deck["name"]
purplemastered = True
sorteddecks += 1
elif deck["colour"] == "brown" and thebrowndeck == False:
thebrowndeck = deck["name"]
brownmastered = True
sorteddecks += 1
elif deck["colour"] == "gray" and thegreydeck == False:
thegreydeck = deck["name"]
greymastered = True
sorteddecks += 1
nearingdecks = sorted(decklist, key=lambda d: d["count"],reverse=True)
if thereddeck == False:
for deck in nearingdecks:
if not deck["mastered"]:
if thereddeck == False:
if deck["colour"] == "red":
used = False
for key, value in useddecks.items():
if deck["name"] == key.replace(" ",""):
used = True
if used == False:
thereddeck = deck["name"]
if theorangedeck == False:
for deck in nearingdecks:
if not deck["mastered"]:
if theorangedeck == False:
if deck["colour"] == "orange":
used = False
for key, value in useddecks.items():
if deck["name"] == key.replace(" ",""):
used = True
if used == False:
theorangedeck = deck["name"]
if theyellowdeck == False:
for deck in nearingdecks:
if not deck["mastered"]:
if theyellowdeck == False:
if deck["colour"] == "yellow":
used = False
for key, value in useddecks.items():
if deck["name"] == key.replace(" ",""):
used = True
if used == False:
theyellowdeck = deck["name"]
if thegreendeck == False:
for deck in nearingdecks:
if not deck["mastered"]:
if thegreendeck == False:
if deck["colour"] == "green":
used = False
for key, value in useddecks.items():
if deck["name"] == key.replace(" ",""):
used = True
if used == False:
thegreendeck = deck["name"]
if thebluedeck == False:
for deck in nearingdecks:
if not deck["mastered"]:
if thebluedeck == False:
if deck["colour"] == "blue":
used = False
for key, value in useddecks.items():
if deck["name"] == key.replace(" ",""):
used = True
if used == False:
thebluedeck = deck["name"]
if thepurpledeck == False:
for deck in nearingdecks:
if not deck["mastered"]:
if thepurpledeck == False:
if deck["colour"] == "purple":
used = False
for key, value in useddecks.items():
if deck["name"] == key.replace(" ",""):
used = True
if used == False:
thepurpledeck = deck["name"]
if thebrowndeck == False:
for deck in nearingdecks:
if not deck["mastered"]:
if thebrowndeck == False:
if deck["colour"] == "brown":
used = False
for key, value in useddecks.items():
if deck["name"] == key.replace(" ",""):
used = True
if used == False:
thebrowndeck = deck["name"]
if thegreydeck == False:
for deck in nearingdecks:
if not deck["mastered"]:
if thegreydeck == False:
if deck["colour"] == "gray":
used = False
for key, value in useddecks.items():
if deck["name"] == key.replace(" ",""):
used = True
if used == False:
thegreydeck = deck["name"]
alleight = []
alleight.append(thereddeck)
alleight.append(theorangedeck)
alleight.append(theyellowdeck)
alleight.append(thegreendeck)
alleight.append(thebluedeck)
alleight.append(thepurpledeck)
alleight.append(thebrowndeck)
alleight.append(thegreydeck)
portcomment = "♥ <b>Your Name:</b> " + variables.name + "\n♥ <b>Card post:</b> " + variables.url + "\n♥ <b>"
if monochrome:
portcomment += "Monochrome"
else:
portcomment += "Palette"
portcomment += " Portfolio #:</b> " + str(already + 1) + "\n"
if monochrome:
portcomment += "♥ <b>Monochrome Color:</b> "
if nextportcolour == "grey":
if variables.british:
portcomment += "grey"
else:
portcomment += "gray"
else:
portcomment += nextportcolour
portcomment += "\n♥ <b>1st deck:</b> " + alleight[0]
if alleight[0] in firstthree:
portcomment += " (mastered)"
portcomment += "\n♥ <b>2nd deck:</b> " + alleight[1]
if alleight[1] in firstthree:
portcomment += " (mastered)"
portcomment += "\n♥ <b>3rd deck:</b> " + alleight[2]
if alleight[2] in firstthree:
portcomment += " (mastered)"
portcomment += "\n♥ <b>4th deck:</b> " + alleight[3]
if alleight[3] in firstthree:
portcomment += " (mastered)"
portcomment += "\n♥ <b>5th deck:</b> " + alleight[4]
if alleight[4] in firstthree:
portcomment += " (mastered)"
portcomment += "\n♥ <b>6th deck:</b> " + alleight[5]
if alleight[5] in firstthree:
portcomment += " (mastered)"
portcomment += "\n♥ <b>7th deck:</b> " + alleight[6]
if alleight[6] in firstthree:
portcomment += " (mastered)"
portcomment += "\n♥ <b>8th deck:</b> " + alleight[7]
if alleight[7] in firstthree:
portcomment += " (mastered)"
else:
portcomment += "♥ <b>Red deck:</b> " + thereddeck
if redmastered:
portcomment += " (mastered)"
portcomment += "\n♥ <b>Orange deck:</b> " + theorangedeck
if orangemastered:
portcomment += " (mastered)"
portcomment += "\n♥ <b>Yellow deck:</b> " + theyellowdeck
if yellowmastered:
portcomment += " (mastered)"
portcomment += "\n♥ <b>Green deck:</b> " + thegreendeck
if greenmastered:
portcomment += " (mastered)"
portcomment += "\n♥ <b>Blue deck:</b> " + thebluedeck
if bluemastered:
portcomment += " (mastered)"
portcomment += "\n♥ <b>Purple deck:</b> " + thepurpledeck
if purplemastered:
portcomment += " (mastered)"
portcomment += "\n♥ <b>Brown deck:</b> " + thebrowndeck
if brownmastered:
portcomment += " (mastered)"
portcomment += "\n♥ <b>Gray deck:</b> " + thegreydeck
if greymastered:
portcomment += " (mastered)"
print(portcomment)
porturl = input("\nPaste the comment URL here: ")
print("\n{\"event\":\"portfolio\",\"date\":datetime.datetime(" + datetime.datetime.today().strftime("%Y,%-m,%-d") + "),\"url\":\"" + porturl + "\",\"decks\":[\"" + alleight[0] + "\",\"" + alleight[1] + "\",\"" + alleight[2] + "\",\"" + alleight[3] + "\",\"" + alleight[4] + "\",\"" + alleight[5] + "\",\"" + alleight[6] + "\",\"" + alleight[7] + "\"]}")
if __name__ == "__main__":
print("Building index page")

@ -1,6 +1,7 @@
servername = ""
serverpath = ""
subfolder = ""
url = ""
name = "your name"
highpriority = ["deckname","nameofadeck"]
trademedium = True

Loading…
Cancel
Save