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) proceed = True for card in requestred: if card["name"] in colors.pends: proceed = False if not proceed: requestred = [] 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) proceed = True for card in requestorange: if card["name"] in colors.pends: proceed = False if not proceed: requestorange = [] 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) proceed = True for card in requestyellow: if card["name"] in colors.pends: proceed = False if not proceed: requestyellow = [] 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) proceed = True for card in requestgreen: if card["name"] in colors.pends: proceed = False if not proceed: requestgreen = [] 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) proceed = True for card in requestblue: if card["name"] in colors.pends: proceed = False if not proceed: requestblue = [] 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) proceed = True for card in requestpurple: if card["name"] in colors.pends: proceed = False if not proceed: requestpurple = [] 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) proceed = True for card in requestbrown: if card["name"] in colors.pends: proceed = False if not proceed: requestbrown = [] 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) proceed = True for card in requestgrey: if card["name"] in colors.pends: proceed = False if not proceed: requestgrey = [] 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) + "\"]}") def natsume(): natsudecks = input("Paste in list of decks: ").split(", ") natsuwant = [] natsugivech = [] natsugivesp = [] for card in colors.cardlist: for deck in natsudecks: for number in colors.numbers: if card["name"] == deck + number: if card["priority"] > 2: if card["colour"] == "special": natsugivesp.append(card) else: natsugivech.append(card) for card in colors.wantedlist: for deck in natsudecks: for number in colors.numbers: if card["name"] == deck + number: natsuwant.append(card) for card in natsugivech: count = 0 for othercard in natsugivech: if othercard["name"][:-2] == card["name"][:-2]: count += 1 card["count"] = count natsugivech = sorted(natsugivech, key=lambda d: d["count"],reverse=True) natsugivech = sorted(natsugivech, key=lambda d: d["priority"],reverse=True) for card in natsugivesp: count = 0 for othercard in natsugivesp: if othercard["name"][:-2] == card["name"][:-2]: count += 1 card["count"] = count natsugivesp = sorted(natsugivesp, key=lambda d: d["count"],reverse=True) natsugivesp = sorted(natsugivesp, key=lambda d: d["priority"],reverse=True) natsuwantgrouped = [] natsugivechgrouped = [] natsugivespgrouped = [] index = 0 for card in natsuwant: if index > 0: if card["name"][:-2] == natsuwant[index-1]["name"][:-2]: listone.append(card) if index + 1 == len(natsuwant): natsuwantgrouped.append(listone) else: natsuwantgrouped.append(listone) listone = [] listone.append(card) else: listone = [] listone.append(card) index += 1 index = 0 for card in natsugivech: if index > 0: if card["name"][:-2] == natsugivech[index-1]["name"][:-2]: listtwo.append(card["name"]) if index + 1 == len(natsugivech): natsugivechgrouped.append(listtwo) else: natsugivechgrouped.append(listtwo) listtwo = [] listtwo.append(card["name"]) else: listtwo = [] listtwo.append(card["name"]) index += 1 index = 0 for card in natsugivesp: if index > 0: if card["name"][:-2] == natsugivesp[index-1]["name"][:-2]: listthree.append(card["name"]) if index + 1 == len(natsugivesp): natsugivespgrouped.append(listthree) else: natsugivespgrouped.append(listthree) listthree = [] listthree.append(card["name"]) else: listthree = [] listthree.append(card["name"]) index += 1 natsugivechgrouped = natsugivechgrouped[:5] natsugivespgrouped = natsugivespgrouped[:5] finalwant = [] finalgive = [] for group in natsuwantgrouped: if len(finalwant) < 5: if group[0]["colour"] == "special": if len(natsugivespgrouped) > 0: if natsugivespgrouped[0][0][:-2] == group[0]["name"][:-2]: if len(natsugivespgrouped) > 1: group = group[:len(natsugivespgrouped[1])] natsugivespgrouped[1] = natsugivespgrouped[1][:len(group)] for givecard in natsugivespgrouped[1]: finalgive.append(givecard) natsugivespgrouped.pop(1) for card in group: finalwant.append(card["name"]) else: group = group[:len(natsugivespgrouped[0])] natsugivespgrouped[0] = natsugivespgrouped[0][:len(group)] for givecard in natsugivespgrouped[0]: finalgive.append(givecard) natsugivespgrouped.pop(0) for card in group: finalwant.append(card["name"]) else: if len(natsugivechgrouped) > 0: if natsugivechgrouped[0][0][:-2] == group[0]["name"][:-2]: if len(natsugivechgrouped) > 1: group = group[:len(natsugivechgrouped[1])] natsugivechgrouped[1] = natsugivechgrouped[1][:len(group)] for givecard in natsugivechgrouped[1]: finalgive.append(givecard) natsugivechgrouped.pop(1) for card in group: finalwant.append(card["name"]) else: group = group[:len(natsugivechgrouped[0])] natsugivechgrouped[0] = natsugivechgrouped[0][:len(group)] for givecard in natsugivechgrouped[0]: finalgive.append(givecard) natsugivechgrouped.pop(0) for card in group: finalwant.append(card["name"]) finalwant = finalwant[:5] finalgive = finalgive[:5] if len(finalwant) > 0: print("\nName: " + variables.name + "\nCards you are turning in (" + str(len(finalwant)) + "/5):\n\nCard names: " + ", ".join(finalgive) + "\nCards you want: " + ", ".join(finalwant)) theround = input("\nRound number: ") natsurl = input("Comment URL: ") print("\n{\"event\":\"natsume’s book of cards " + theround + "\",\"date\":datetime.datetime(" + datetime.datetime.now().strftime("%Y,%-m,%-d") + "),\"url\":\"" + natsurl + "\",\"lost\":[\"" + "\",\"".join(finalgive) + "\"],\"received\":[\"" + "\",\"".join(finalwant) + "\"]}") else: print("Nothing can be swapped") def lsa(): thephrase = input("Phrase: ").replace(" ","").lower() holder = [] slots = len(thephrase) while slots > 0: holder.append("") slots -= 1 nospecials = [] for card in colors.wantedlist: if card["colour"] != "special": nospecials.append(card["name"]) for card in nospecials: index = 0 stop = False while index < len(thephrase): if not stop: if holder[index] == "": if thephrase[index] in card[:-2]: holder[index] = card stop = True index += 1 print(", ".join(holder)) theround = input("\nRound number: ") lsaurl = input("Comment URL: ") print("\n{\"event\":\"little spell academia " + theround + "\",\"date\":datetime.datetime(" + datetime.datetime.now().strftime("%Y,%-m,%-d") + "),\"url\":\"" + lsaurl + "\",\"received\":[\"" + "\",\"".join(holder) + "\"]}") 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 Natsume’s Book of Cards comment","Generate Little Spell Academia 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) elif chosen == "Generate Natsume’s Book of Cards comment": natsume() elif chosen == "Generate Little Spell Academia comment": lsa() print("\n") input("Press Enter to continue or Ctrl-C to exit")