Add functions for Riku’s Favors and Swap Station
This commit is contained in:
parent
1929ea9af3
commit
26159685ce
2 changed files with 108 additions and 17 deletions
29
colors.py
29
colors.py
|
@ -31,10 +31,14 @@ for row in souprows:
|
||||||
soupcells = row.find_all("td")
|
soupcells = row.find_all("td")
|
||||||
deckname = soupcells[2].text.lower().replace(" ","").replace("'","").replace("ç","c").replace(".","").replace("politetness","politeness")
|
deckname = soupcells[2].text.lower().replace(" ","").replace("'","").replace("ç","c").replace(".","").replace("politetness","politeness")
|
||||||
decktype = soupcells[3].text.lower()
|
decktype = soupcells[3].text.lower()
|
||||||
|
deckseries = soupcells[0].text
|
||||||
|
deckdict = {}
|
||||||
if decktype in values:
|
if decktype in values:
|
||||||
deckkey[deckname] = decktype
|
deckdict["type"] = decktype
|
||||||
elif decktype == "n/a":
|
elif decktype == "n/a":
|
||||||
deckkey[deckname] = "limited"
|
deckdict["type"] = "limited"
|
||||||
|
deckdict["series"] = deckseries
|
||||||
|
deckkey[deckname] = deckdict
|
||||||
|
|
||||||
print("Parsing log")
|
print("Parsing log")
|
||||||
|
|
||||||
|
@ -68,7 +72,7 @@ for event in log.log:
|
||||||
thedecks = {}
|
thedecks = {}
|
||||||
for spacedeck in event["decks"]:
|
for spacedeck in event["decks"]:
|
||||||
deck = spacedeck.replace(" ","")
|
deck = spacedeck.replace(" ","")
|
||||||
thedecks[spacedeck] = deckkey[deck]
|
thedecks[spacedeck] = deckkey[deck]["type"]
|
||||||
portcolours = list(thedecks.values())
|
portcolours = list(thedecks.values())
|
||||||
portcolours = sorted(list(dict.fromkeys(portcolours)))
|
portcolours = sorted(list(dict.fromkeys(portcolours)))
|
||||||
if len(portcolours) < 3:
|
if len(portcolours) < 3:
|
||||||
|
@ -114,7 +118,7 @@ for event in log.log:
|
||||||
thecard["colour"] = "sig"
|
thecard["colour"] = "sig"
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
thecard["colour"] = deckkey[thedeck]
|
thecard["colour"] = deckkey[thedeck]["type"]
|
||||||
except:
|
except:
|
||||||
if thedeck in variables.anniversary:
|
if thedeck in variables.anniversary:
|
||||||
thecard["colour"] = "limited"
|
thecard["colour"] = "limited"
|
||||||
|
@ -123,6 +127,7 @@ for event in log.log:
|
||||||
pass
|
pass
|
||||||
except:
|
except:
|
||||||
print("Warning: no colour found for " + thedeck)
|
print("Warning: no colour found for " + thedeck)
|
||||||
|
thecard["series"] = deckkey[thedeck]["series"]
|
||||||
if thecard["colour"] == "sig":
|
if thecard["colour"] == "sig":
|
||||||
if card[4:] == variables.name.lower():
|
if card[4:] == variables.name.lower():
|
||||||
thecard["priority"] = 5
|
thecard["priority"] = 5
|
||||||
|
@ -435,7 +440,8 @@ for deck in decks:
|
||||||
if deck in variables.anniversary:
|
if deck in variables.anniversary:
|
||||||
thedeck["colour"] = "limited"
|
thedeck["colour"] = "limited"
|
||||||
else:
|
else:
|
||||||
thedeck["colour"] = deckkey[deck]
|
thedeck["colour"] = deckkey[deck]["type"]
|
||||||
|
thedeck["series"] = deckkey[deck]["series"]
|
||||||
thedeck["mass"] = []
|
thedeck["mass"] = []
|
||||||
thedeck["massmaster"] = []
|
thedeck["massmaster"] = []
|
||||||
for theme in variables.masscollect:
|
for theme in variables.masscollect:
|
||||||
|
@ -524,6 +530,7 @@ for deck in decklist:
|
||||||
wantedcard = {}
|
wantedcard = {}
|
||||||
wantedcard["name"] = deck["name"] + number
|
wantedcard["name"] = deck["name"] + number
|
||||||
wantedcard["colour"] = deck["colour"]
|
wantedcard["colour"] = deck["colour"]
|
||||||
|
wantedcard["series"] = deck["series"]
|
||||||
wantedcard["priority"] = deck["priority"]
|
wantedcard["priority"] = deck["priority"]
|
||||||
wantedlist.append(wantedcard)
|
wantedlist.append(wantedcard)
|
||||||
|
|
||||||
|
@ -540,7 +547,8 @@ for deck in variables.highpriority:
|
||||||
for number in numbers:
|
for number in numbers:
|
||||||
wantedcard = {}
|
wantedcard = {}
|
||||||
wantedcard["name"] = deck + number
|
wantedcard["name"] = deck + number
|
||||||
wantedcard["colour"] = deckkey[deck]
|
wantedcard["colour"] = deckkey[deck]["type"]
|
||||||
|
wantedcard["series"] = deckkey[deck]["series"]
|
||||||
wantedcard["priority"] = 1
|
wantedcard["priority"] = 1
|
||||||
wantedlist.append(wantedcard)
|
wantedlist.append(wantedcard)
|
||||||
|
|
||||||
|
@ -549,7 +557,8 @@ for deck in variables.lowpriority:
|
||||||
for number in numbers:
|
for number in numbers:
|
||||||
wantedcard = {}
|
wantedcard = {}
|
||||||
wantedcard["name"] = deck + number
|
wantedcard["name"] = deck + number
|
||||||
wantedcard["colour"] = deckkey[deck]
|
wantedcard["colour"] = deckkey[deck]["type"]
|
||||||
|
wantedcard["series"] = deckkey[deck]["series"]
|
||||||
wantedcard["priority"] = 3
|
wantedcard["priority"] = 3
|
||||||
wantedlist.append(wantedcard)
|
wantedlist.append(wantedcard)
|
||||||
|
|
||||||
|
@ -560,7 +569,8 @@ for theme in variables.masscollect:
|
||||||
for number in numbers:
|
for number in numbers:
|
||||||
wantedcard = {}
|
wantedcard = {}
|
||||||
wantedcard["name"] = deck + number
|
wantedcard["name"] = deck + number
|
||||||
wantedcard["colour"] = deckkey[deck]
|
wantedcard["colour"] = deckkey[deck]["type"]
|
||||||
|
wantedcard["series"] = deckkey[deck]["series"]
|
||||||
wantedcard["priority"] = 3
|
wantedcard["priority"] = 3
|
||||||
wantedlist.append(wantedcard)
|
wantedlist.append(wantedcard)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
|
@ -570,7 +580,8 @@ for theme in variables.masscollect:
|
||||||
if card not in cardnames:
|
if card not in cardnames:
|
||||||
wantedcard = {}
|
wantedcard = {}
|
||||||
wantedcard["name"] = card
|
wantedcard["name"] = card
|
||||||
wantedcard["colour"] = deckkey[card[:-2]]
|
wantedcard["colour"] = deckkey[card[:-2]]["type"]
|
||||||
|
wantedcard["series"] = deckkey[card[:-2]]["series"]
|
||||||
wantedcard["priority"] = 3
|
wantedcard["priority"] = 3
|
||||||
wantedlist.append(wantedcard)
|
wantedlist.append(wantedcard)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
|
|
96
tools.py
96
tools.py
|
@ -36,12 +36,6 @@ def dupes(mass=True,nonmass=True,characters=True,specials=True):
|
||||||
def activitydupes():
|
def activitydupes():
|
||||||
print(dupes(False,True,True,False))
|
print(dupes(False,True,True,False))
|
||||||
|
|
||||||
def riku():
|
|
||||||
print("Specials")
|
|
||||||
print(dupes(True,False,False,True))
|
|
||||||
print("Characters")
|
|
||||||
print(dupes(True,False,True,False))
|
|
||||||
|
|
||||||
def nextportfolio(monochrome=False):
|
def nextportfolio(monochrome=False):
|
||||||
goodtogo = True
|
goodtogo = True
|
||||||
useddecks = {}
|
useddecks = {}
|
||||||
|
@ -2051,12 +2045,96 @@ def masteredtoday():
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def swapstation():
|
||||||
|
swappablemedium = []
|
||||||
|
swappablelow = []
|
||||||
|
for card in colors.cardlist:
|
||||||
|
if card["priority"] == 4:
|
||||||
|
for deck in colors.decklist:
|
||||||
|
if not deck["mastered"]:
|
||||||
|
if card["name"][:-2] == deck["name"]:
|
||||||
|
if deck["priority"] < 4:
|
||||||
|
thecard = {}
|
||||||
|
thecard["name"] = card["name"]
|
||||||
|
thecard["remaining"] = 20 - deck["count"]
|
||||||
|
thecard["priority"] = deck["priority"]
|
||||||
|
if deck["priority"] < 3:
|
||||||
|
swappablemedium.append(thecard)
|
||||||
|
else:
|
||||||
|
swappablelow.append(thecard)
|
||||||
|
swappablemedium = sorted(swappablemedium, key=lambda d: d["remaining"],reverse=True)
|
||||||
|
swappablelow = sorted(swappablelow, key=lambda d: d["remaining"],reverse=True)
|
||||||
|
swappable = swappablemedium + swappablelow
|
||||||
|
swapquota = 4
|
||||||
|
swapcards = []
|
||||||
|
while swapquota > 0:
|
||||||
|
try:
|
||||||
|
swapcards.append(swappable[swapquota - 1]["name"])
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
swapquota -= 1
|
||||||
|
swapcards = sorted(list(dict.fromkeys(swapcards)))
|
||||||
|
print("<img src=\"https://colors-tcg.eu/cards/" + ".gif\"><img src=\"https://colors-tcg.eu/cards/".join(swapcards) + ".gif\">\n" + ", ".join(swapcards))
|
||||||
|
swapno = input("\nRound number: ")
|
||||||
|
swapurl = input("Comment URL: ")
|
||||||
|
print("\n{\"event\":\"swap station " + swapno + "\",\"date\":datetime.datetime(" + datetime.datetime.now().strftime("%Y,%-m,%-d") + "),\"url\":\"" + swapurl + "\",\"lost\":[\"" + "\",\"".join(swapcards) + "\"]}")
|
||||||
|
|
||||||
|
def newriku():
|
||||||
|
wantedpri = sorted(colors.wantedlist, key=lambda d: d["priority"])
|
||||||
|
rikuquota = 5
|
||||||
|
potential = colors.cardlist.copy()
|
||||||
|
swapseries = []
|
||||||
|
allswaps = []
|
||||||
|
allin = []
|
||||||
|
allout = []
|
||||||
|
for card in wantedpri:
|
||||||
|
if rikuquota > 0:
|
||||||
|
if card["colour"] == "special":
|
||||||
|
if card["series"] != "Scrapbook":
|
||||||
|
swaps = []
|
||||||
|
for tradecard in potential:
|
||||||
|
if len(swaps) < 2:
|
||||||
|
if tradecard["colour"] == "special":
|
||||||
|
if tradecard["series"] != "Scrapbook":
|
||||||
|
if tradecard["priority"] == 4:
|
||||||
|
if tradecard["series"].lower() == card["series"].lower():
|
||||||
|
swaps.append(tradecard["name"])
|
||||||
|
potential.remove(tradecard)
|
||||||
|
else:
|
||||||
|
swaps = []
|
||||||
|
for tradecard in potential:
|
||||||
|
if len(swaps) < 2:
|
||||||
|
if tradecard["colour"] != "special":
|
||||||
|
if tradecard["priority"] == 4:
|
||||||
|
if tradecard["series"].lower() == card["series"].lower():
|
||||||
|
swaps.append(tradecard["name"])
|
||||||
|
potential.remove(tradecard)
|
||||||
|
if len(swaps) == 2:
|
||||||
|
if card["series"] not in swapseries:
|
||||||
|
swapseries.append(card["series"])
|
||||||
|
swapdict = {}
|
||||||
|
swapdict["in"] = card["name"]
|
||||||
|
swapdict["out"] = swaps
|
||||||
|
allswaps.append(swapdict)
|
||||||
|
allin.append(card["name"])
|
||||||
|
for outcard in swaps:
|
||||||
|
allout.append(outcard)
|
||||||
|
rikuquota -= 1
|
||||||
|
print("\n<b>Series:</b> " + ", ".join(swapseries) + "\n<b>List of cards given:</b> " + ", ".join(allout) + "\n<img src=\"https://colors-tcg.eu/cards/" + ".gif\"><img src=\"https://colors-tcg.eu/cards/".join(allout) + ".gif\">")
|
||||||
|
swapcount = 1
|
||||||
|
for swap in allswaps:
|
||||||
|
print("<i>Swap " + str(swapcount) + ":</i> " + ", ".join(swap["out"]) + " for " + swap["in"])
|
||||||
|
swapcount += 1
|
||||||
|
rikuround = input("\nRound number: ")
|
||||||
|
rikuurl = input("Comment URL: ")
|
||||||
|
print("\n{\"event\":\"riku’s favors " + rikuround + "\",\"date\":datetime.datetime(" + datetime.datetime.now().strftime("%Y,%-m,%-d") + "),\"url\":\"" + rikuurl + "\",\"lost\":[\"" + "\",\"".join(allout) + "\"],\"received\":[\"" + "\",\"".join(allin) + "\"]}")
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
while True:
|
while True:
|
||||||
index = 0 # adapted from https://stackoverflow.com/a/64536882
|
index = 0 # adapted from https://stackoverflow.com/a/64536882
|
||||||
indexValidList = []
|
indexValidList = []
|
||||||
print("Choose from the list:")
|
print("Choose from the list:")
|
||||||
options = ["Get a list of potential cards to trade in for Riku’s Favors","Generate next palette portfolio","Generate next monochrome portfolio","Generate Switch It Up request","Generate Go Fish comment","Generate art shop request","Generate art studio request","Check a trade offer","Propose a trade","Get a list of random cards from tradepile (excluding specials)","Get a list of random cards from tradepile (including specials)","Check a card in the collection","Check details of a deck","See decks mastered today","See some statistics about the collection"]
|
options = ["Get a list of potential cards to trade in for Riku’s Favors","Generate next palette portfolio","Generate next monochrome portfolio","Generate Switch It Up request","Generate Swap Station request","Generate Go Fish comment","Generate art shop request","Generate art studio request","Check a trade offer","Propose a trade","Get a list of random cards from tradepile (excluding specials)","Get a list of random cards from tradepile (including specials)","Check a card in the collection","Check details of a deck","See decks mastered today","See some statistics about the collection"]
|
||||||
for optionName in options:
|
for optionName in options:
|
||||||
index = index + 1
|
index = index + 1
|
||||||
indexValidList.extend([options.index(optionName)])
|
indexValidList.extend([options.index(optionName)])
|
||||||
|
@ -2073,7 +2151,7 @@ if __name__ == "__main__":
|
||||||
print("Select a number from the list")
|
print("Select a number from the list")
|
||||||
chosen = options[selected]
|
chosen = options[selected]
|
||||||
if chosen == "Get a list of potential cards to trade in for Riku’s Favors":
|
if chosen == "Get a list of potential cards to trade in for Riku’s Favors":
|
||||||
riku()
|
newriku()
|
||||||
elif chosen == "Generate next palette portfolio":
|
elif chosen == "Generate next palette portfolio":
|
||||||
nextportfolio()
|
nextportfolio()
|
||||||
elif chosen == "Generate next monochrome portfolio":
|
elif chosen == "Generate next monochrome portfolio":
|
||||||
|
@ -2102,5 +2180,7 @@ if __name__ == "__main__":
|
||||||
masteredtoday()
|
masteredtoday()
|
||||||
elif chosen == "Propose a trade":
|
elif chosen == "Propose a trade":
|
||||||
maketrade()
|
maketrade()
|
||||||
|
elif chosen == "Generate Swap Station request":
|
||||||
|
swapstation()
|
||||||
print("\n")
|
print("\n")
|
||||||
input("Press Enter to continue or Ctrl-C to exit")
|
input("Press Enter to continue or Ctrl-C to exit")
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue