import datetime,random,math from collections import Counter import colors,log,trade,variables def dupes(mass=True,nonmass=True,characters=True,specials=True): dupeslist = [] previouscard = "" for card in colors.cardlist: try: if card["colour"] != "sig" and card ["colour"] != "limited": if card["name"] == previouscard["name"]: dupe = {} dupe["name"] = card["name"] if len(card["mass"]) > 0: if mass: dupe["mass"] = card["mass"] if card["colour"] == "special": if specials: dupeslist.append(dupe) else: if characters: dupeslist.append(dupe) else: if nonmass: if card["colour"] == "special": if specials: dupeslist.append(dupe) else: if characters: dupeslist.append(dupe) except: pass previouscard = card return dupeslist def activitydupes(): print(dupes(False,True,True,False)) def nextportfolio(monochrome=False): goodtogo = True useddecks = {} already = 0 if monochrome: for portfolio in colors.portfolios: if portfolio["type"] == "monochrome": already += 1 useddecks.update(portfolio["decks"]) else: for portfolio in colors.portfolios: if portfolio["type"] == "palette": already += 1 useddecks.update(portfolio["decks"]) potentials = [] for deck in colors.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": try: firstthree.append(reddecks[0]["name"]) firstthree.append(reddecks[1]["name"]) firstthree.append(reddecks[2]["name"]) except: goodtogo = False elif nextportcolour == "orange": try: firstthree.append(orangedecks[0]["name"]) firstthree.append(orangedecks[1]["name"]) firstthree.append(orangedecks[2]["name"]) except: goodtogo = False elif nextportcolour == "yellow": try: firstthree.append(yellowdecks[0]["name"]) firstthree.append(yellowdecks[1]["name"]) firstthree.append(yellowdecks[2]["name"]) except: goodtogo = False elif nextportcolour == "green": try: firstthree.append(greendecks[0]["name"]) firstthree.append(greendecks[1]["name"]) firstthree.append(greendecks[2]["name"]) except: goodtogo = False elif nextportcolour == "blue": try: firstthree.append(bluedecks[0]["name"]) firstthree.append(bluedecks[1]["name"]) firstthree.append(bluedecks[2]["name"]) except: goodtogo = False elif nextportcolour == "purple": try: firstthree.append(purpledecks[0]["name"]) firstthree.append(purpledecks[1]["name"]) firstthree.append(purpledecks[2]["name"]) except: goodtogo = False elif nextportcolour == "brown": try: firstthree.append(browndecks[0]["name"]) firstthree.append(browndecks[1]["name"]) firstthree.append(browndecks[2]["name"]) except: goodtogo = False elif nextportcolour == "grey": try: firstthree.append(greydecks[0]["name"]) firstthree.append(greydecks[1]["name"]) firstthree.append(greydecks[2]["name"]) except: goodtogo = False if goodtogo: secondfive = [] nearingdecks = sorted(colors.decklist, key=lambda d: d["count"],reverse=True) slots = 5 for deck in nearingdecks: if slots > 0: try: 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 except: goodtogo = False if goodtogo: 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(colors.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) if goodtogo: portcomment = "♥ Your Name: " + variables.name + "\n♥ Card post: " + variables.url + "\n♥ " if monochrome: portcomment += "Monochrome" else: portcomment += "Palette" portcomment += " Portfolio #: " + str(already + 1) + "\n" if monochrome: portcomment += "♥ Monochrome Color: " if nextportcolour == "grey": if variables.british: portcomment += "grey" else: portcomment += "gray" else: portcomment += nextportcolour portcomment += "\n♥ 1st deck: " + alleight[0] if alleight[0] in firstthree: portcomment += " (mastered)" portcomment += "\n♥ 2nd deck: " + alleight[1] if alleight[1] in firstthree: portcomment += " (mastered)" portcomment += "\n♥ 3rd deck: " + alleight[2] if alleight[2] in firstthree: portcomment += " (mastered)" portcomment += "\n♥ 4th deck: " + alleight[3] if alleight[3] in firstthree: portcomment += " (mastered)" portcomment += "\n♥ 5th deck: " + alleight[4] if alleight[4] in firstthree: portcomment += " (mastered)" portcomment += "\n♥ 6th deck: " + alleight[5] if alleight[5] in firstthree: portcomment += " (mastered)" portcomment += "\n♥ 7th deck: " + alleight[6] if alleight[6] in firstthree: portcomment += " (mastered)" portcomment += "\n♥ 8th deck: " + alleight[7] if alleight[7] in firstthree: portcomment += " (mastered)" else: try: portcomment += "♥ Red deck: " + thereddeck if redmastered: portcomment += " (mastered)" portcomment += "\n♥ Orange deck: " + theorangedeck if orangemastered: portcomment += " (mastered)" portcomment += "\n♥ Yellow deck: " + theyellowdeck if yellowmastered: portcomment += " (mastered)" portcomment += "\n♥ Green deck: " + thegreendeck if greenmastered: portcomment += " (mastered)" portcomment += "\n♥ Blue deck: " + thebluedeck if bluemastered: portcomment += " (mastered)" portcomment += "\n♥ Purple deck: " + thepurpledeck if purplemastered: portcomment += " (mastered)" portcomment += "\n♥ Brown deck: " + thebrowndeck if brownmastered: portcomment += " (mastered)" portcomment += "\n♥ Gray deck: " + thegreydeck if greymastered: portcomment += " (mastered)" except: goodtogo = False if goodtogo: print(portcomment) porturl = input("\nPaste the comment URL here: ") print("\n{\"event\":\"portfolio\",\"date\":datetime.datetime(" + datetime.datetime.now().strftime("%Y,%-m,%-d") + "),\"url\":\"" + porturl + "\",\"decks\":[\"" + alleight[0] + "\",\"" + alleight[1] + "\",\"" + alleight[2] + "\",\"" + alleight[3] + "\",\"" + alleight[4] + "\",\"" + alleight[5] + "\",\"" + alleight[6] + "\",\"" + alleight[7] + "\"]}") else: print("Master some more decks first") def switchit(): wantedbypriority = sorted(colors.wantedlist, key=lambda d: d["priority"]) redtrade = [] orangetrade = [] yellowtrade = [] greentrade = [] bluetrade = [] purpletrade = [] browntrade = [] greytrade = [] for card in colors.cardlist: if card["priority"] == 4 and card["dupe"] == False: if card["colour"] == "red": redtrade.append(card["name"]) elif card["colour"] == "orange": orangetrade.append(card["name"]) elif card["colour"] == "yellow": yellowtrade.append(card["name"]) elif card["colour"] == "green": greentrade.append(card["name"]) elif card["colour"] == "blue": bluetrade.append(card["name"]) elif card["colour"] == "purple": purpletrade.append(card["name"]) elif card["colour"] == "brown": browntrade.append(card["name"]) elif card["colour"] == "gray": greytrade.append(card["name"]) wantednames = [] for card in wantedbypriority: wantednames.append(card["name"]) wantall = [] tradeall = [] reds = input("Paste red pile here: ").split(", ") oranges = input("Paste orange pile here: ").split(", ") yellows = input("Paste yellow pile here: ").split(", ") greens = input("Paste green pile here: ").split(", ") blues = input("Paste blue pile here: ").split(", ") purples = input("Paste purple pile here: ").split(", ") browns = input("Paste brown pile here: ").split(", ") greys = input("Paste grey pile here: ").split(", ") chaos = input("Paste chaos pile here: ").split(", ") taken = input("Cards to remove: ").split(", ") for card in taken: if card in reds: reds.remove(card) elif card in oranges: oranges.remove(card) elif card in yellows: yellows.remove(card) elif card in greens: greens.remove(card) elif card in blues: blues.remove(card) elif card in purples: purples.remove(card) elif card in browns: browns.remove(card) elif card in greys: greys.remove(card) elif card in chaos: chaos.remove(card) wantreds = [] for card in reds: if card in wantednames: wantreds.append(card) if len(wantreds) > 5: wantreds = wantreds[:5] if len(wantreds) > len(redtrade): wantreds = wantreds[:len(redtrade)] if len(wantreds) > 0: wantall.extend(wantreds) traderedscount = len(wantreds) tradereds = [] tradereds.extend(random.sample(redtrade,len(wantreds))) tradeall.extend(tradereds) wantoranges = [] for card in oranges: if card in wantednames: wantoranges.append(card) if len(wantoranges) > 5: wantoranges = wantoranges[:5] if len(wantoranges) > len(orangetrade): wantoranges = wantoranges[:len(orangetrade)] if len(wantoranges) > 0: wantall.extend(wantoranges) tradeorangescount = len(wantoranges) tradeoranges = [] tradeoranges.extend(random.sample(orangetrade,len(wantoranges))) tradeall.extend(tradeoranges) wantyellows = [] for card in yellows: if card in wantednames: wantyellows.append(card) if len(wantyellows) > 5: wantyellows = wantyellows[:5] if len(wantyellows) > len(yellowtrade): wantyellows = wantyellows[:len(yellowtrade)] if len(wantyellows) > 0: wantall.extend(wantyellows) tradeyellowscount = len(wantyellows) tradeyellows = [] tradeyellows.extend(random.sample(yellowtrade,len(wantyellows))) tradeall.extend(tradeyellows) wantgreens = [] for card in greens: if card in wantednames: wantgreens.append(card) if len(wantgreens) > 5: wantgreens = wantgreens[:5] if len(wantgreens) > len(greentrade): wantgreens = wantgreens[:len(greentrade)] if len(wantgreens) > 0: wantall.extend(wantgreens) tradegreenscount = len(wantgreens) tradegreens = [] tradegreens.extend(random.sample(greentrade,len(wantgreens))) tradeall.extend(tradegreens) wantblues = [] for card in blues: if card in wantednames: wantblues.append(card) if len(wantblues) > 5: wantblues = wantblues[:5] if len(wantblues) > len(bluetrade): wantblues = wantblues[:len(bluetrade)] if len(wantblues) > 0: wantall.extend(wantblues) tradebluescount = len(wantblues) tradeblues = [] tradeblues.extend(random.sample(bluetrade,len(wantblues))) tradeall.extend(tradeblues) wantpurples = [] for card in purples: if card in wantednames: wantpurples.append(card) if len(wantpurples) > 5: wantpurples = wantpurples[:5] if len(wantpurples) > len(purpletrade): wantpurples = wantpurples[:len(purpletrade)] if len(wantpurples) > 0: wantall.extend(wantpurples) tradepurplescount = len(wantpurples) tradepurples = [] tradepurples.extend(random.sample(purpletrade,len(wantpurples))) tradeall.extend(tradepurples) wantbrowns = [] for card in browns: if card in wantednames: wantbrowns.append(card) if len(wantbrowns) > 5: wantbrowns = wantbrowns[:5] if len(wantbrowns) > len(browntrade): wantbrowns = wantbrowns[:len(browntrade)] if len(wantbrowns) > 0: wantall.extend(wantbrowns) tradebrownscount = len(wantbrowns) tradebrowns = [] tradebrowns.extend(random.sample(browntrade,len(wantbrowns))) tradeall.extend(tradebrowns) wantgreys = [] for card in greys: if card in wantednames: wantgreys.append(card) if len(wantgreys) > 5: wantgreys = wantgreys[:5] if len(wantgreys) > len(greytrade): wantgreys = wantgreys[:len(greytrade)] if len(wantgreys) > 0: wantall.extend(wantgreys) tradegreyscount = len(wantgreys) tradegreys = [] tradegreys.extend(random.sample(greytrade,len(wantgreys))) tradeall.extend(tradegreys) wantchaos = [] for card in chaos: if card in wantednames: wantchaos.append(card) if len(wantchaos) > 5: wantchaos = wantchaos[:5] if len(wantchaos) > 0: wantall.extend(wantchaos) tradechaos = input("Provide " + str(len(wantchaos)) + " cards for the chaos pile (for " + ", ".join(wantchaos) + "): ").split(", ") tradeall.extend(tradechaos) print("\n") if len(tradeall) > 0: if len(wantreds) > 0: print("red: " + ", ".join(tradereds) + " for " + ", ".join(wantreds)) if len(wantoranges) > 0: print("orange: " + ", ".join(tradeoranges) + " for " + ", ".join(wantoranges)) if len(wantyellows) > 0: print("yellow: " + ", ".join(tradeyellows) + " for " + ", ".join(wantyellows)) if len(wantgreens) > 0: print("green: " + ", ".join(tradegreens) + " for " + ", ".join(wantgreens)) if len(wantblues) > 0: print("blue: " + ", ".join(tradeblues) + " for " + ", ".join(wantblues)) if len(wantpurples) > 0: print("purple: " + ", ".join(tradepurples) + " for " + ", ".join(wantpurples)) if len(wantbrowns) > 0: print("brown: " + ", ".join(tradebrowns) + " for " + ", ".join(wantbrowns)) if len(wantgreys) > 0: if variables.british: print("grey: " + ", ".join(tradegreys) + " for " + ", ".join(wantgreys)) else: print("gray: " + ", ".join(tradegreys) + " for " + ", ".join(wantgreys)) if len(wantchaos) > 0: print("chaos: " + ", ".join(tradechaos) + " for " + ", ".join(wantchaos)) images = "" for card in tradeall: images += "" print("\n" + images + "\n") switchround = input("Round number: ") switchcomment = input("Comment URL: ") print("\n{\"event\":\"switch it up " + switchround + "\",\"date\":datetime.datetime(" + datetime.datetime.now().strftime("%Y,%-m,%-d") + "),\"url\":\"" + switchcomment + "\",\"pend\":[\"" + "\",\"".join(wantall) + "\"],\"lost\":[\"" + "\",\"".join(tradeall) + "\"]}") else: print("No cards found") def fish(): fishdecks = input("Paste list of decks here: ").split(", ") fishfound = [] for card in colors.cardlist: for deck in fishdecks: if card["name"][:-2] == deck: fishfound.append(card) break fishrefined = [] previouscard = "" for card in fishfound: try: if card["name"][:-2] != previouscard["name"][:-2]: fishrefined.append(card) except: fishrefined.append(card) previouscard = card fishmastered = [] fishhp = [] fishmp = [] fishlp = [] fishmass = [] fishtrade = [] for card in fishrefined: found = False for deck in colors.decklist: if found == False: if deck["name"] == card["name"][:-2]: if deck["mastered"]: fishmastered.append(card) else: if deck["priority"] == 1: fishhp.append(card) elif deck["priority"] == 2: fishmp.append(card) elif deck["priority"] == 3: fishlp.append(card) else: if card["mass"]: fishmass.append(card) else: fishtrade.append(card) found = True locations = [] if len(fishmastered) > 0: locations.append("mastered") if len(fishhp) > 0: locations.append("collecting/high priority") if len(fishmp) > 0: locations.append("collecting/medium priority") if len(fishlp) > 0: locations.append("collecting/low priority") if len(fishmass) > 0: for card in fishmass: locations.append("mass collecting/" + card["mass"][0]) if len(fishtrade) > 0: locations.append("trading") locations = list(dict.fromkeys(locations)) cardnames = [] for card in fishrefined: cardnames.append(card["name"]) if len(fishrefined) > 0: print("\nTrade post: " + variables.url + "\nNumber of matches: " + str(len(fishrefined)) + "\nCard name(s): " + ", ".join(cardnames) + "\nWhere cards are located: " + ", ".join(locations) + "\nCards:") images = "" for card in fishrefined: images += "" print(images) else: print("No cards found") def studio(): tradedupes = [] tradedupesreserve = [] tradenormal = [] tradespecial = [] for card in colors.cardlist: if card["priority"] == 4: if card["colour"] != "sig" and card["colour"] != "limited": if card["dupe"]: if len(card["mass"]) == 0: tradedupes.append(card["name"]) else: tradedupesreserve.append(card["name"]) else: if card["colour"] == "special": tradespecial.append(card["name"]) else: tradenormal.append(card["name"]) dupeslimit = 10 newlimit = 20 sigslimit = 10 choicelimit = 16 speciallimit = 10 for event in log.log: if event["date"].year == datetime.datetime.now().year and event["date"].month == datetime.datetime.now().month: if event["event"] == "art studio": try: dupeslimit -= event["exchange"]["dupes"] except: pass try: newlimit -= event["exchange"]["new"] except: pass try: sigslimit -= event["exchange"]["sigs"] except: pass try: choicelimit -= event["exchange"]["choice"] except: pass try: speciallimit -= event["exchange"]["special"] except: pass dupesalready = dupeslimit newalready = newlimit sigsalready = sigslimit choicealready = choicelimit specialalready = speciallimit if dupeslimit > len(tradedupes): tradedupes.extend(tradedupesreserve) if dupeslimit > len(tradedupes): dupeslimit = len(tradedupes) if dupeslimit > 0: dupeswant = int(input("How many randoms for doubles? (" + str(dupeslimit) + " remaining) ")) else: dupeswant = 0 if newlimit * 2 > len(tradenormal): newlimit = math.floor(len(tradenormal)/2) if newlimit > 0: newwant = int(input("How many new release cards? (" + str(newlimit) + " remaining) ")) else: newwant = 0 if sigslimit * 3 + newwant * 2 > len(tradenormal): sigslimit = math.floor((len(tradenormal) - (newwant * 2))/3) if sigslimit > 0: sigswant = int(input("How many signatures? (" + str(sigslimit) + " remaining) ")) else: sigswant = 0 if choicelimit * 3 + sigswant * 3 + newwant * 2 > len(tradenormal): choicelimit = math.floor((len(tradenormal) - ((newwant * 2) + (sigswant * 3)))/3) if choicelimit > 0: choicewant = int(input("How many choice character cards? (" + str(choicelimit) + " remaining) ")) else: choicewant = 0 if speciallimit * 3 > len(tradespecial): speciallimit = math.floor(len(tradespecial)/3) if speciallimit > 0: specialwant = int(input("How many choice special cards? (" + str(speciallimit) + " remaining) ")) else: specialwant = 0 neededdupes = dupeswant needednormal = 2 * newwant + 3 * sigswant + 3 * choicewant neededspecial = 3 * specialwant give = [] if neededdupes > 0: give.extend(random.sample(tradedupes,neededdupes)) if needednormal > 0: give.extend(random.sample(tradenormal,needednormal)) if neededspecial > 0: give.extend(random.sample(tradespecial,neededspecial)) allwantch = [] allwantsp = [] for card in colors.wantedlist: if card["colour"] == "special": allwantsp.append(card["name"]) else: allwantch.append(card["name"]) choicelist = allwantch[:choicewant] speciallist = allwantsp[:specialwant] allwants = [] if dupeswant > 1: allwants.append(str(dupeswant) + " random cards") elif dupeswant == 1: allwants.append(str(dupeswant) + " random card") if newwant > 1: allwants.append(str(newwant) + " new release cards") elif newwant == 1: allwants.append(str(newwant) + " new release card") if sigswant > 0: allwants.append(str(sigswant) + " x sig_" + variables.name.lower()) if choicewant > 0: allwants.extend(choicelist) if specialwant > 0: allwants.extend(speciallist) if len(allwants) > 0: print("\nWhat are you exchanging for?: " + ", ".join(allwants) + "\nCards you are exchanging:\n\nCard names: " + ", ".join(give) + "\nArt Studio use for the current month: random cards: " + str(10 - dupesalready + dupeswant) + "/10; new release cards: " + str(20 - newalready + newwant) + "/20; signatures: " + str(10 - sigsalready + sigswant) + "/10; character cards: " + str(16 - choicealready + choicewant) + "/16; special cards: " + str(10 - specialalready + specialwant) + "/10\n") studiourl = input("Paste in comment URL: ") studiostring = "{\"event\":\"art studio\",\"date\":datetime.datetime(" + datetime.datetime.now().strftime("%Y,%-m,%-d") + "),\"url\":\"" + studiourl + "\",\"lost\":[\"" + "\",\"".join(give) + "\"]," allchoice = [] try: allchoice.extend(choicelist) except: pass try: allchoice.extend(speciallist) except: pass if len(allchoice) > 0: studiostring += "\"pend\":[\"" + "\",\"".join(allchoice) + "\"]," studiostring += "\"exchange\":{\"dupes\":" + str(dupeswant) + ",\"new\":" + str(newwant) + ",\"sigs\":" + str(sigswant) + ",\"choice\":" + str(choicewant) + ",\"special\":" + str(specialwant) + "}}" print("\n" + studiostring) else: print("Nothing requested") def randoms(specials=False): pool = [] for card in colors.cardlist: if card["priority"] == 4 and card["dupe"] == False and card["colour"] != "sig" and card["colour"] != "limited": if specials: pool.append(card["name"]) else: if card["colour"] != "special": pool.append(card["name"]) totalrandoms = int(input("How many? (maximum " + str(len(pool)) + ") ")) try: chosen = sorted(random.sample(pool,totalrandoms)) print(", ".join(chosen)) except ValueError: print("Too many cards requested") def artshop(): wantred = [] wantorange = [] wantyellow = [] wantgreen = [] wantblue = [] wantpurple = [] wantbrown = [] wantgrey = [] for card in colors.wantedlist: if card["colour"] == "red": wantred.append(card) elif card["colour"] == "orange": wantorange.append(card) elif card["colour"] == "yellow": wantyellow.append(card) elif card["colour"] == "green": wantgreen.append(card) elif card["colour"] == "blue": wantblue.append(card) elif card["colour"] == "purple": wantpurple.append(card) elif card["colour"] == "brown": wantbrown.append(card) elif card["colour"] == "gray": wantgrey.append(card) requestcards = [] potentialred = [] requestred = [] potentialred.extend(wantred[:colors.crayred]) for card in potentialred: if card["name"][:-2] != wantred[colors.crayred]["name"][:-2]: requestred.append(card) if len(requestred) > 0: for card in requestred: requestcards.append(card["name"]) potentialorange = [] requestorange = [] potentialorange.extend(wantorange[:colors.crayorange]) for card in potentialorange: if card["name"][:-2] != wantorange[colors.crayorange]["name"][:-2]: requestorange.append(card) if len(requestorange) > 0: for card in requestorange: requestcards.append(card["name"]) potentialyellow = [] requestyellow = [] potentialyellow.extend(wantyellow[:colors.crayyellow]) for card in potentialyellow: if card["name"][:-2] != wantyellow[colors.crayyellow]["name"][:-2]: requestyellow.append(card) if len(requestyellow) > 0: for card in requestyellow: requestcards.append(card["name"]) potentialgreen = [] requestgreen = [] potentialgreen.extend(wantgreen[:colors.craygreen]) for card in potentialgreen: if card["name"][:-2] != wantgreen[colors.craygreen]["name"][:-2]: requestgreen.append(card) if len(requestgreen) > 0: for card in requestgreen: requestcards.append(card["name"]) potentialblue = [] requestblue = [] potentialblue.extend(wantblue[:colors.crayblue]) for card in potentialblue: if card["name"][:-2] != wantblue[colors.crayblue]["name"][:-2]: requestblue.append(card) if len(requestblue) > 0: for card in requestblue: requestcards.append(card["name"]) potentialpurple = [] requestpurple = [] potentialpurple.extend(wantpurple[:colors.craypurple]) for card in potentialpurple: if card["name"][:-2] != wantpurple[colors.craypurple]["name"][:-2]: requestpurple.append(card) if len(requestpurple) > 0: for card in requestpurple: requestcards.append(card["name"]) potentialbrown = [] requestbrown = [] potentialbrown.extend(wantbrown[:colors.craybrown]) for card in potentialbrown: if card["name"][:-2] != wantbrown[colors.craybrown]["name"][:-2]: requestbrown.append(card) if len(requestbrown) > 0: for card in requestbrown: requestcards.append(card["name"]) potentialgrey = [] requestgrey = [] potentialgrey.extend(wantgrey[:colors.craygrey]) for card in potentialgrey: if card["name"][:-2] != wantgrey[colors.craygrey]["name"][:-2]: requestgrey.append(card) if len(requestgrey) > 0: for card in requestgrey: requestcards.append(card["name"]) tradecommon = list((Counter(colors.tradeout) & Counter(colors.tradein)).elements()) sketch = len(tradecommon) if sketch > 0: sketchdifference = int(sketch / 20) - colors.redeemedsketch else: sketchdifference = 0 if len(requestcards) == 0 and sketchdifference < 1: print("Nothing to request") else: shopstring = "\nName: " + variables.name + "\nCard Post: " + variables.url + "\n" if len(requestcards) > 0: shopstring += "Choice Cards: " + ", ".join(requestcards) + "\n" if sketchdifference > 0: shopstring += "Number of Sketchpads: " + str(sketchdifference) + "\nSketchpad Prize: prize " + str(variables.sketchprize) + "\n" if len(requestcards) > 0: shopstring += "Crayons: " if len(requestred) > 0: shopstring += " x " + str(len(requestred)) if len(requestorange) + len(requestyellow) + len(requestgreen) + len(requestblue) + len(requestpurple) + len(requestbrown) + len(requestgrey) > 0: shopstring += ", " if len(requestorange) > 0: shopstring += " x " + str(len(requestorange)) if len(requestyellow) + len(requestgreen) + len(requestblue) + len(requestpurple) + len(requestbrown) + len(requestgrey) > 0: shopstring += ", " if len(requestyellow) > 0: shopstring += " x " + str(len(requestyellow)) if len(requestgreen) + len(requestblue) + len(requestpurple) + len(requestbrown) + len(requestgrey) > 0: shopstring += ", " if len(requestgreen) > 0: shopstring += " x " + str(len(requestgreen)) if len(requestblue) + len(requestpurple) + len(requestbrown) + len(requestgrey) > 0: shopstring += ", " if len(requestblue) > 0: shopstring += " x " + str(len(requestblue)) if len(requestpurple) + len(requestbrown) + len(requestgrey) > 0: shopstring += ", " if len(requestpurple) > 0: shopstring += " x " + str(len(requestpurple)) if len(requestbrown) + len(requestgrey) > 0: shopstring += ", " if len(requestbrown) > 0: shopstring += " x " + str(len(requestbrown)) if len(requestgrey) > 0: shopstring += ", " if len(requestgrey) > 0: shopstring += " x " + str(len(requestgrey)) shopstring += "\n" if sketchdifference > 0: shopstring += "Sketchpads:\n x " + str(sketchdifference) print(shopstring) shopurl = input("\nPaste in comment URL: ") shoplog = "\n{\"event\":\"art shop\",\"date\":datetime.datetime(" + datetime.datetime.now().strftime("%Y,%-m,%-d") + "),\"url\":\"" + shopurl + "\"" if len(requestcards) > 0: shoplog += ",\"pend\":[\"" + "\",\"".join(requestcards) + "\"],\"crayons\":{" if len(requestred) > 0: shoplog += "\"red\":-" + str(len(requestred)) if len(requestorange) + len(requestyellow) + len(requestgreen) + len(requestblue) + len(requestpurple) + len(requestbrown) + len(requestgrey) > 0: shoplog += "," if len(requestorange) > 0: shoplog += "\"orange\":-" + str(len(requestorange)) if len(requestyellow) + len(requestgreen) + len(requestblue) + len(requestpurple) + len(requestbrown) + len(requestgrey) > 0: shoplog += "," if len(requestyellow) > 0: shoplog += "\"yellow\":-" + str(len(requestyellow)) if len(requestgreen) + len(requestblue) + len(requestpurple) + len(requestbrown) + len(requestgrey) > 0: shoplog += "," if len(requestgreen) > 0: shoplog += "\"green\":-" + str(len(requestgreen)) if len(requestblue) + len(requestpurple) + len(requestbrown) + len(requestgrey) > 0: shoplog += "," if len(requestblue) > 0: shoplog += "\"blue\":-" + str(len(requestblue)) if len(requestpurple) + len(requestbrown) + len(requestgrey) > 0: shoplog += "," if len(requestpurple) > 0: shoplog += "\"purple\":-" + str(len(requestpurple)) if len(requestbrown) + len(requestgrey) > 0: shoplog += "," if len(requestbrown) > 0: shoplog += "\"brown\":-" + str(len(requestbrown)) if len(requestgrey) > 0: shoplog += "," if len(requestgrey) > 0: shoplog += "\"gray\":-" + str(len(requestgrey)) shoplog += "}" if sketchdifference > 0: shoplog += ",\"sketch\":-" + str(sketchdifference) shoplog += "}" print(shoplog) def stats(): if colors.tradepend > 0: print("\nCollection size: " + str(len(colors.cardlist) + colors.tradepend) + " cards (" + str(len(colors.cardlist)) + " + " + str(colors.tradepend) + " pending trade)") else: print("\nCollection size: " + str(len(colors.cardlist)) + " cards") print("Level: " + colors.rank) tradesize = 0 for card in colors.cardlist: if card["priority"] == 4: tradesize += 1 print("Tradepile: " + str(tradesize) + " cards") masteredsize = 0 for deck in colors.decklist: if deck["mastered"]: masteredsize += 1 print("Wantlist: " + str(len(colors.wantedlist)) + " cards") print("Mastered: " + str(masteredsize) + " decks") print("Mass collection progress:") for mass in sorted(variables.masscollect): held = 0 for card in colors.cardlist: if not card["dupe"]: if mass in card["mass"]: held += 1 themecount = 0 try: allseries = 0 for series in variables.masscollect[mass]["series"]: seriescount = 0 for deck in colors.deckkey: if colors.deckkey[deck]["series"].lower() == series.lower(): seriescount += 1 allseries += seriescount themecount += 20 * allseries except KeyError: pass try: themecount += 20 * len(variables.masscollect[mass]["decks"]) except KeyError: pass try: themecount += len(variables.masscollect[mass]["singles"]) except KeyError: pass if held == themecount: print(" " + mass + ": complete") else: print(" " + mass + ": " + str(held) + "/" + str(themecount) + " (" + str(int((float(held)/float(themecount)) * 100)) + "%)") def tradecheck(): inoffer = input("Paste cards they offered here: ").split(", ") outoffer = input("Paste cards they requested here: ").split(", ") insig = 0 inone = 0 intwo = 0 inthree = 0 infour = 0 for incard in inoffer: if incard[0:4] == "sig_": insig = 1 else: found = False for card in colors.wantedlist: if found == False: if card["name"] == incard: if card["priority"] == 1: inone += 1 elif card["priority"] == 2: intwo += 1 elif card["priority"] == 3: inthree += 1 found = True if found == False: infour += 1 print("\n") offerstring = "They are offering " if inone > 0: offerstring += str(inone) + " high priority" if intwo + inthree + infour + insig > 0: offerstring += ", " if intwo > 0: offerstring += str(intwo) + " medium priority" if inthree + infour + insig > 0: offerstring += ", " if inthree > 0: offerstring += str(inthree) + " low priority" if infour + insig > 0: offerstring += ", " if infour > 0: offerstring += str(infour) + " randoms" if insig > 0: offerstring += ", " if insig > 0: offerstring += " sig" offerstring += " = " + str(inone + intwo + inthree + infour + insig) + " cards" print(offerstring) reversecards = colors.cardlist[::-1] outsig = 0 outone = 0 outtwo = 0 outthree = 0 outfour = 0 notin = [] for outcard in outoffer: if outcard[0:4] == "sig_": outsig = 1 else: found = False for card in reversecards: if found == False: if card["name"] == outcard: if card["priority"] == 1: outone += 1 elif card["priority"] == 2: outtwo += 1 elif card["priority"] == 3: outthree += 1 elif card["priority"] == 4: outfour += 1 found = True if found == False: notin.append(outcard) requeststring = "They are requesting " if outone > 0: requeststring += str(outone) + " high priority" if outtwo + outthree + outfour + outsig > 0: requeststring += ", " if outtwo > 0: requeststring += str(outtwo) + " medium priority" if outthree + outfour + outsig > 0: requeststring += ", " if outthree > 0: requeststring += str(outthree) + " low priority" if outfour + outsig > 0: requeststring += ", " if outfour > 0: requeststring += str(outfour) + " from tradepile" if outsig > 0: requeststring += ", " if outsig > 0: requeststring += " sig" requeststring += " = " + str(outone + outtwo + outthree + outfour + outsig) + " cards" print(requeststring) if len(notin) > 0: print("Requested but not in collection: " + ", ".join(notin)) def cardcheck(): thecard = input("Card name: ") print("\n") found = False for card in colors.cardlist: if card["name"] == thecard: print("In collection:") print(card) found = True if found == False: for card in colors.pends: if card == thecard: print("Card on pending list") found = True if found == False: for card in colors.wantedlist: if card["name"] == thecard: print("On wantlist:") print(card) found = True if found == False: print("No matches") def deckcheck(): thedeck = input("Deck name: ") print("\n") found = False for deck in colors.decklist: if deck["name"] == thedeck: print(deck) found = True if found == False: for theme in variables.masscollect: try: for deck in variables.masscollect[theme]["decks"]: if deck == thedeck: print("On mass deck wantlist: " + theme) found = True except: pass if found == False: print("No matches") def maketrade(): print("\nMake sure the other player’s tradepile and wantlist are in trade.py") theirname = input("Player with whom you are trading: ") theircards = list(dict.fromkeys(trade.theirtradepile.split(", "))) removetheirs = input("Cards to remove from their tradepile: ").split(", ") for card in removetheirs: if card in theircards: theircards.remove(card) hpwc = [] hpws = [] mpwc = [] mpws = [] lpwc = [] lpws = [] for thecard in theircards: for card in colors.wantedlist: if card["name"] == thecard: if card["colour"] == "special" or card["colour"] == "limited": if card["priority"] == 1: hpws.append(thecard) elif card["priority"] == 2: mpws.append(thecard) elif card["priority"] == 3: lpws.append(thecard) else: if card["priority"] == 1: hpwc.append(thecard) elif card["priority"] == 2: mpwc.append(thecard) elif card["priority"] == 3: lpwc.append(thecard) theirwantlist = list(dict.fromkeys(trade.theirwantlist.split(", "))) lptc = [] lpts = [] mptc = [] mpts = [] hptc = [] hpts = [] randomch = [] randomsp = [] totalrandomch = 0 totalrandomsp = 0 ifrandoms = input("Do they take randoms? [y/N] ") if ifrandoms == "y": randoms = True else: randoms = False for thecard in theirwantlist: found = False for card in reversed(colors.cardlist): if found == False: if card["name"] == thecard: if card["colour"] == "special" or card["colour"] == "limited": if card["priority"] == 4: lpts.append(thecard) found = True elif card["priority"] == 3: mpts.append(thecard) found = True elif variables.trademedium: if card["priority"] == 2: hpts.append(thecard) found = True else: if card["priority"] == 4: lptc.append(thecard) found = True elif card["priority"] == 3: mptc.append(thecard) found = True elif variables.trademedium: if card["priority"] == 2: hptc.append(thecard) found = True if randoms: for card in colors.cardlist: if card["priority"] == 4 and card["dupe"] == False: if card not in theirwantlist: if card["colour"] == "special": randomsp.append(card["name"]) else: randomch.append(card["name"]) inc = [] outc = [] inc.extend(hpwc) outc.extend(lptc) medchadded = False if len(inc) > len(outc): if randoms: try: random.shuffle(randomch) neededrandomch = len(inc) - len(outc) totalrandomch += neededrandomch add = randomch[:neededrandomch] randomch = randomch[neededrandomch:] outc.extend(add) trymediumch = True except: outc.extend(mptc) medchadded = True if len(inc) > len(outc): trymediumch = False outc.extend(hptc) else: trymediumch = True else: outc.extend(mptc) medchadded = True if len(inc) > len(outc): trymediumch = False outc.extend(hptc) else: trymediumch = True else: trymediumch = True if trymediumch: inc.extend(mpwc) if len(inc) > len(outc): if randoms: try: random.shuffle(randomch) neededrandomch = len(inc) - len(outc) totalrandomch += neededrandomch add = randomch[:neededrandomch] randomch = randomch[neededrandomch:] outc.extend(add) trylowch = True except: trylowch = False if not medchadded: outc.extend(mptc) else: trylowch = False if not medchadded: outc.extend(mptc) else: trylowch = True else: trylowch = False if trylowch: inc.extend(lpwc) if len(inc) > len(outc): if randoms: try: random.shuffle(randomch) neededrandomch = len(inc) - len(outc) totalrandomch += neededrandomch add = randomch[:neededrandomch] randomch = randomch[neededrandomch:] outc.extend(add) except: pass if len(inc) > len(outc): inc = inc[:len(outc)] elif len(outc) > len(inc): outc = outc[:len(inc)] ins = [] outs = [] ins.extend(hpws) outs.extend(lpts) medspadded = False if len(ins) > len(outs): if randoms: try: random.shuffle(randomsp) neededrandomsp = len(ins) - len(outs) totalrandomsp += neededrandomsp add = randomsp[:neededrandomsp] randomsp = randomsp[neededrandomsp:] outs.extend(add) trymediumsp = True except: outs.extend(mpts) medspadded = True if len(ins) > len(outs): trymediumsp = False outs.extend(hpts) else: trymediumsp = True else: outs.extend(mpts) medspadded = True if len(ins) > len(outs): trymediumsp = False outs.extend(hpts) else: trymediumsp = True else: trymediumsp = True if trymediumsp: ins.extend(mpws) if len(ins) > len(outs): if randoms: try: random.shuffle(randomsp) neededrandomsp = len(ins) - len(outs) totalrandomsp += neededrandomsp add = randomsp[:neededrandomsp] randomsp = randomsp[neededrandomsp:] outs.extend(add) trylowsp = True except: trylowsp = False if not medspadded: outs.extend(mpts) else: trylowsp = False if not medspadded: outs.extend(mpts) else: trylowsp = True else: trylowsp = False if trylowsp: ins.extend(lpws) if len(ins) > len(outs): if randoms: try: random.shuffle(randomsp) neededrandomsp = len(ins) - len(outs) totalrandomsp += neededrandomsp add = randomsp[:neededrandomsp] randomsp = randomsp[neededrandomsp:] outs.extend(add) except: pass if len(ins) > len(outs): ins = ins[:len(outs)] elif len(outs) > len(ins): outs = outs[:len(ins)] thein = sorted(inc + ins) theout = sorted(outc + outs) if randoms: realwant = [] fakewant = [] for card in theout: if card in theirwantlist: realwant.append(card) else: fakewant.append(card) theout = realwant + fakewant randomstotal = totalrandomch + totalrandomsp addsigs = input("Add signatures? [y/N] ") if addsigs == "y": thein.append("sig_" + theirname.lower()) theout.append("sig_" + variables.name.lower()) if len(thein) > 0: tradestring = "\nmy " + ", ".join(theout) + "\n\nfor your " + ", ".join(thein) + "?" if randoms: if randomstotal > 0: tradestring += "\n\n(" + str(len(thein)) + " cards, including " + str(randomstotal) + " randoms [end of list])" elif len(thein) > 19: tradestring += "\n\n(" + str(len(thein)) + " cards)" tradestring += "\n\n" print(tradestring) tradeurl = input("\nPaste in comment URL: ") print("\n{\"event\":\"trade with " + theirname + "\",\"date\":datetime.datetime(" + datetime.datetime.now().strftime("%Y,%-m,%-d") + "),\"url\":\"" + tradeurl + "\",\"lost\":[\"" + "\",\"".join(theout) + "\"],\"pend\":[\"" + "\",\"".join(thein) + "\"]}") else: print("Nothing to trade") def masteredtoday(): mastereddecks = [] for deck in colors.decklist: try: if deck["mastered"].date() == datetime.datetime.today().date(): mastereddecks.append(deck["name"]) except: pass if len(mastereddecks) > 0: print(", ".join(mastereddecks)) else: print("No decks mastered today") def topwant(special=False): wantedch = [] wantedsp = [] for card in colors.wantedlist: if card["colour"] == "special": wantedsp.append(card["name"]) else: wantedch.append(card["name"]) showcards = int(input("How many to show? ")) if special: print(", ".join(wantedsp[:showcards])) else: print(", ".join(wantedch[:showcards])) 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("\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("\nSeries: " + ", ".join(swapseries) + "\nList of cards given: " + ", ".join(allout) + "\n") swapcount = 1 for swap in allswaps: print("Swap " + str(swapcount) + ": " + ", ".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) + "\"]}") def roulette(): x = "temp" inside = random.randint(50,(12 * (datetime.datetime.today().year - datetime.datetime(2010,5,1).year) + datetime.datetime.today().month - datetime.datetime(2010,5,1).month - 50)) evenodd = random.choice(["even","odd"]) warmcool = random.choice(["warm","cool"]) print("\nInside Bet: " + str(inside) + "\n\nOutside Bets:\nOdd/Even: " + evenodd + "\nWarm/Cool: " + warmcool) pool = [] for card in colors.cardlist: if card["priority"] == 4 and card["dupe"] == False and card["colour"] != "sig" and card["colour"] != "limited" and len(card["mass"]) == 0 and card["colour"] != "special": pool.append(card["name"]) if len(pool) > 9: chosen = sorted(random.sample(pool,10)) print("\nDouble Down:\n\nCard names: " + ", ".join(chosen)) theround = input("\nRound number: ") letteurl = input("Comment URL: ") print("\n{\"event\":\"release roulette " + theround + "\",\"date\":datetime.datetime(" + datetime.datetime.now().strftime("%Y,%-m,%-d") + "),\"url\":\"" + letteurl + "\",\"lost\":[\"" + "\",\"".join(chosen) + "\"]}") if __name__ == "__main__": while True: index = 0 # adapted from https://stackoverflow.com/a/64536882 indexValidList = [] print("Choose from the list:") options = ["Generate next palette portfolio","Generate next monochrome portfolio","Generate Switch It Up request","Generate Swap Station request","Generate Go Fish comment","Generate Release Roulette comment","Generate Riku’s Favors 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 most wanted character cards","See most wanted special cards","See some statistics about the collection"] for optionName in options: index = index + 1 indexValidList.extend([options.index(optionName)]) print(str(index) + ") " + optionName) inputValid = False while not inputValid: inputRaw = input("Option: ") inputNo = int(inputRaw) - 1 if inputNo > -1 and inputNo < len(indexValidList): selected = indexValidList[inputNo] inputValid = True break else: print("Select a number from the list") chosen = options[selected] if chosen == "Generate Riku’s Favors comment": newriku() elif chosen == "Generate next palette portfolio": nextportfolio() elif chosen == "Generate next monochrome portfolio": nextportfolio(True) elif chosen == "Generate Switch It Up request": switchit() elif chosen == "Generate Go Fish comment": fish() elif chosen == "Generate art studio request": studio() elif chosen == "Get a list of random cards from tradepile (excluding specials)": randoms() elif chosen == "Get a list of random cards from tradepile (including specials)": randoms(True) elif chosen == "Generate art shop request": artshop() elif chosen == "See some statistics about the collection": stats() elif chosen == "Check a trade offer": tradecheck() elif chosen == "Check a card in the collection": cardcheck() elif chosen == "Check details of a deck": deckcheck() elif chosen == "See decks mastered today": masteredtoday() elif chosen == "Propose a trade": maketrade() elif chosen == "Generate Swap Station request": swapstation() elif chosen == "Generate Release Roulette comment": roulette() elif chosen == "See most wanted character cards": topwant() elif chosen == "See most wanted special cards": topwant(True) print("\n") input("Press Enter to continue or Ctrl-C to exit")