def id_to_card(card_id): import app.mtga_app as mtga_app # TODO: this is silly try: return all_mtga_cards.find_one(card_id) except: mtga_app.mtga_logger.error("{}Unknown mtga_id: {}".format(ld(), card_id)) mtga_app.mtga_watch_app.send_error("Unknown mtga_id: {}".format(card_id))
def sort_data(self): for i in self.wishList: card = all_mtga_cards.find_one(i) if card.rarity == "Rare": self.rares = self.rares + self.wishList[i] self.set_arrange(card, self.raresDict, self.wishList[i]) elif card.rarity == "Mythic Rare": self.mythics = self.mythics + self.wishList[i] self.set_arrange(card, self.mythicsDict, self.wishList[i])
def get_collection(self): """Generator for MTGA collection""" collection = self.get_last_json_block('<== ' + MTGA_COLLECTION_KEYWORD) for (mtga_id, count) in iteritems(collection): try: card = all_mtga_cards.find_one(mtga_id) except ValueError as exception: yield [mtga_id, MtgaUnknownCard(exception), count] #Card not found, try to get it from scryfall card = self._fetch_card_from_scryfall(mtga_id) if card is not None: yield [mtga_id, card, count]
def get_collection(self): collection = self.get_last_json_block('<== ' + MTGA_COLLECTION_KEYWORD) for (id, count) in iteritems(collection): try: card = all_mtga_cards.find_one(id) yield [card, count] except ValueError as exception: yield MtgaUnknownCard(exception) #Card not found, try to get it from scryfall try: card = scryfall.get_mtga_card(id) yield [card, count] except Exception as scryfall_error: yield scryfall.ScryfallError(scryfall_error)
dictionary[card.set] = [lastValues[0] + 1, lastValues[1] + amount] def in_booster(card): if card.set != "ANA": if card.set_number < setMaxNumber[card.set]: return True return False playerRares = 0 playerTotalRares = 0 cardList = {} for key, value in collection.items(): try: tempCard = all_mtga_cards.find_one(key) # print(tempCard.card_type) if tempCard.rarity != "Basic": # print(tempCard.pretty_name + " " + tempCard.set + " x" + str(value) ) validCards = validCards + 1 cardCount += value set_sort(sets, tempCard, value) cardList[key] = value if tempCard.rarity == "Rare": set_sort(rares, tempCard, value) playerRares = playerRares + 1 playerTotalRares = playerTotalRares + value except ValueError as e: pass cards = 0 cardsInSet = {}
def find_one_mtga_card(mtga_id): from mtga.set_data import all_mtga_cards return all_mtga_cards.find_one(mtga_id)
def card_name(obj): oid = obj.grpId try: return all_mtga_cards.find_one(oid).pretty_name except ValueError: return "<Unknown card %s>" % oid
def get_name(self): oid = self.grpId try: return all_mtga_cards.find_one(oid).pretty_name except ValueError: return "<Unknown card %s>" % oid
def handle_data(self, data): global matchId global searchForHands global cards gameStart = "DuelScene.GameStart" possibleStartingHand = '"prevGameStateId":' endOfStartingHand = '"turnNumber": 1,' zones = "zones" gameEnd = "DuelScene.GameStop" if data.find(gameStart) >= 0: # print("Found DieRoll") # remove first two lines of data (html divs) postString = data.split("\n", 2)[2] data2 = json.loads(postString) try: matchId = data2["params"]["payloadObject"]["matchId"] eventId = data2["params"]["payloadObject"]["eventId"] except: # print("Error: No matchId data") return pass print("id: " + matchId) print("match type: " + eventId) elif matchId != "" and data.find(endOfStartingHand) >= 0: # print("Found First Turn") searchForHands = False elif matchId != "" and searchForHands and data.find( possibleStartingHand) >= 0 and data.find(zones) >= 0: # print("Found Cards in Hand") # remove first line of data (html div) postString = data.split("\n", 1)[1] data2 = json.loads(postString) try: cards = data2["greToClientEvent"]["greToClientMessages"][0][ "gameStateMessage"]["gameObjects"] except: # gameStateId = data2["greToClientEvent"]["greToClientMessages"][0]["gameStateMessage"]["gameStateId"] # print("Error: No card data with id:" + matchId + ", gameStateId: " +str(gameStateId)) return elif matchId != "" and data.find(gameEnd) >= 0: # print("Found MatchCompleted") # remove first two lines of data (html divs) postString = data.split("\n", 2)[2] data2 = json.loads(postString) # check that GameEnd matchId is same as GameStart resultmatchId = data2["params"]["payloadObject"]["matchId"] if matchId != resultmatchId: print("Error: Could not find winner with id: " + matchId) return print("Final Hand") postCards = [] # just take the groupId from cards since that's all we need for card in cards: postCards.append(card['grpId']) for card in postCards: print(all_mtga_cards.find_one(card)) owner = data2["params"]["payloadObject"]["seatId"] winner = data2["params"]["payloadObject"]["winningTeamId"] print("Owner: " + str(owner)) print("Winner: " + str(winner)) mulliganedHands = data2["params"]["payloadObject"][ "mulliganedHands"] if len(mulliganedHands) > 0: print("Mulliganed Hands: ") i = 1 for hand in mulliganedHands: print("Hand " + str(i) + ":") i = i + 1 for card in hand: print(all_mtga_cards.find_one(card['grpId'])) print() # reset globals matchId = "" searchForHands = True cards = []