def test_find_returns_card(self): with vcr.use_cassette('fixtures/choice_of_damnations.yaml'): card = Card.find(88803) self.assertEqual('Choice of Damnations', card.name) self.assertEqual('{5}{B}', card.mana_cost) self.assertEqual(6, card.cmc) self.assertEqual('Sorcery — Arcane', card.type) self.assertTrue('Black' in card.colors) self.assertTrue('Sorcery' in card.types) self.assertTrue('Arcane' in card.subtypes) self.assertEqual('Rare', card.rarity) self.assertEqual('SOK', card.set) self.assertEqual("Target opponent chooses a number. You may have that player lose that much life. If you don't, that player sacrifices all but that many permanents.", card.text) self.assertEqual("\"Life is a series of choices between bad and worse.\"\n—Toshiro Umezawa", card.flavor) self.assertEqual('Tim Hildebrandt', card.artist) self.assertEqual('62', card.number) self.assertEqual(88803, card.multiverse_id) self.assertEqual('http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=88803&type=card', card.image_url) self.assertTrue(len(card.rulings) > 0) self.assertTrue({"name":"Scelta della Dannazione","language":"Italian","multiverseid":105393} in card.foreign_names) self.assertTrue('SOK' in card.printings) self.assertEqual("Target opponent chooses a number. You may have that player lose that much life. If you don't, that player sacrifices all but that many permanents.", card.original_text) self.assertEqual('Sorcery — Arcane', card.original_type) self.assertTrue({"format":"Commander","legality":"Legal"} in card.legalities) self.assertEqual('1c4aab072d52d283e902f2302afa255b39e0794b', card.id)
def exchangeRareForToken(self, playerId, cardId): card = False try: card = Card.find(cardId) except: pass if not card or (card.rarity != 'Rare' and card.rarity != 'Mythic Rare'): return False playerInfo = self.getPlayerInfo(playerId) if not playerInfo: return False cardTokenValue = 2 if card and card.rarity == 'Mythic Rare' else 1 playerInfo.rareTokens += cardTokenValue rare = next((r for r in self.rarePool if r.id == cardId), False) if rare: rare.count += 1 else: self.rarePool += [self.RarePoolCard(cardId)] self.db.save() return True
def test_find_returns_card(self): with vcr.use_cassette('fixtures/choice_of_damnations.yaml'): card = Card.find(88803) self.assertEqual('Choice of Damnations', card.name) self.assertEqual('{5}{B}', card.mana_cost) self.assertEqual(6, card.cmc) self.assertEqual('Sorcery — Arcane', card.type) self.assertTrue('Black' in card.colors) self.assertEqual(['B'], card.color_identity) self.assertTrue('Sorcery' in card.types) self.assertTrue('Arcane' in card.subtypes) self.assertEqual('Rare', card.rarity) self.assertEqual('SOK', card.set) self.assertEqual('Saviors of Kamigawa', card.set_name) self.assertEqual("Target opponent chooses a number. You may have that player lose that much life. If you don't, that player sacrifices all but that many permanents.", card.text) self.assertEqual("\"Life is a series of choices between bad and worse.\"\n—Toshiro Umezawa", card.flavor) self.assertEqual('Tim Hildebrandt', card.artist) self.assertEqual('62', card.number) self.assertEqual(88803, card.multiverse_id) self.assertEqual('http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=88803&type=card', card.image_url) self.assertTrue(len(card.rulings) > 0) self.assertTrue({"name":"Scelta della Dannazione","language":"Italian","multiverseid":105393, "imageUrl":"http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=105393&type=card"} in card.foreign_names) self.assertTrue('SOK' in card.printings) self.assertEqual("Target opponent chooses a number. You may have that player lose that much life. If you don't, that player sacrifices all but that many permanents.", card.original_text) self.assertEqual('Sorcery — Arcane', card.original_type) self.assertTrue({"format":"Commander","legality":"Legal"} in card.legalities) self.assertEqual('1c4aab072d52d283e902f2302afa255b39e0794b', card.id)
async def on_message(message): # we do not want the bot to reply to itself if message.author == client.user: return if message.content.startswith('!magic'): msg_com = message.content.split('-') msg_com.pop(0) for msg in msg_com: if '-help' in msg.lower(): print('help') await client.send_message(message.channel,'Magic Card Bot \n --help : This message displaying \n -s_reg : Followed by a string will search that string \n -m_uid : Searchs cards by multivesrse id \n -s_adv : Not currently finished') elif 'm_uid' in msg.lower(): print(msg[6:]) card_m = Card.find(msg[6:]) print(http_address(card_m.set_name,card_m.name)) await client.send_message(message.channel,http_address(card_m.set_name,card_m.name)) print(http_image(card_m.multiverse_id)) await client.send_message(message.channel,http_image(card_m.multiverse_id)) elif 's_reg' in msg.lower(): print(http_parse(msg[6:])) card_s = Card.where(name=msg[6:]).all() for s_card in card_s: print(http_address(s_card.set_name,s_card.name)) await client.send_message(message.channel,http_address(s_card.set_name,s_card.name)) print(http_image(s_card.multiverse_id)) await client.send_message(message.channel,http_image(s_card.multiverse_id)) elif 's_adv' in msg.lower(): await client.send_message(message.channel,'This command is disabled') else: print('RIP something went wrong') await client.send_message(message.channel, 'RIP something went wrong')
def get(self, request): test_card = Card.find(386616) # Additional context use to populate spans set in cache to avoid redundant queries context = { "card": test_card, "card_type_total": len(cache.get("card_type_total")), "card_subtype_total": len(cache.get("card_subtype_total")) } return render(request, self.template_name, context)
def determine_set(file): mtg_set = "F**K" deck = parse_json(sys.argv[1]+file) mb = deck['mainboard'] for card in mb: printings = Card.find(card).printings if 1 == len(printings): mtg_set = printings[0] break print(mtg_set) return mtg_set
def test_find_returns_card(self): with vcr.use_cassette('fixtures/choice_of_damnations.yaml'): card = Card.find(88803) self.assertEqual('Choice of Damnations', card.name) self.assertEqual('{5}{B}', card.mana_cost) self.assertEqual(6, card.cmc) self.assertEqual('Sorcery — Arcane', card.type) self.assertTrue('Black' in card.colors) self.assertEqual(['B'], card.color_identity) self.assertTrue('Sorcery' in card.types) self.assertTrue('Arcane' in card.subtypes) self.assertEqual('Rare', card.rarity) self.assertEqual('SOK', card.set) self.assertEqual('Saviors of Kamigawa', card.set_name) self.assertEqual( "Target opponent chooses a number. You may have that player lose that much life. If you don't, that player sacrifices all but that many permanents.", card.text) self.assertEqual( "\"Life is a series of choices between bad and worse.\" —Toshiro Umezawa", card.flavor) self.assertEqual('Tim Hildebrandt', card.artist) self.assertEqual('62', card.number) self.assertEqual(88803, card.multiverse_id) self.assertEqual( 'http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=88803&type=card', card.image_url) self.assertTrue(len(card.rulings) > 0) self.assertTrue({ "name": "Scelta della Dannazione", "text": "L'avversario bersaglio sceglie un numero. Puoi far perdere a quel giocatore un ammontare di punti vita pari a quel numero. Se non lo fai, quel giocatore sacrifica tutti i permanenti tranne un numero di permanenti pari al numero scelto.", "flavor": "\"La vita è una sequela di scelte tra male e peggio.\"\n—Toshiro Umezawa", "imageUrl": "http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=105393&type=card", "language": "Italian", "multiverseid": 105393 } in card.foreign_names) self.assertTrue('SOK' in card.printings) self.assertEqual( "Target opponent chooses a number. You may have that player lose that much life. If you don't, that player sacrifices all but that many permanents.", card.original_text) self.assertEqual('Sorcery - Arcane', card.original_type) self.assertTrue({ "format": "Commander", "legality": "Legal" } in card.legalities) self.assertEqual('224a2a63-7be6-5e06-bf6b-e667727bf80b', card.id)
else: if Card in self.Cards: self.Cards.pop(Card) self.CurrentSize -=1 else: print("Card is not in the Set") def remove_random_card(self): if self.Cards == None: print("This doesn't have any cards") else: self.Cards.pop(randint(0,CurrentSize)) self.CurrentSize-=1 myHand = CardList() myHand.add_cards([Card.find(386616), Card.find(386617)]) myHand.add_card(Card.find(386618)) myHand.add_card(Card.find(386619)) myHand.add_card(Card.find(386620)) myHand.add_card(Card.find(386615)) myHand.add_card(Card.find(386614)) print(myHand) print("-----------") #intentionally adding an extra card to test what will happen myHand.add_card(Card.find(386614)) for card in myHand: print(card.type)
def get_card_info(cls, card_id=40545): """ Returns a cv2 image object from a multiverse id of a specific card """ card = Card.find(card_id) return cls._build_magic_card(card)
def most_printings(mainboard): for card in mainboard: printings = Card.find(card).printings for printing in printings: print(printing)
#!/usr/bin/env python3 from mtgsdk import Card from mtgsdk import Set from mtgsdk import Type from mtgsdk import Supertype from mtgsdk import Subtype from mtgsdk import Changelog card = Card.find(386616) print(card)