From 0ce69ba1bf3c480fe1eedcd48b607f4bfff67446 Mon Sep 17 00:00:00 2001 From: George Leslie-Waksman Date: Tue, 27 Aug 2024 01:03:11 -0700 Subject: [PATCH] Fix sorting of cards in PLST --- README.rst | 5 + mtg_ssm/containers/indexes.py | 10 +- mtg_ssm/mtg/util.py | 34 +- tests/containers/test_indexes.py | 9 + tests/data/bulk_data.json | 4 +- tests/data/cards.json | 1742 +++++++++++------ tests/data/sets.json | 101 +- tests/data/sets1.json | 42 +- tests/data/sets2.json | 59 +- tests/gen_testdata.py | 9 +- tests/mtg/test_util.py | 36 +- tests/scryfall/test_fetcher.py | 2 +- .../__snapshots__/test_xlsx.ambr | 84 +- tests/serialization/test_csv.py | 4 +- 14 files changed, 1395 insertions(+), 746 deletions(-) diff --git a/README.rst b/README.rst index 43e182e..5c95b4a 100644 --- a/README.rst +++ b/README.rst @@ -179,6 +179,11 @@ Development - ... +2.6.9 +----- + +- Fix sorting of cards with collector number prefixes (primarily PLST). + 2.6.1 ----- diff --git a/mtg_ssm/containers/indexes.py b/mtg_ssm/containers/indexes.py index 563fbbb..f5c4a66 100644 --- a/mtg_ssm/containers/indexes.py +++ b/mtg_ssm/containers/indexes.py @@ -10,16 +10,14 @@ from mtg_ssm.scryfall.models import ScryCard, ScryMigrationStrategy, ScrySet -def name_card_sort_key(card: ScryCard) -> Tuple[str, int, str]: +def name_card_sort_key(card: ScryCard) -> Tuple[str, str, int, str]: """Key function for sorting cards in a by-name list.""" - card_num, card_var = util.collector_int_var(card) - return (card.set, card_num or 0, card_var or "") # TODO: sort by set release date + return (card.set, *util.collector_number_parts(card.collector_number)) -def set_card_sort_key(card: ScryCard) -> Tuple[int, str]: +def set_card_sort_key(card: ScryCard) -> Tuple[str, int, str]: """Key function for sorting cards in a by-set list.""" - card_num, card_var = util.collector_int_var(card) - return (card_num or 0, card_var or "") + return util.collector_number_parts(card.collector_number) def build_snnmas( diff --git a/mtg_ssm/mtg/util.py b/mtg_ssm/mtg/util.py index 30ecfa0..d21c83d 100644 --- a/mtg_ssm/mtg/util.py +++ b/mtg_ssm/mtg/util.py @@ -1,32 +1,24 @@ """Utility functions for working with card data.""" import functools -import string -from typing import Optional, Tuple - -from mtg_ssm.scryfall.models import ScryCard +import re +from typing import Tuple STRICT_BASICS = frozenset({"Plains", "Island", "Swamp", "Mountain", "Forest"}) - -@functools.lru_cache(maxsize=None) -def dig_str(collector_number: str) -> Tuple[Optional[int], Optional[str]]: - """Split a collector number into integer portion and non-digit portion.""" - digpart = [] - strpart = [] - for char in collector_number: - if char in string.digits: - digpart.append(char) - else: - strpart.append(char) - if not digpart: - return (None, "".join(strpart)) - return (int("".join(digpart)), "".join(strpart) or None) +COLLECTOR_NUMBER_RE = re.compile(r"(?P.*-|\D+)?(?P\d+)?(?P\D.*)?") -def collector_int_var(card: ScryCard) -> Tuple[Optional[int], Optional[str]]: - """Get the integer and variant portions of a card's collector number.""" - return dig_str(card.collector_number) +@functools.lru_cache(maxsize=None) +def collector_number_parts(collector_number: str) -> Tuple[str, int, str]: + """Split a collector number into its parts.""" + match = COLLECTOR_NUMBER_RE.match(collector_number) + if not match: + return ("", 0, "") + prefix: str = match.group("prefix") or "" + number: int = int(match.group("number")) if match.group("number") else 0 + suffix: str = match.group("suffix") or "" + return (prefix, number, suffix) def is_strict_basic(card_name: str) -> bool: diff --git a/tests/containers/test_indexes.py b/tests/containers/test_indexes.py index 05e595b..dc908a3 100644 --- a/tests/containers/test_indexes.py +++ b/tests/containers/test_indexes.py @@ -67,6 +67,15 @@ def test_setcode_to_cards(scryfall_data: ScryfallDataSet) -> None: "74d", ] + # The List Sorting + assert [(c.collector_number, c.name) for c in index.setcode_to_cards["plst"]] == [ + ("10E-20", "High Ground"), + ("10E-182", "Terror"), + ("AKH-2", "Anointed Procession"), + ("AKH-3", "Anointer Priest"), + ("ARB-1", "Ardent Plea"), + ] + def test_id_to_setindex(scryfall_data: ScryfallDataSet) -> None: index = ScryfallDataIndex() diff --git a/tests/data/bulk_data.json b/tests/data/bulk_data.json index 78b9b60..065ccd4 100644 --- a/tests/data/bulk_data.json +++ b/tests/data/bulk_data.json @@ -8,8 +8,8 @@ "type": "default_cards", "name": "Default Cards", "description": "A JSON file containing every card object on Scryfall in English or the printed language if the card is only available in one language.", - "download_uri": "https://data.scryfall.io/default-cards/default-cards-20240510210636.json", - "updated_at": "2024-05-10T21:06:36.150000Z", + "download_uri": "https://data.scryfall.io/default-cards/default-cards-20240826212052.json", + "updated_at": "2024-08-26T21:20:52.469000Z", "content_type": "application/json", "content_encoding": "gzip" } diff --git a/tests/data/cards.json b/tests/data/cards.json index 9165eff..b4da670 100644 --- a/tests/data/cards.json +++ b/tests/data/cards.json @@ -20,7 +20,7 @@ "color_identity": [ "W" ], - "edhrec_rank": 5553, + "edhrec_rank": 5964, "foil": false, "keywords": [], "layout": "normal", @@ -53,7 +53,7 @@ "nonfoil": true, "oracle_text": "Artifacts you control have hexproof. (They can't be the targets of spells or abilities your opponents control.)", "oversized": false, - "penny_rank": 8860, + "penny_rank": 9042, "power": "2", "reserved": false, "toughness": "5", @@ -88,10 +88,10 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/9/d/9d26f171-5bb6-463c-8473-53b6cc27ed66.jpg?1562928153" }, "prices": { - "usd": "1.08", + "usd": "1.22", "usd_foil": null, "usd_etched": null, - "eur": "0.83", + "eur": "0.86", "eur_foil": null, "tix": null }, @@ -154,7 +154,6 @@ "object": "card_face", "artist": "Mark Zug", "artist_id": "48e2b98c-5467-4671-bd42-4c3746115117", - "flavor_name": "", "mana_cost": "", "name": "Kaiso, Memory of Loyalty", "oracle_text": "Flying\nRemove a ki counter from Kaiso, Memory of Loyalty: Prevent all damage that would be dealt to target creature this turn.", @@ -170,7 +169,7 @@ "color_identity": [ "W" ], - "edhrec_rank": 23442, + "edhrec_rank": 24278, "foil": true, "keywords": [ "Flying" @@ -239,11 +238,11 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/7/5/758abd53-6ad2-406e-8615-8e48678405b4.jpg?1562877848" }, "prices": { - "usd": "0.18", - "usd_foil": "0.29", + "usd": "0.14", + "usd_foil": "0.30", "usd_etched": null, - "eur": "0.05", - "eur_foil": "0.68", + "eur": "0.12", + "eur_foil": "0.77", "tix": "0.03" }, "promo": false, @@ -291,7 +290,7 @@ "cmc": 0.0, "colors": [], "color_identity": [], - "edhrec_rank": 2098, + "edhrec_rank": 2209, "foil": true, "keywords": [], "layout": "normal", @@ -307,7 +306,7 @@ "legacy": "legal", "pauper": "not_legal", "vintage": "legal", - "penny": "not_legal", + "penny": "legal", "commander": "legal", "oathbreaker": "legal", "standardbrawl": "not_legal", @@ -322,9 +321,9 @@ "mana_cost": "", "name": "Boseiju, Who Shelters All", "nonfoil": true, - "oracle_text": "Boseiju, Who Shelters All enters the battlefield tapped.\n{T}, Pay 2 life: Add {C}. If that mana is spent on an instant or sorcery spell, that spell can't be countered.", + "oracle_text": "Boseiju, Who Shelters All enters tapped.\n{T}, Pay 2 life: Add {C}. If that mana is spent on an instant or sorcery spell, that spell can't be countered.", "oversized": false, - "penny_rank": 854, + "penny_rank": 632, "produced_mana": [ "C" ], @@ -361,12 +360,12 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/0/1/0180d9a8-992c-4d55-8ac4-33a587786993.jpg?1562757082" }, "prices": { - "usd": "10.38", - "usd_foil": "59.70", + "usd": "10.41", + "usd_foil": "57.08", "usd_etched": null, - "eur": "5.12", - "eur_foil": "21.86", - "tix": "0.09" + "eur": "4.77", + "eur_foil": "19.53", + "tix": "0.18" }, "promo": false, "purchase_uris": { @@ -427,7 +426,6 @@ "object": "card_face", "artist": "Mark Zug", "artist_id": "48e2b98c-5467-4671-bd42-4c3746115117", - "flavor_name": "", "mana_cost": "", "name": "Kenzo the Hardhearted", "oracle_text": "Double strike; bushido 2 (Whenever this creature blocks or becomes blocked, it gets +2/+2 until end of turn.)", @@ -443,7 +441,7 @@ "color_identity": [ "W" ], - "edhrec_rank": 15400, + "edhrec_rank": 16237, "foil": true, "keywords": [ "Bushido", @@ -462,7 +460,7 @@ "legacy": "legal", "pauper": "not_legal", "vintage": "legal", - "penny": "legal", + "penny": "not_legal", "commander": "legal", "oathbreaker": "legal", "standardbrawl": "not_legal", @@ -478,7 +476,7 @@ "name": "Bushi Tenderfoot // Kenzo the Hardhearted", "nonfoil": true, "oversized": false, - "penny_rank": 8978, + "penny_rank": 9156, "power": "1", "reserved": false, "toughness": "1", @@ -514,11 +512,11 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/8/6/864ad989-19a6-4930-8efc-bbc077a18c32.jpg?1562762069" }, "prices": { - "usd": "0.29", - "usd_foil": "1.82", + "usd": "0.30", + "usd_foil": "6.00", "usd_etched": null, - "eur": "0.20", - "eur_foil": "1.53", + "eur": "0.19", + "eur_foil": "1.15", "tix": "0.03" }, "promo": false, @@ -570,7 +568,7 @@ "color_identity": [ "W" ], - "edhrec_rank": 20141, + "edhrec_rank": 21212, "foil": true, "keywords": [ "Cumulative upkeep" @@ -605,7 +603,7 @@ "nonfoil": true, "oracle_text": "Cumulative upkeep—Put two cards from a single graveyard on the bottom of their owner's library. (At the beginning of your upkeep, put an age counter on this permanent, then sacrifice it unless you pay its upkeep cost for each age counter on it.)", "oversized": false, - "penny_rank": 8676, + "penny_rank": 8884, "power": "4", "reserved": false, "toughness": "4", @@ -641,10 +639,10 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/5/5/5526c510-bd33-4fac-8941-f19bd0997557.jpg?1593274750" }, "prices": { - "usd": "0.23", - "usd_foil": "5.99", + "usd": "0.25", + "usd_foil": "7.46", "usd_etched": null, - "eur": "0.17", + "eur": "0.15", "eur_foil": "1.31", "tix": "0.03" }, @@ -691,11 +689,11 @@ "all_parts": [ { "object": "related_card", - "id": "f38381fd-e368-46b2-94e9-89c9b182435d", + "id": "590abe94-9c71-4429-b1b5-8b5de877de03", "component": "token", "name": "Saproling", "type_line": "Token Creature — Saproling", - "uri": "https://api.scryfall.com/cards/f38381fd-e368-46b2-94e9-89c9b182435d" + "uri": "https://api.scryfall.com/cards/590abe94-9c71-4429-b1b5-8b5de877de03" }, { "object": "related_card", @@ -713,7 +711,7 @@ "color_identity": [ "G" ], - "edhrec_rank": 6901, + "edhrec_rank": 7362, "foil": false, "keywords": [], "layout": "normal", @@ -746,7 +744,7 @@ "nonfoil": true, "oracle_text": "At the beginning of your upkeep, put a spore counter on Thallid.\nRemove three spore counters from Thallid: Create a 1/1 green Saproling creature token.", "oversized": false, - "penny_rank": 8599, + "penny_rank": 8957, "power": "1", "reserved": false, "toughness": "1", @@ -780,10 +778,10 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/4/c/4caaf31b-86a9-485b-8da7-d5b526ed1233.jpg?1562909047" }, "prices": { - "usd": "0.20", + "usd": "0.21", "usd_foil": null, "usd_etched": null, - "eur": "0.13", + "eur": "0.23", "eur_foil": null, "tix": null }, @@ -830,11 +828,11 @@ "all_parts": [ { "object": "related_card", - "id": "f38381fd-e368-46b2-94e9-89c9b182435d", + "id": "590abe94-9c71-4429-b1b5-8b5de877de03", "component": "token", "name": "Saproling", "type_line": "Token Creature — Saproling", - "uri": "https://api.scryfall.com/cards/f38381fd-e368-46b2-94e9-89c9b182435d" + "uri": "https://api.scryfall.com/cards/590abe94-9c71-4429-b1b5-8b5de877de03" }, { "object": "related_card", @@ -852,7 +850,7 @@ "color_identity": [ "G" ], - "edhrec_rank": 6901, + "edhrec_rank": 7362, "foil": false, "keywords": [], "layout": "normal", @@ -885,7 +883,7 @@ "nonfoil": true, "oracle_text": "At the beginning of your upkeep, put a spore counter on Thallid.\nRemove three spore counters from Thallid: Create a 1/1 green Saproling creature token.", "oversized": false, - "penny_rank": 8599, + "penny_rank": 8957, "power": "1", "reserved": false, "toughness": "1", @@ -919,10 +917,10 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/8/0/80f8f778-ae31-45cd-b27f-f93a07853ede.jpg?1562918912" }, "prices": { - "usd": "0.17", + "usd": "0.16", "usd_foil": null, "usd_etched": null, - "eur": "0.13", + "eur": "0.15", "eur_foil": null, "tix": null }, @@ -969,11 +967,11 @@ "all_parts": [ { "object": "related_card", - "id": "f38381fd-e368-46b2-94e9-89c9b182435d", + "id": "590abe94-9c71-4429-b1b5-8b5de877de03", "component": "token", "name": "Saproling", "type_line": "Token Creature — Saproling", - "uri": "https://api.scryfall.com/cards/f38381fd-e368-46b2-94e9-89c9b182435d" + "uri": "https://api.scryfall.com/cards/590abe94-9c71-4429-b1b5-8b5de877de03" }, { "object": "related_card", @@ -991,7 +989,7 @@ "color_identity": [ "G" ], - "edhrec_rank": 6901, + "edhrec_rank": 7362, "foil": false, "keywords": [], "layout": "normal", @@ -1024,7 +1022,7 @@ "nonfoil": true, "oracle_text": "At the beginning of your upkeep, put a spore counter on Thallid.\nRemove three spore counters from Thallid: Create a 1/1 green Saproling creature token.", "oversized": false, - "penny_rank": 8599, + "penny_rank": 8957, "power": "1", "reserved": false, "toughness": "1", @@ -1058,10 +1056,10 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/2/c/2cf2f3da-9101-439d-8caa-910ff40bfbb3.jpg?1562903271" }, "prices": { - "usd": "0.23", + "usd": "0.19", "usd_foil": null, "usd_etched": null, - "eur": "0.14", + "eur": "0.18", "eur_foil": null, "tix": null }, @@ -1108,11 +1106,11 @@ "all_parts": [ { "object": "related_card", - "id": "f38381fd-e368-46b2-94e9-89c9b182435d", + "id": "590abe94-9c71-4429-b1b5-8b5de877de03", "component": "token", "name": "Saproling", "type_line": "Token Creature — Saproling", - "uri": "https://api.scryfall.com/cards/f38381fd-e368-46b2-94e9-89c9b182435d" + "uri": "https://api.scryfall.com/cards/590abe94-9c71-4429-b1b5-8b5de877de03" }, { "object": "related_card", @@ -1130,7 +1128,7 @@ "color_identity": [ "G" ], - "edhrec_rank": 6901, + "edhrec_rank": 7362, "foil": false, "keywords": [], "layout": "normal", @@ -1163,7 +1161,7 @@ "nonfoil": true, "oracle_text": "At the beginning of your upkeep, put a spore counter on Thallid.\nRemove three spore counters from Thallid: Create a 1/1 green Saproling creature token.", "oversized": false, - "penny_rank": 8599, + "penny_rank": 8957, "power": "1", "reserved": false, "toughness": "1", @@ -1200,7 +1198,7 @@ "usd": "0.21", "usd_foil": null, "usd_etched": null, - "eur": "0.20", + "eur": "0.17", "eur_foil": null, "tix": null }, @@ -1251,7 +1249,7 @@ "color_identity": [ "B" ], - "edhrec_rank": 21295, + "edhrec_rank": 22183, "foil": false, "keywords": [ "Protection", @@ -1321,7 +1319,7 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/0/c/0c6f0614-06dc-4bd2-b8b9-d951ae27db21.jpg?1575874678" }, "prices": { - "usd": "0.17", + "usd": "0.15", "usd_foil": null, "usd_etched": null, "eur": "0.04", @@ -1375,7 +1373,7 @@ "color_identity": [ "B" ], - "edhrec_rank": 21295, + "edhrec_rank": 22183, "foil": false, "keywords": [ "Protection", @@ -1445,10 +1443,10 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/4/a/4a7b2cc1-cb0b-4cb8-963f-453a1d5b0e3c.jpg?1562587268" }, "prices": { - "usd": "0.18", + "usd": "0.15", "usd_foil": null, "usd_etched": null, - "eur": "0.03", + "eur": "0.05", "eur_foil": null, "tix": null }, @@ -1501,7 +1499,7 @@ "color_identity": [ "W" ], - "edhrec_rank": 3669, + "edhrec_rank": 4075, "foil": false, "keywords": [ "Cycling" @@ -1519,7 +1517,7 @@ "legacy": "legal", "pauper": "not_legal", "vintage": "legal", - "penny": "not_legal", + "penny": "legal", "commander": "legal", "oathbreaker": "legal", "standardbrawl": "not_legal", @@ -1536,7 +1534,7 @@ "nonfoil": true, "oracle_text": "Destroy all artifacts, creatures, and enchantments.\nCycling {3} ({3}, Discard this card: Draw a card.)", "oversized": false, - "penny_rank": 515, + "penny_rank": 644, "reserved": false, "type_line": "Sorcery", "artist": "Greg Hildebrandt & Tim Hildebrandt", @@ -1571,10 +1569,10 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/b/8/b8f5e276-d7c3-4b4b-ac5b-9bb1aeeca8d0.jpg?1562842869" }, "prices": { - "usd": "0.41", + "usd": "0.39", "usd_foil": null, "usd_etched": null, - "eur": "0.37", + "eur": "0.36", "eur_foil": null, "tix": "0.45" }, @@ -1627,7 +1625,7 @@ "color_identity": [ "B" ], - "edhrec_rank": 52, + "edhrec_rank": 49, "foil": false, "keywords": [], "layout": "normal", @@ -1643,7 +1641,7 @@ "legacy": "legal", "pauper": "legal", "vintage": "legal", - "penny": "not_legal", + "penny": "legal", "commander": "legal", "oathbreaker": "banned", "standardbrawl": "not_legal", @@ -1660,7 +1658,7 @@ "nonfoil": true, "oracle_text": "Add {B}{B}{B}.", "oversized": false, - "penny_rank": 29, + "penny_rank": 28, "produced_mana": [ "B" ], @@ -1697,12 +1695,12 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/c/8/c8c774f2-110e-476c-a4ff-cc86d31c6ae7.jpg?1562842886" }, "prices": { - "usd": "2.60", + "usd": "3.90", "usd_foil": null, "usd_etched": null, - "eur": "4.18", + "eur": "3.92", "eur_foil": null, - "tix": "0.18" + "tix": "0.16" }, "promo": false, "purchase_uris": { @@ -1752,7 +1750,7 @@ "color_identity": [ "B" ], - "edhrec_rank": 52, + "edhrec_rank": 49, "foil": false, "keywords": [], "layout": "normal", @@ -1768,7 +1766,7 @@ "legacy": "legal", "pauper": "legal", "vintage": "legal", - "penny": "not_legal", + "penny": "legal", "commander": "legal", "oathbreaker": "banned", "standardbrawl": "not_legal", @@ -1785,7 +1783,7 @@ "nonfoil": true, "oracle_text": "Add {B}{B}{B}.", "oversized": false, - "penny_rank": 29, + "penny_rank": 28, "produced_mana": [ "B" ], @@ -1822,12 +1820,12 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/4/e/4ebcd681-1871-4914-bcd7-6bd95829f6e0.jpg?1562909407" }, "prices": { - "usd": "1.31", + "usd": "1.40", "usd_foil": null, "usd_etched": null, - "eur": "1.17", + "eur": "1.02", "eur_foil": null, - "tix": "0.48" + "tix": "0.22" }, "promo": false, "purchase_uris": { @@ -1942,12 +1940,12 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/f/b/fbdcbd97-90a9-45ea-94f6-2a1c6faaf965.jpg?1562942481" }, "prices": { - "usd": "0.61", + "usd": "0.46", "usd_foil": null, "usd_etched": null, - "eur": "0.53", + "eur": "0.56", "eur_foil": null, - "tix": "0.05" + "tix": "0.04" }, "promo": false, "purchase_uris": { @@ -2062,12 +2060,12 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/b/3/b346b784-7bde-49d0-bfa9-56236cbe19d9.jpg?1562928391" }, "prices": { - "usd": "0.60", + "usd": "0.62", "usd_foil": null, "usd_etched": null, - "eur": "0.37", + "eur": "0.63", "eur_foil": null, - "tix": "0.83" + "tix": "0.80" }, "promo": false, "purchase_uris": { @@ -2182,10 +2180,10 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/7/6/768c4d8f-5700-4f0a-9ff2-58422aeb1dac.jpg?1562916916" }, "prices": { - "usd": "0.39", + "usd": "0.31", "usd_foil": null, "usd_etched": null, - "eur": "0.32", + "eur": "0.43", "eur_foil": null, "tix": "0.91" }, @@ -2302,12 +2300,12 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/4/c/4c0ad95c-d62c-4138-ada0-fa39a63a449e.jpg?1562908930" }, "prices": { - "usd": "1.96", + "usd": "1.91", "usd_foil": null, "usd_etched": null, - "eur": "1.23", + "eur": "1.31", "eur_foil": null, - "tix": "0.94" + "tix": "0.76" }, "promo": false, "purchase_uris": { @@ -2358,7 +2356,7 @@ "color_identity": [ "B" ], - "edhrec_rank": 17527, + "edhrec_rank": 18077, "foil": true, "keywords": [ "First strike" @@ -2393,7 +2391,6 @@ "nonfoil": true, "oracle_text": "First strike\nWhenever a creature dealt damage by Abattoir Ghoul this turn dies, you gain life equal to that creature's toughness.", "oversized": false, - "penny_rank": 14286, "power": "3", "reserved": false, "toughness": "2", @@ -2430,11 +2427,11 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/5/9/59cf0906-04fa-4b30-a7a6-3d117931154f.jpg?1562830661" }, "prices": { - "usd": "0.06", - "usd_foil": "0.27", + "usd": "0.07", + "usd_foil": "0.32", "usd_etched": null, - "eur": "0.04", - "eur_foil": "0.36", + "eur": "0.07", + "eur_foil": "0.31", "tix": "0.04" }, "promo": false, @@ -2532,7 +2529,6 @@ "colors": [ "U" ], - "flavor_name": "", "flavor_text": "\"Unfortunately, all my test animals have died or escaped, so I shall be the final subject. I feel no fear. This is a momentous night.\"\n—Laboratory notes, final entry", "illustration_id": "c2b5f731-771b-4949-90f3-0ad40d676100", "image_uris": { @@ -2555,7 +2551,7 @@ "color_identity": [ "U" ], - "edhrec_rank": 13405, + "edhrec_rank": 14207, "foil": true, "keywords": [ "Flying", @@ -2563,8 +2559,8 @@ ], "layout": "transform", "legalities": { - "standard": "legal", - "future": "legal", + "standard": "not_legal", + "future": "not_legal", "historic": "legal", "timeless": "legal", "gladiator": "legal", @@ -2577,7 +2573,7 @@ "penny": "not_legal", "commander": "legal", "oathbreaker": "legal", - "standardbrawl": "legal", + "standardbrawl": "not_legal", "brawl": "legal", "alchemy": "not_legal", "paupercommander": "legal", @@ -2589,7 +2585,7 @@ "name": "Delver of Secrets // Insectile Aberration", "nonfoil": true, "oversized": false, - "penny_rank": 135, + "penny_rank": 136, "reserved": false, "type_line": "Creature — Human Wizard // Creature — Human Insect", "artist": "Nils Hamm", @@ -2616,11 +2612,11 @@ "highres_image": true, "image_status": "highres_scan", "prices": { - "usd": "0.29", - "usd_foil": "3.71", + "usd": "0.40", + "usd_foil": "3.53", "usd_etched": null, - "eur": "0.84", - "eur_foil": "5.08", + "eur": "0.73", + "eur_foil": "5.74", "tix": "0.03" }, "promo": false, @@ -2738,11 +2734,11 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/b/6/b606f644-1728-4cb3-90ed-121838875de1.jpg?1562835915" }, "prices": { - "usd": "0.20", - "usd_foil": "2.69", + "usd": "0.22", + "usd_foil": "2.71", "usd_etched": null, - "eur": "0.17", - "eur_foil": "0.78", + "eur": "0.16", + "eur_foil": "1.13", "tix": "0.03" }, "promo": false, @@ -2860,10 +2856,10 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/1/6/16f52885-1f01-4f06-90a8-1a0ecf291ab5.jpg?1562826752" }, "prices": { - "usd": "0.26", - "usd_foil": "1.74", + "usd": "0.23", + "usd_foil": "1.81", "usd_etched": null, - "eur": "0.10", + "eur": "0.17", "eur_foil": "1.20", "tix": "0.04" }, @@ -2982,11 +2978,11 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/4/d/4dea3762-c6ae-4304-aee4-6c3f56685319.jpg?1562829937" }, "prices": { - "usd": "0.22", - "usd_foil": "0.80", + "usd": "0.21", + "usd_foil": "0.92", "usd_etched": null, - "eur": "0.14", - "eur_foil": "1.12", + "eur": "0.15", + "eur_foil": "1.28", "tix": "0.03" }, "promo": false, @@ -3180,7 +3176,7 @@ "cmc": 4.0, "colors": [], "color_identity": [], - "edhrec_rank": 1755, + "edhrec_rank": 1893, "foil": true, "keywords": [], "layout": "normal", @@ -3213,7 +3209,7 @@ "nonfoil": true, "oracle_text": "At the beginning of your end step, draw a card if your life total is greater than your starting life total. Otherwise, you gain 2 life.", "oversized": false, - "penny_rank": 1158, + "penny_rank": 1232, "reserved": false, "type_line": "Artifact", "artist": "Volkan Baǵa", @@ -3249,11 +3245,11 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/6/b/6bf084fe-7762-49c5-974a-cdecc10666b3.jpg?1639436665" }, "prices": { - "usd": "1.72", - "usd_foil": "2.50", + "usd": "1.48", + "usd_foil": "1.66", "usd_etched": null, - "eur": "1.54", - "eur_foil": "1.78", + "eur": "1.50", + "eur_foil": "1.93", "tix": "0.02" }, "promo": false, @@ -3323,7 +3319,7 @@ "cmc": 4.0, "colors": [], "color_identity": [], - "edhrec_rank": 1755, + "edhrec_rank": 1893, "foil": true, "keywords": [], "layout": "normal", @@ -3356,7 +3352,7 @@ "nonfoil": true, "oracle_text": "At the beginning of your end step, draw a card if your life total is greater than your starting life total. Otherwise, you gain 2 life.", "oversized": false, - "penny_rank": 1158, + "penny_rank": 1232, "reserved": false, "type_line": "Artifact", "artist": "Volkan Baǵa", @@ -3394,11 +3390,11 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/e/a/ea524e81-4898-4a41-8b34-06defd26e4c7.jpg?1631056797" }, "prices": { - "usd": "1.37", + "usd": "1.99", "usd_foil": "1.90", "usd_etched": null, - "eur": "2.40", - "eur_foil": "2.94", + "eur": "2.03", + "eur_foil": "3.09", "tix": null }, "promo": false, @@ -3457,7 +3453,7 @@ "color_identity": [ "U" ], - "edhrec_rank": 20388, + "edhrec_rank": 21211, "foil": false, "keywords": [ "Flying" @@ -3492,7 +3488,7 @@ "nonfoil": true, "oracle_text": "Flying", "oversized": false, - "penny_rank": 12444, + "penny_rank": 12727, "power": "4", "reserved": false, "toughness": "4", @@ -3527,10 +3523,10 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/6/9/69c3b2a3-0daa-4d42-832d-fcdfda6555ea.jpg?1559591522" }, "prices": { - "usd": null, + "usd": "159.95", "usd_foil": null, "usd_etched": null, - "eur": "175.20", + "eur": "155.73", "eur_foil": null, "tix": null }, @@ -3581,7 +3577,7 @@ "color_identity": [ "B" ], - "edhrec_rank": 52, + "edhrec_rank": 49, "foil": false, "keywords": [], "layout": "normal", @@ -3597,7 +3593,7 @@ "legacy": "legal", "pauper": "legal", "vintage": "legal", - "penny": "not_legal", + "penny": "legal", "commander": "legal", "oathbreaker": "banned", "standardbrawl": "not_legal", @@ -3614,7 +3610,7 @@ "nonfoil": true, "oracle_text": "Add {B}{B}{B}.", "oversized": false, - "penny_rank": 29, + "penny_rank": 28, "produced_mana": [ "B" ], @@ -3649,10 +3645,10 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/e/b/ebb6664d-23ca-456e-9916-afcd6f26aa7f.jpg?1559591495" }, "prices": { - "usd": "205.67", + "usd": "322.18", "usd_foil": null, "usd_etched": null, - "eur": "171.47", + "eur": "153.90", "eur_foil": null, "tix": null }, @@ -3767,10 +3763,10 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/6/f/6f1c8cb0-38eb-408b-94e8-16db83999b3b.jpg?1559591465" }, "prices": { - "usd": "38.12", + "usd": "37.23", "usd_foil": null, "usd_etched": null, - "eur": "37.87", + "eur": "29.85", "eur_foil": null, "tix": null }, @@ -3885,10 +3881,10 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/f/2/f20c89d9-71c9-45f5-a9cb-6e253b0a7cca.jpg?1559591510" }, "prices": { - "usd": "52.90", + "usd": "47.58", "usd_foil": null, "usd_etched": null, - "eur": "43.66", + "eur": "44.26", "eur_foil": null, "tix": null }, @@ -3941,7 +3937,7 @@ "color_identity": [ "B" ], - "edhrec_rank": 2042, + "edhrec_rank": 2089, "foil": true, "keywords": [], "layout": "normal", @@ -3974,7 +3970,7 @@ "nonfoil": true, "oracle_text": "Put X -1/-1 counters on each creature. Shuffle Black Sun's Zenith into its owner's library.", "oversized": false, - "penny_rank": 1924, + "penny_rank": 1991, "reserved": false, "type_line": "Sorcery", "artist": "Daniel Ljunggren", @@ -4009,11 +4005,11 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/0/3/03bdcf52-50b8-42c0-9665-931d83f5f314.jpg?1562609329" }, "prices": { - "usd": "4.02", - "usd_foil": "7.41", + "usd": "2.11", + "usd_foil": "6.99", "usd_etched": null, - "eur": "2.19", - "eur_foil": "7.05", + "eur": "1.63", + "eur_foil": "5.99", "tix": "0.02" }, "promo": false, @@ -4084,7 +4080,7 @@ "color_identity": [ "W" ], - "edhrec_rank": 1823, + "edhrec_rank": 1899, "foil": true, "keywords": [ "Battle Cry" @@ -4119,7 +4115,7 @@ "nonfoil": true, "oracle_text": "Battle cry (Whenever this creature attacks, each other attacking creature gets +1/+0 until end of turn.)\nWhenever Hero of Bladehold attacks, create two 1/1 white Soldier creature tokens that are tapped and attacking.", "oversized": false, - "penny_rank": 2848, + "penny_rank": 3455, "power": "3", "reserved": false, "toughness": "4", @@ -4155,11 +4151,11 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/8/a/8a3853ec-e307-46e0-96d7-0706b5c45c5e.jpg?1562612851" }, "prices": { - "usd": "6.09", - "usd_foil": "19.15", + "usd": "4.95", + "usd_foil": "20.70", "usd_etched": null, - "eur": "3.28", - "eur_foil": "8.54", + "eur": "3.65", + "eur_foil": "8.66", "tix": "0.02" }, "promo": false, @@ -4230,7 +4226,7 @@ "color_identity": [ "G" ], - "edhrec_rank": 6901, + "edhrec_rank": 7362, "foil": true, "keywords": [], "layout": "normal", @@ -4263,7 +4259,7 @@ "nonfoil": true, "oracle_text": "At the beginning of your upkeep, put a spore counter on Thallid.\nRemove three spore counters from Thallid: Create a 1/1 green Saproling creature token.", "oversized": false, - "penny_rank": 8599, + "penny_rank": 8957, "power": "1", "reserved": false, "toughness": "1", @@ -4299,11 +4295,11 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/6/9/69d20d28-76e9-4e6e-95c3-f88c51dfabfd.jpg?1561967373" }, "prices": { - "usd": "0.41", - "usd_foil": "0.54", + "usd": "0.42", + "usd_foil": "0.62", "usd_etched": null, - "eur": "0.22", - "eur_foil": "0.24", + "eur": "0.23", + "eur_foil": "0.35", "tix": "0.03" }, "promo": false, @@ -4353,15 +4349,15 @@ "color_identity": [ "G" ], - "edhrec_rank": 85, + "edhrec_rank": 84, "foil": true, "keywords": [ "Channel" ], "layout": "normal", "legalities": { - "standard": "legal", - "future": "legal", + "standard": "not_legal", + "future": "not_legal", "historic": "legal", "timeless": "legal", "gladiator": "legal", @@ -4374,7 +4370,7 @@ "penny": "not_legal", "commander": "legal", "oathbreaker": "legal", - "standardbrawl": "legal", + "standardbrawl": "not_legal", "brawl": "legal", "alchemy": "not_legal", "paupercommander": "not_legal", @@ -4428,12 +4424,12 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/2/1/2135ac5a-187b-4dc9-8f82-34e8d1603416.jpg?1654568912" }, "prices": { - "usd": "33.85", - "usd_foil": "36.01", + "usd": "32.41", + "usd_foil": "34.41", "usd_etched": null, - "eur": "34.91", - "eur_foil": "40.72", - "tix": "17.41" + "eur": "34.21", + "eur_foil": "38.03", + "tix": "5.94" }, "promo": false, "purchase_uris": { @@ -4487,15 +4483,15 @@ "color_identity": [ "G" ], - "edhrec_rank": 85, + "edhrec_rank": 84, "foil": true, "keywords": [ "Channel" ], "layout": "normal", "legalities": { - "standard": "legal", - "future": "legal", + "standard": "not_legal", + "future": "not_legal", "historic": "legal", "timeless": "legal", "gladiator": "legal", @@ -4508,7 +4504,7 @@ "penny": "not_legal", "commander": "legal", "oathbreaker": "legal", - "standardbrawl": "legal", + "standardbrawl": "not_legal", "brawl": "legal", "alchemy": "not_legal", "paupercommander": "not_legal", @@ -4562,11 +4558,11 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/0/0/0055ea30-20fb-4324-a632-8fed87628f05.jpg?1647145068" }, "prices": { - "usd": "44.08", - "usd_foil": "92.33", + "usd": "40.79", + "usd_foil": "80.45", "usd_etched": null, - "eur": "48.28", - "eur_foil": "78.22", + "eur": "48.08", + "eur_foil": "83.65", "tix": null }, "promo": false, @@ -4623,15 +4619,15 @@ "color_identity": [ "G" ], - "edhrec_rank": 85, + "edhrec_rank": 84, "foil": true, "keywords": [ "Channel" ], "layout": "normal", "legalities": { - "standard": "legal", - "future": "legal", + "standard": "not_legal", + "future": "not_legal", "historic": "legal", "timeless": "legal", "gladiator": "legal", @@ -4644,7 +4640,7 @@ "penny": "not_legal", "commander": "legal", "oathbreaker": "legal", - "standardbrawl": "legal", + "standardbrawl": "not_legal", "brawl": "legal", "alchemy": "not_legal", "paupercommander": "not_legal", @@ -4699,11 +4695,11 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/2/4/2488a80b-6882-4b59-8232-f02f800204a9.jpg?1647809455" }, "prices": { - "usd": "35.62", - "usd_foil": "51.31", + "usd": "34.54", + "usd_foil": "43.12", "usd_etched": null, - "eur": "40.59", - "eur_foil": "57.63", + "eur": "38.38", + "eur_foil": "63.11", "tix": null }, "promo": false, @@ -4822,10 +4818,10 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/1/7/17b941e9-5dcc-473e-a461-709d74e32a3c.jpg?1562252328" }, "prices": { - "usd": "23.24", + "usd": "42.94", "usd_foil": null, "usd_etched": null, - "eur": "14.50", + "eur": "13.21", "eur_foil": null, "tix": null }, @@ -4942,11 +4938,11 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/7/0/7019912c-bd9b-4b96-9388-400794909aa1.jpg?1562917413" }, "prices": { - "usd": "0.71", - "usd_foil": "8.44", + "usd": "0.45", + "usd_foil": "7.12", "usd_etched": null, - "eur": "0.46", - "eur_foil": "5.14", + "eur": "0.48", + "eur_foil": "6.05", "tix": "0.03" }, "promo": false, @@ -5059,10 +5055,10 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/9/c/9cc070d3-4b83-4684-9caf-063e5c473a77.jpg?1657725364" }, "prices": { - "usd": "2.06", + "usd": "2.23", "usd_foil": null, "usd_etched": null, - "eur": "1.65", + "eur": "1.01", "eur_foil": null, "tix": null }, @@ -5179,11 +5175,11 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/6/9/69b215fe-0d97-4ca1-9490-174220fd454b.jpg?1562916234" }, "prices": { - "usd": "0.87", - "usd_foil": "13.02", + "usd": "0.62", + "usd_foil": "9.59", "usd_etched": null, - "eur": "0.52", - "eur_foil": "7.88", + "eur": "0.56", + "eur_foil": "7.69", "tix": "0.03" }, "promo": false, @@ -5296,10 +5292,10 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/6/0/60682c00-c661-4a9d-8326-f3f014a04e3e.jpg?1562914528" }, "prices": { - "usd": "1.06", + "usd": "0.95", "usd_foil": null, "usd_etched": null, - "eur": "0.93", + "eur": "0.87", "eur_foil": null, "tix": null }, @@ -5413,7 +5409,7 @@ "usd": "19.99", "usd_foil": null, "usd_etched": null, - "eur": "2.54", + "eur": "2.90", "eur_foil": null, "tix": null }, @@ -5525,12 +5521,12 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/f/a/fabef637-fb4b-41b5-8d12-5568e84c6d11.jpg?1658417480" }, "prices": { - "usd": "5.57", + "usd": "5.21", "usd_foil": null, "usd_etched": null, - "eur": "1.11", + "eur": "1.01", "eur_foil": null, - "tix": "3.77" + "tix": "2.94" }, "promo": false, "purchase_uris": { @@ -5639,10 +5635,10 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/3/6/36ab24d3-ca9d-4b9c-8c28-4dd1f05a2314.jpg?1547434158" }, "prices": { - "usd": "1.32", + "usd": null, "usd_foil": null, "usd_etched": null, - "eur": "1.01", + "eur": "0.94", "eur_foil": null, "tix": null }, @@ -5726,11 +5722,11 @@ }, { "object": "related_card", - "id": "fcaf7d1e-9ebf-497e-9d0e-bd23d3bf2b12", + "id": "0ec86780-0a66-498c-b86b-1d1836532dd4", "component": "combo_piece", "name": "Goblin Goliath", "type_line": "Creature — Goblin Mutant", - "uri": "https://api.scryfall.com/cards/fcaf7d1e-9ebf-497e-9d0e-bd23d3bf2b12" + "uri": "https://api.scryfall.com/cards/0ec86780-0a66-498c-b86b-1d1836532dd4" }, { "object": "related_card", @@ -5758,11 +5754,11 @@ }, { "object": "related_card", - "id": "b4c4d642-c3fb-47d1-b57a-266eb269d5ea", + "id": "7d97d0c8-5c9a-4b04-a680-39ae3367367c", "component": "combo_piece", "name": "Goblin Offensive", "type_line": "Sorcery", - "uri": "https://api.scryfall.com/cards/b4c4d642-c3fb-47d1-b57a-266eb269d5ea" + "uri": "https://api.scryfall.com/cards/7d97d0c8-5c9a-4b04-a680-39ae3367367c" }, { "object": "related_card", @@ -5774,11 +5770,11 @@ }, { "object": "related_card", - "id": "fbd81c2e-9c0d-47b2-ba02-6f1dca1d96dc", + "id": "41d728ed-9fdf-4d92-bd97-66e27c139423", "component": "combo_piece", "name": "Empty the Warrens", "type_line": "Sorcery", - "uri": "https://api.scryfall.com/cards/fbd81c2e-9c0d-47b2-ba02-6f1dca1d96dc" + "uri": "https://api.scryfall.com/cards/41d728ed-9fdf-4d92-bd97-66e27c139423" }, { "object": "related_card", @@ -5798,11 +5794,11 @@ }, { "object": "related_card", - "id": "a9d80e96-3956-4408-84fb-5f94a364eb41", + "id": "b0e81bcf-d2f1-4ce0-9c1e-730632caa328", "component": "combo_piece", "name": "Goblinslide", "type_line": "Enchantment", - "uri": "https://api.scryfall.com/cards/a9d80e96-3956-4408-84fb-5f94a364eb41" + "uri": "https://api.scryfall.com/cards/b0e81bcf-d2f1-4ce0-9c1e-730632caa328" }, { "object": "related_card", @@ -5814,11 +5810,11 @@ }, { "object": "related_card", - "id": "8d8d27af-e4cf-4e18-825e-8f6c972e64ba", + "id": "36633f10-ea38-421c-ab80-9862eb18d6da", "component": "combo_piece", "name": "Sling-Gang Lieutenant", "type_line": "Creature — Goblin", - "uri": "https://api.scryfall.com/cards/8d8d27af-e4cf-4e18-825e-8f6c972e64ba" + "uri": "https://api.scryfall.com/cards/36633f10-ea38-421c-ab80-9862eb18d6da" }, { "object": "related_card", @@ -5862,11 +5858,11 @@ }, { "object": "related_card", - "id": "623c1d1b-69a4-4bc4-b388-17a7600fd960", + "id": "24025e76-0016-46a6-93cd-366071953c36", "component": "combo_piece", "name": "Swarming Goblins", "type_line": "Creature — Goblin", - "uri": "https://api.scryfall.com/cards/623c1d1b-69a4-4bc4-b388-17a7600fd960" + "uri": "https://api.scryfall.com/cards/24025e76-0016-46a6-93cd-366071953c36" }, { "object": "related_card", @@ -5894,27 +5890,27 @@ }, { "object": "related_card", - "id": "c069ebf8-5616-4cff-81d9-cd20b20102ee", + "id": "98be3783-23e8-4143-8685-6d887f164294", "component": "combo_piece", "name": "Goblin Gang Leader", "type_line": "Creature — Goblin Warrior", - "uri": "https://api.scryfall.com/cards/c069ebf8-5616-4cff-81d9-cd20b20102ee" + "uri": "https://api.scryfall.com/cards/98be3783-23e8-4143-8685-6d887f164294" }, { "object": "related_card", - "id": "fc027246-1dd3-4be0-bea6-3a7476a833ce", + "id": "fd170aa1-18be-470e-aa36-bfb11e9f92c1", "component": "combo_piece", "name": "Mogg War Marshal", "type_line": "Creature — Goblin Warrior", - "uri": "https://api.scryfall.com/cards/fc027246-1dd3-4be0-bea6-3a7476a833ce" + "uri": "https://api.scryfall.com/cards/fd170aa1-18be-470e-aa36-bfb11e9f92c1" }, { "object": "related_card", - "id": "b36a1bc7-a080-4fb6-b975-c59bb33a090a", + "id": "71c818eb-3846-471f-967a-76e1cb809b9f", "component": "combo_piece", "name": "Goblin Instigator", "type_line": "Creature — Goblin Rogue", - "uri": "https://api.scryfall.com/cards/b36a1bc7-a080-4fb6-b975-c59bb33a090a" + "uri": "https://api.scryfall.com/cards/71c818eb-3846-471f-967a-76e1cb809b9f" }, { "object": "related_card", @@ -5956,6 +5952,14 @@ "type_line": "Sorcery", "uri": "https://api.scryfall.com/cards/b07d96a1-87a0-45ff-ae6e-230deaf44dca" }, + { + "object": "related_card", + "id": "e22c2df5-ae00-4d71-ac60-6ea402b9036b", + "component": "combo_piece", + "name": "Siege-Gang Lieutenant", + "type_line": "Creature — Goblin", + "uri": "https://api.scryfall.com/cards/e22c2df5-ae00-4d71-ac60-6ea402b9036b" + }, { "object": "related_card", "id": "a5579dfb-4e63-4e7b-80c5-56949518c71e", @@ -5966,11 +5970,11 @@ }, { "object": "related_card", - "id": "c80c53a3-a2de-4e54-a50a-2eabb2ceb67c", + "id": "5183ca53-dc90-4971-a610-38b4ba85dc83", "component": "combo_piece", "name": "Hordeling Outburst", "type_line": "Sorcery", - "uri": "https://api.scryfall.com/cards/c80c53a3-a2de-4e54-a50a-2eabb2ceb67c" + "uri": "https://api.scryfall.com/cards/5183ca53-dc90-4971-a610-38b4ba85dc83" }, { "object": "related_card", @@ -6014,11 +6018,11 @@ }, { "object": "related_card", - "id": "bfeb1145-3729-481e-a314-c325ed2f2a35", + "id": "ef8b7992-d4d9-4d0f-9eca-5085588a4669", "component": "combo_piece", "name": "Mogg Infestation", "type_line": "Sorcery", - "uri": "https://api.scryfall.com/cards/bfeb1145-3729-481e-a314-c325ed2f2a35" + "uri": "https://api.scryfall.com/cards/ef8b7992-d4d9-4d0f-9eca-5085588a4669" }, { "object": "related_card", @@ -6038,19 +6042,19 @@ }, { "object": "related_card", - "id": "98b913e1-c26d-4a7d-9671-50d483304ba3", + "id": "0befe0f5-ff7c-441a-9bb2-cbe919be10ad", "component": "combo_piece", "name": "Siege-Gang Commander", "type_line": "Creature — Goblin", - "uri": "https://api.scryfall.com/cards/98b913e1-c26d-4a7d-9671-50d483304ba3" + "uri": "https://api.scryfall.com/cards/0befe0f5-ff7c-441a-9bb2-cbe919be10ad" }, { "object": "related_card", - "id": "6d6adaa2-62ac-44f3-9665-8361135ccf6a", + "id": "2a17c97b-1195-4ca7-aa30-fe11585f180c", "component": "combo_piece", "name": "Battle Cry Goblin", "type_line": "Creature — Goblin", - "uri": "https://api.scryfall.com/cards/6d6adaa2-62ac-44f3-9665-8361135ccf6a" + "uri": "https://api.scryfall.com/cards/2a17c97b-1195-4ca7-aa30-fe11585f180c" }, { "object": "related_card", @@ -6198,7 +6202,7 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/0/8/08ca3900-3845-40ac-8581-d4aebc2850a0.jpg?1561756620" }, "prices": { - "usd": "20.33", + "usd": "16.87", "usd_foil": null, "usd_etched": null, "eur": null, @@ -6256,7 +6260,7 @@ "color_identity": [ "W" ], - "edhrec_rank": 17435, + "edhrec_rank": 17947, "foil": false, "keywords": [ "Flying", @@ -6327,10 +6331,10 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/0/f/0f638ffc-20b3-4e8c-8f0a-0d034902bddd.jpg?1575571386" }, "prices": { - "usd": "0.29", + "usd": "0.20", "usd_foil": null, "usd_etched": null, - "eur": "0.15", + "eur": "0.13", "eur_foil": null, "tix": "0.05" }, @@ -6379,7 +6383,7 @@ "color_identity": [ "B" ], - "edhrec_rank": 2042, + "edhrec_rank": 2089, "foil": true, "keywords": [], "layout": "normal", @@ -6412,7 +6416,7 @@ "nonfoil": false, "oracle_text": "Put X -1/-1 counters on each creature. Shuffle Black Sun's Zenith into its owner's library.", "oversized": false, - "penny_rank": 1924, + "penny_rank": 1991, "reserved": false, "type_line": "Sorcery", "artist": "James Paick", @@ -6445,10 +6449,10 @@ }, "prices": { "usd": null, - "usd_foil": "18.54", + "usd_foil": "16.52", "usd_etched": null, "eur": null, - "eur_foil": "9.85", + "eur_foil": "9.33", "tix": null }, "promo": true, @@ -6559,10 +6563,10 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/7/6/76e5383d-ac12-4abc-aa30-15e99ded2d6f.jpg?1677544167" }, "prices": { - "usd": "18.43", + "usd": "23.64", "usd_foil": null, "usd_etched": null, - "eur": "22.62", + "eur": "22.66", "eur_foil": null, "tix": null }, @@ -6611,7 +6615,7 @@ "color_identity": [ "W" ], - "edhrec_rank": 12895, + "edhrec_rank": 13884, "foil": true, "keywords": [ "Bolster" @@ -6646,7 +6650,7 @@ "nonfoil": false, "oracle_text": "At the beginning of your end step, bolster X, where X is the number of tapped creatures you control. (Choose a creature with the least toughness among creatures you control and put X +1/+1 counters on it.)", "oversized": false, - "penny_rank": 13414, + "penny_rank": 13688, "power": "2", "reserved": false, "toughness": "3", @@ -6682,10 +6686,10 @@ }, "prices": { "usd": null, - "usd_foil": "0.51", + "usd_foil": "0.53", "usd_etched": null, "eur": null, - "eur_foil": "0.50", + "eur_foil": "0.55", "tix": null }, "promo": true, @@ -6738,7 +6742,7 @@ "color_identity": [ "W" ], - "edhrec_rank": 12895, + "edhrec_rank": 13884, "foil": true, "keywords": [ "Bolster" @@ -6773,7 +6777,7 @@ "nonfoil": false, "oracle_text": "At the beginning of your end step, bolster X, where X is the number of tapped creatures you control. (Choose a creature with the least toughness among creatures you control and put X +1/+1 counters on it.)", "oversized": false, - "penny_rank": 13414, + "penny_rank": 13688, "power": "2", "reserved": false, "toughness": "3", @@ -6809,10 +6813,10 @@ }, "prices": { "usd": null, - "usd_foil": "0.39", + "usd_foil": "0.50", "usd_etched": null, "eur": null, - "eur_foil": "1.09", + "eur_foil": "0.93", "tix": null }, "promo": true, @@ -6928,10 +6932,10 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/5/7/57f25ead-b3ec-4c40-972d-d750ed2f5319.jpg?1549805757" }, "prices": { - "usd": "8.73", + "usd": "9.05", "usd_foil": null, "usd_etched": null, - "eur": "1.50", + "eur": "1.63", "eur_foil": null, "tix": null }, @@ -6981,7 +6985,7 @@ "cmc": 0.0, "colors": [], "color_identity": [], - "edhrec_rank": 8795, + "edhrec_rank": 9182, "foil": false, "keywords": [ "Fight" @@ -7016,7 +7020,7 @@ "nonfoil": true, "oracle_text": "{3}, {T}: Tap target creature you control and target creature of an opponent's choice they control. Those creatures fight each other. (Each deals damage equal to its power to the other.)", "oversized": false, - "penny_rank": 7363, + "penny_rank": 7471, "reserved": false, "type_line": "Land", "artist": "Rob Alexander", @@ -7040,18 +7044,18 @@ "illustration_id": "5de809a1-34f1-44ef-856d-dc2fa1db6b98", "image_status": "highres_scan", "image_uris": { - "small": "https://cards.scryfall.io/small/front/2/f/2f989fda-2e54-427c-9154-4820c48abb02.jpg?1561756864", - "normal": "https://cards.scryfall.io/normal/front/2/f/2f989fda-2e54-427c-9154-4820c48abb02.jpg?1561756864", - "large": "https://cards.scryfall.io/large/front/2/f/2f989fda-2e54-427c-9154-4820c48abb02.jpg?1561756864", - "png": "https://cards.scryfall.io/png/front/2/f/2f989fda-2e54-427c-9154-4820c48abb02.png?1561756864", - "art_crop": "https://cards.scryfall.io/art_crop/front/2/f/2f989fda-2e54-427c-9154-4820c48abb02.jpg?1561756864", - "border_crop": "https://cards.scryfall.io/border_crop/front/2/f/2f989fda-2e54-427c-9154-4820c48abb02.jpg?1561756864" + "small": "https://cards.scryfall.io/small/front/2/f/2f989fda-2e54-427c-9154-4820c48abb02.jpg?1722463351", + "normal": "https://cards.scryfall.io/normal/front/2/f/2f989fda-2e54-427c-9154-4820c48abb02.jpg?1722463351", + "large": "https://cards.scryfall.io/large/front/2/f/2f989fda-2e54-427c-9154-4820c48abb02.jpg?1722463351", + "png": "https://cards.scryfall.io/png/front/2/f/2f989fda-2e54-427c-9154-4820c48abb02.png?1722463351", + "art_crop": "https://cards.scryfall.io/art_crop/front/2/f/2f989fda-2e54-427c-9154-4820c48abb02.jpg?1722463351", + "border_crop": "https://cards.scryfall.io/border_crop/front/2/f/2f989fda-2e54-427c-9154-4820c48abb02.jpg?1722463351" }, "prices": { - "usd": "8.32", + "usd": "7.89", "usd_foil": null, "usd_etched": null, - "eur": "4.80", + "eur": "4.60", "eur_foil": null, "tix": null }, @@ -7071,8 +7075,8 @@ "tcgplayer_infinite_decks": "https://tcgplayer.pxf.io/c/4931599/1830156/21018?subId1=api&trafcat=infinite&u=https%3A%2F%2Finfinite.tcgplayer.com%2Fsearch%3FcontentMode%3Ddeck%26game%3Dmagic%26partner%3Dscryfall%26q%3DArena", "edhrec": "https://edhrec.com/route/?cc=Arena" }, - "released_at": "1994-09-01", - "reprint": true, + "released_at": "1994-11-01", + "reprint": false, "scryfall_set_uri": "https://scryfall.com/sets/phpr?utm_source=api", "set_name": "HarperPrism Book Promos", "set_search_uri": "https://api.scryfall.com/cards/search?order=set&q=e%3Aphpr&unique=prints", @@ -7114,7 +7118,6 @@ "object": "card_face", "artist": "John Avon", "artist_id": "798f3932-30e0-4420-aa3f-db4d613f89ca", - "flavor_name": "", "mana_cost": "{5}{R}", "name": "Bust", "oracle_text": "Destroy all lands.", @@ -7128,7 +7131,7 @@ "color_identity": [ "R" ], - "edhrec_rank": 9635, + "edhrec_rank": 10234, "foil": true, "keywords": [], "layout": "split", @@ -7144,7 +7147,7 @@ "legacy": "legal", "pauper": "not_legal", "vintage": "legal", - "penny": "legal", + "penny": "not_legal", "commander": "legal", "oathbreaker": "legal", "standardbrawl": "not_legal", @@ -7160,7 +7163,7 @@ "name": "Boom // Bust", "nonfoil": true, "oversized": false, - "penny_rank": 648, + "penny_rank": 814, "reserved": false, "type_line": "Sorcery // Sorcery", "artist": "John Avon", @@ -7194,11 +7197,11 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/7/c/7ce986a4-5f82-4e7e-bef5-b49f05bf96a6.jpg?1562575287" }, "prices": { - "usd": "1.85", - "usd_foil": "11.21", + "usd": "5.93", + "usd_foil": "13.12", "usd_etched": null, - "eur": "0.71", - "eur_foil": "5.70", + "eur": "1.21", + "eur_foil": "5.78", "tix": "0.03" }, "promo": false, @@ -7254,7 +7257,7 @@ "U", "W" ], - "edhrec_rank": 13500, + "edhrec_rank": 14357, "foil": true, "keywords": [], "layout": "normal", @@ -7287,7 +7290,7 @@ "nonfoil": true, "oracle_text": "{U}, {T}, Sacrifice a creature or enchantment: Counter target spell.", "oversized": false, - "penny_rank": 9839, + "penny_rank": 10067, "power": "3", "reserved": false, "toughness": "4", @@ -7324,12 +7327,12 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/6/6/66b950d9-8fef-4deb-b51b-26edb90abc56.jpg?1586450720" }, "prices": { - "usd": "1.24", - "usd_foil": "44.99", + "usd": "1.17", + "usd_foil": "41.14", "usd_etched": null, - "eur": "1.01", - "eur_foil": "76.43", - "tix": "0.03" + "eur": "0.81", + "eur_foil": "73.06", + "tix": "0.02" }, "promo": false, "purchase_uris": { @@ -7382,7 +7385,7 @@ "U", "W" ], - "edhrec_rank": 13500, + "edhrec_rank": 14357, "foil": true, "keywords": [], "layout": "normal", @@ -7415,7 +7418,7 @@ "nonfoil": false, "oracle_text": "{U}, {T}, Sacrifice a creature or enchantment: Counter target spell.", "oversized": false, - "penny_rank": 9839, + "penny_rank": 10067, "power": "3", "reserved": false, "toughness": "4", @@ -7486,34 +7489,16 @@ }, { "object": "card", - "id": "8829efa0-498a-43ca-91aa-f9caeeafe298", + "id": "c9d6af7b-41a5-4077-81ed-7560548dcf3e", "lang": "en", "multiverse_ids": [], - "tcgplayer_id": 48140, - "cardmarket_id": 245268, - "oracle_id": "454a8902-8120-4373-96ee-bbf352b04e8d", - "prints_search_uri": "https://api.scryfall.com/cards/search?order=released&q=oracleid%3A454a8902-8120-4373-96ee-bbf352b04e8d&unique=prints", - "rulings_uri": "https://api.scryfall.com/cards/8829efa0-498a-43ca-91aa-f9caeeafe298/rulings", - "scryfall_uri": "https://scryfall.com/card/pmbs/8%E2%98%85/hero-of-bladehold?utm_source=api", - "uri": "https://api.scryfall.com/cards/8829efa0-498a-43ca-91aa-f9caeeafe298", - "all_parts": [ - { - "object": "related_card", - "id": "8829efa0-498a-43ca-91aa-f9caeeafe298", - "component": "combo_piece", - "name": "Hero of Bladehold", - "type_line": "Creature — Human Knight", - "uri": "https://api.scryfall.com/cards/8829efa0-498a-43ca-91aa-f9caeeafe298" - }, - { - "object": "related_card", - "id": "7a563df7-7b9d-4692-ab1b-578be1887b62", - "component": "token", - "name": "Soldier", - "type_line": "Token Creature — Soldier", - "uri": "https://api.scryfall.com/cards/7a563df7-7b9d-4692-ab1b-578be1887b62" - } - ], + "tcgplayer_id": 262885, + "cardmarket_id": 609517, + "oracle_id": "7246d45b-2185-4cdd-981b-5419b7d52bce", + "prints_search_uri": "https://api.scryfall.com/cards/search?order=released&q=oracleid%3A7246d45b-2185-4cdd-981b-5419b7d52bce&unique=prints", + "rulings_uri": "https://api.scryfall.com/cards/c9d6af7b-41a5-4077-81ed-7560548dcf3e/rulings", + "scryfall_uri": "https://scryfall.com/card/plst/AKH-2/anointed-procession?utm_source=api", + "uri": "https://api.scryfall.com/cards/c9d6af7b-41a5-4077-81ed-7560548dcf3e", "cmc": 4.0, "colors": [ "W" @@ -7521,20 +7506,18 @@ "color_identity": [ "W" ], - "edhrec_rank": 1823, - "foil": true, - "keywords": [ - "Battle Cry" - ], + "edhrec_rank": 265, + "foil": false, + "keywords": [], "layout": "normal", "legalities": { "standard": "not_legal", "future": "not_legal", - "historic": "not_legal", - "timeless": "not_legal", - "gladiator": "not_legal", - "pioneer": "not_legal", - "explorer": "not_legal", + "historic": "legal", + "timeless": "legal", + "gladiator": "legal", + "pioneer": "legal", + "explorer": "legal", "modern": "legal", "legacy": "legal", "pauper": "not_legal", @@ -7543,117 +7526,132 @@ "commander": "legal", "oathbreaker": "legal", "standardbrawl": "not_legal", - "brawl": "not_legal", + "brawl": "legal", "alchemy": "not_legal", "paupercommander": "not_legal", "duel": "legal", "oldschool": "not_legal", "premodern": "not_legal", - "predh": "legal" + "predh": "not_legal" }, - "mana_cost": "{2}{W}{W}", - "name": "Hero of Bladehold", - "nonfoil": false, - "oracle_text": "Battle cry (Whenever this creature attacks, each other attacking creature gets +1/+0 until end of turn.)\nWhenever Hero of Bladehold attacks, create two 1/1 white Soldier creature tokens that are tapped and attacking.", + "mana_cost": "{3}{W}", + "name": "Anointed Procession", + "nonfoil": true, + "oracle_text": "If an effect would create one or more tokens under your control, it creates twice that many of those tokens instead.", "oversized": false, - "penny_rank": 2848, - "power": "3", + "penny_rank": 5164, "reserved": false, - "toughness": "4", - "type_line": "Creature — Human Knight", - "artist": "Scott Chou", + "type_line": "Enchantment", + "artist": "Victor Adame Minguez", "artist_ids": [ - "9e048547-f9c3-4958-9c2c-91e45df7c6ae" + "bd8f7368-5b10-4554-b6b8-d052c6aca89f" ], - "booster": false, + "booster": true, "border_color": "black", "card_back_id": "0aeebaf5-8c7d-4636-9e82-8c27447861f7", - "collector_number": "8★", + "collector_number": "AKH-2", "digital": false, "finishes": [ - "foil" + "nonfoil" ], - "frame": "2003", + "flavor_text": "\"The gods here may walk among the people, but they are not with them.\"\n—Gideon Jura", + "frame": "2015", "full_art": false, "games": [ "paper" ], "highres_image": true, - "illustration_id": "bdef2378-b1b2-46fc-81df-b066da385026", + "illustration_id": "7aecf9a4-6c84-4aca-ab91-62ee479b9e08", "image_status": "highres_scan", "image_uris": { - "small": "https://cards.scryfall.io/small/front/8/8/8829efa0-498a-43ca-91aa-f9caeeafe298.jpg?1605370731", - "normal": "https://cards.scryfall.io/normal/front/8/8/8829efa0-498a-43ca-91aa-f9caeeafe298.jpg?1605370731", - "large": "https://cards.scryfall.io/large/front/8/8/8829efa0-498a-43ca-91aa-f9caeeafe298.jpg?1605370731", - "png": "https://cards.scryfall.io/png/front/8/8/8829efa0-498a-43ca-91aa-f9caeeafe298.png?1605370731", - "art_crop": "https://cards.scryfall.io/art_crop/front/8/8/8829efa0-498a-43ca-91aa-f9caeeafe298.jpg?1605370731", - "border_crop": "https://cards.scryfall.io/border_crop/front/8/8/8829efa0-498a-43ca-91aa-f9caeeafe298.jpg?1605370731" + "small": "https://cards.scryfall.io/small/front/c/9/c9d6af7b-41a5-4077-81ed-7560548dcf3e.jpg?1643939169", + "normal": "https://cards.scryfall.io/normal/front/c/9/c9d6af7b-41a5-4077-81ed-7560548dcf3e.jpg?1643939169", + "large": "https://cards.scryfall.io/large/front/c/9/c9d6af7b-41a5-4077-81ed-7560548dcf3e.jpg?1643939169", + "png": "https://cards.scryfall.io/png/front/c/9/c9d6af7b-41a5-4077-81ed-7560548dcf3e.png?1643939169", + "art_crop": "https://cards.scryfall.io/art_crop/front/c/9/c9d6af7b-41a5-4077-81ed-7560548dcf3e.jpg?1643939169", + "border_crop": "https://cards.scryfall.io/border_crop/front/c/9/c9d6af7b-41a5-4077-81ed-7560548dcf3e.jpg?1643939169" }, "prices": { - "usd": null, - "usd_foil": "4.77", + "usd": "53.12", + "usd_foil": null, "usd_etched": null, - "eur": null, - "eur_foil": "3.03", + "eur": "40.72", + "eur_foil": null, "tix": null }, - "promo": true, - "promo_types": [ - "setpromo", - "datestamped", - "prerelease" - ], + "promo": false, "purchase_uris": { - "tcgplayer": "https://tcgplayer.pxf.io/c/4931599/1830156/21018?subId1=api&u=https%3A%2F%2Fwww.tcgplayer.com%2Fproduct%2F48140%3Fpage%3D1", - "cardmarket": "https://www.cardmarket.com/en/Magic/Products/Singles/Prerelease-Promos/Hero-of-Bladehold?referrer=scryfall&utm_campaign=card_prices&utm_medium=text&utm_source=scryfall", - "cardhoarder": "https://www.cardhoarder.com/cards?affiliate_id=scryfall&data%5Bsearch%5D=Hero+of+Bladehold&ref=card-profile&utm_campaign=affiliate&utm_medium=card&utm_source=scryfall" + "tcgplayer": "https://tcgplayer.pxf.io/c/4931599/1830156/21018?subId1=api&u=https%3A%2F%2Fwww.tcgplayer.com%2Fproduct%2F262885%3Fpage%3D1", + "cardmarket": "https://www.cardmarket.com/en/Magic/Products/Singles/The-List/Anointed-Procession?referrer=scryfall&utm_campaign=card_prices&utm_medium=text&utm_source=scryfall", + "cardhoarder": "https://www.cardhoarder.com/cards?affiliate_id=scryfall&data%5Bsearch%5D=Anointed+Procession&ref=card-profile&utm_campaign=affiliate&utm_medium=card&utm_source=scryfall" }, - "rarity": "mythic", + "rarity": "rare", "related_uris": { - "tcgplayer_infinite_articles": "https://tcgplayer.pxf.io/c/4931599/1830156/21018?subId1=api&trafcat=infinite&u=https%3A%2F%2Finfinite.tcgplayer.com%2Fsearch%3FcontentMode%3Darticle%26game%3Dmagic%26partner%3Dscryfall%26q%3DHero%2Bof%2BBladehold", - "tcgplayer_infinite_decks": "https://tcgplayer.pxf.io/c/4931599/1830156/21018?subId1=api&trafcat=infinite&u=https%3A%2F%2Finfinite.tcgplayer.com%2Fsearch%3FcontentMode%3Ddeck%26game%3Dmagic%26partner%3Dscryfall%26q%3DHero%2Bof%2BBladehold", - "edhrec": "https://edhrec.com/route/?cc=Hero+of+Bladehold" + "tcgplayer_infinite_articles": "https://tcgplayer.pxf.io/c/4931599/1830156/21018?subId1=api&trafcat=infinite&u=https%3A%2F%2Finfinite.tcgplayer.com%2Fsearch%3FcontentMode%3Darticle%26game%3Dmagic%26partner%3Dscryfall%26q%3DAnointed%2BProcession", + "tcgplayer_infinite_decks": "https://tcgplayer.pxf.io/c/4931599/1830156/21018?subId1=api&trafcat=infinite&u=https%3A%2F%2Finfinite.tcgplayer.com%2Fsearch%3FcontentMode%3Ddeck%26game%3Dmagic%26partner%3Dscryfall%26q%3DAnointed%2BProcession", + "edhrec": "https://edhrec.com/route/?cc=Anointed+Procession" }, - "released_at": "2011-02-03", + "released_at": "2022-02-18", "reprint": true, - "scryfall_set_uri": "https://scryfall.com/sets/pmbs?utm_source=api", - "set_name": "Mirrodin Besieged Promos", - "set_search_uri": "https://api.scryfall.com/cards/search?order=set&q=e%3Apmbs&unique=prints", - "set_type": "promo", - "set_uri": "https://api.scryfall.com/sets/8a59d98a-4e13-4943-b06c-b35868e954ba", - "set": "pmbs", - "set_id": "8a59d98a-4e13-4943-b06c-b35868e954ba", - "story_spotlight": false, + "scryfall_set_uri": "https://scryfall.com/sets/plst?utm_source=api", + "set_name": "The List", + "set_search_uri": "https://api.scryfall.com/cards/search?order=set&q=e%3Aplst&unique=prints", + "set_type": "masters", + "set_uri": "https://api.scryfall.com/sets/67e47ba2-b019-4181-9005-fe9fc021de44", + "set": "plst", + "set_id": "67e47ba2-b019-4181-9005-fe9fc021de44", + "story_spotlight": true, "textless": false, "variation": false, - "watermark": "mirran" + "security_stamp": "oval", + "watermark": "planeswalker" }, { "object": "card", - "id": "dda82840-1f3f-4be7-9bc7-66ff551ef5c0", + "id": "46f810c2-310e-42f5-ab1f-d56396cf5124", "lang": "en", "multiverse_ids": [], - "tcgplayer_id": 263926, - "cardmarket_id": 609431, - "oracle_id": "bf1341dd-41a3-49f6-87ec-63170dde4324", - "prints_search_uri": "https://api.scryfall.com/cards/search?order=released&q=oracleid%3Abf1341dd-41a3-49f6-87ec-63170dde4324&unique=prints", - "rulings_uri": "https://api.scryfall.com/cards/dda82840-1f3f-4be7-9bc7-66ff551ef5c0/rulings", - "scryfall_uri": "https://scryfall.com/card/pneo/266p/boseiju-who-endures?utm_source=api", - "uri": "https://api.scryfall.com/cards/dda82840-1f3f-4be7-9bc7-66ff551ef5c0", - "cmc": 0.0, - "colors": [], + "tcgplayer_id": 222423, + "cardmarket_id": 497615, + "oracle_id": "4e0b9273-6614-41a8-9738-959349c0717b", + "prints_search_uri": "https://api.scryfall.com/cards/search?order=released&q=oracleid%3A4e0b9273-6614-41a8-9738-959349c0717b&unique=prints", + "rulings_uri": "https://api.scryfall.com/cards/46f810c2-310e-42f5-ab1f-d56396cf5124/rulings", + "scryfall_uri": "https://scryfall.com/card/plst/AKH-3/anointer-priest?utm_source=api", + "uri": "https://api.scryfall.com/cards/46f810c2-310e-42f5-ab1f-d56396cf5124", + "all_parts": [ + { + "object": "related_card", + "id": "46f810c2-310e-42f5-ab1f-d56396cf5124", + "component": "combo_piece", + "name": "Anointer Priest", + "type_line": "Creature — Human Cleric", + "uri": "https://api.scryfall.com/cards/46f810c2-310e-42f5-ab1f-d56396cf5124" + }, + { + "object": "related_card", + "id": "98956e73-04e4-4d7f-bda5-cfa78eb71350", + "component": "token", + "name": "Anointer Priest", + "type_line": "Token Creature — Zombie Human Cleric", + "uri": "https://api.scryfall.com/cards/98956e73-04e4-4d7f-bda5-cfa78eb71350" + } + ], + "cmc": 2.0, + "colors": [ + "W" + ], "color_identity": [ - "G" + "W" ], - "edhrec_rank": 85, - "foil": true, + "edhrec_rank": 9080, + "foil": false, "keywords": [ - "Channel" + "Embalm" ], "layout": "normal", "legalities": { - "standard": "legal", - "future": "legal", + "standard": "not_legal", + "future": "not_legal", "historic": "legal", "timeless": "legal", "gladiator": "legal", @@ -7661,42 +7659,654 @@ "explorer": "legal", "modern": "legal", "legacy": "legal", - "pauper": "not_legal", + "pauper": "legal", "vintage": "legal", - "penny": "not_legal", + "penny": "legal", "commander": "legal", "oathbreaker": "legal", - "standardbrawl": "legal", + "standardbrawl": "not_legal", "brawl": "legal", "alchemy": "not_legal", - "paupercommander": "not_legal", + "paupercommander": "legal", "duel": "legal", "oldschool": "not_legal", "premodern": "not_legal", "predh": "not_legal" }, - "mana_cost": "", - "name": "Boseiju, Who Endures", + "mana_cost": "{1}{W}", + "name": "Anointer Priest", "nonfoil": true, - "oracle_text": "{T}: Add {G}.\nChannel — {1}{G}, Discard Boseiju, Who Endures: Destroy target artifact, enchantment, or nonbasic land an opponent controls. That player may search their library for a land card with a basic land type, put it onto the battlefield, then shuffle. This ability costs {1} less to activate for each legendary creature you control.", + "oracle_text": "Whenever a creature token you control enters, you gain 1 life.\nEmbalm {3}{W} ({3}{W}, Exile this card from your graveyard: Create a token that's a copy of it, except it's a white Zombie Human Cleric with no mana cost. Embalm only as a sorcery.)", "oversized": false, - "produced_mana": [ - "G" - ], + "penny_rank": 3854, + "power": "1", "reserved": false, - "type_line": "Legendary Land", - "artist": "Chris Ostrowski", + "toughness": "3", + "type_line": "Creature — Human Cleric", + "artist": "Lake Hurwitz", "artist_ids": [ - "b5f1bd34-abee-40c9-99f7-a6ee089fb30b" + "3677c64b-55e6-4a0d-a952-bdbb05531220" ], - "booster": false, + "booster": true, "border_color": "black", "card_back_id": "0aeebaf5-8c7d-4636-9e82-8c27447861f7", - "collector_number": "266p", + "collector_number": "AKH-3", "digital": false, "finishes": [ - "nonfoil", - "foil" + "nonfoil" + ], + "frame": "2015", + "full_art": false, + "games": [ + "paper" + ], + "highres_image": true, + "illustration_id": "37174da0-47dc-4b29-8481-e831d4a36196", + "image_status": "highres_scan", + "image_uris": { + "small": "https://cards.scryfall.io/small/front/4/6/46f810c2-310e-42f5-ab1f-d56396cf5124.jpg?1599769231", + "normal": "https://cards.scryfall.io/normal/front/4/6/46f810c2-310e-42f5-ab1f-d56396cf5124.jpg?1599769231", + "large": "https://cards.scryfall.io/large/front/4/6/46f810c2-310e-42f5-ab1f-d56396cf5124.jpg?1599769231", + "png": "https://cards.scryfall.io/png/front/4/6/46f810c2-310e-42f5-ab1f-d56396cf5124.png?1599769231", + "art_crop": "https://cards.scryfall.io/art_crop/front/4/6/46f810c2-310e-42f5-ab1f-d56396cf5124.jpg?1599769231", + "border_crop": "https://cards.scryfall.io/border_crop/front/4/6/46f810c2-310e-42f5-ab1f-d56396cf5124.jpg?1599769231" + }, + "prices": { + "usd": "0.19", + "usd_foil": null, + "usd_etched": null, + "eur": "0.29", + "eur_foil": null, + "tix": null + }, + "promo": false, + "purchase_uris": { + "tcgplayer": "https://tcgplayer.pxf.io/c/4931599/1830156/21018?subId1=api&u=https%3A%2F%2Fwww.tcgplayer.com%2Fproduct%2F222423%3Fpage%3D1", + "cardmarket": "https://www.cardmarket.com/en/Magic/Products/Singles/The-List/Anointer-Priest?referrer=scryfall&utm_campaign=card_prices&utm_medium=text&utm_source=scryfall", + "cardhoarder": "https://www.cardhoarder.com/cards?affiliate_id=scryfall&data%5Bsearch%5D=Anointer+Priest&ref=card-profile&utm_campaign=affiliate&utm_medium=card&utm_source=scryfall" + }, + "rarity": "common", + "related_uris": { + "tcgplayer_infinite_articles": "https://tcgplayer.pxf.io/c/4931599/1830156/21018?subId1=api&trafcat=infinite&u=https%3A%2F%2Finfinite.tcgplayer.com%2Fsearch%3FcontentMode%3Darticle%26game%3Dmagic%26partner%3Dscryfall%26q%3DAnointer%2BPriest", + "tcgplayer_infinite_decks": "https://tcgplayer.pxf.io/c/4931599/1830156/21018?subId1=api&trafcat=infinite&u=https%3A%2F%2Finfinite.tcgplayer.com%2Fsearch%3FcontentMode%3Ddeck%26game%3Dmagic%26partner%3Dscryfall%26q%3DAnointer%2BPriest", + "edhrec": "https://edhrec.com/route/?cc=Anointer+Priest" + }, + "released_at": "2020-09-01", + "reprint": true, + "scryfall_set_uri": "https://scryfall.com/sets/plst?utm_source=api", + "set_name": "The List", + "set_search_uri": "https://api.scryfall.com/cards/search?order=set&q=e%3Aplst&unique=prints", + "set_type": "masters", + "set_uri": "https://api.scryfall.com/sets/67e47ba2-b019-4181-9005-fe9fc021de44", + "set": "plst", + "set_id": "67e47ba2-b019-4181-9005-fe9fc021de44", + "story_spotlight": false, + "textless": false, + "variation": false + }, + { + "object": "card", + "id": "013e68be-daf9-409b-aab8-caf51f1cada3", + "lang": "en", + "multiverse_ids": [], + "tcgplayer_id": 526525, + "oracle_id": "49a8ca54-30d3-42d3-b122-334d24805e1b", + "prints_search_uri": "https://api.scryfall.com/cards/search?order=released&q=oracleid%3A49a8ca54-30d3-42d3-b122-334d24805e1b&unique=prints", + "rulings_uri": "https://api.scryfall.com/cards/013e68be-daf9-409b-aab8-caf51f1cada3/rulings", + "scryfall_uri": "https://scryfall.com/card/plst/ARB-1/ardent-plea?utm_source=api", + "uri": "https://api.scryfall.com/cards/013e68be-daf9-409b-aab8-caf51f1cada3", + "cmc": 3.0, + "colors": [ + "U", + "W" + ], + "color_identity": [ + "U", + "W" + ], + "edhrec_rank": 12999, + "foil": false, + "keywords": [ + "Exalted", + "Cascade" + ], + "layout": "normal", + "legalities": { + "standard": "not_legal", + "future": "not_legal", + "historic": "not_legal", + "timeless": "not_legal", + "gladiator": "not_legal", + "pioneer": "not_legal", + "explorer": "not_legal", + "modern": "legal", + "legacy": "legal", + "pauper": "not_legal", + "vintage": "legal", + "penny": "not_legal", + "commander": "legal", + "oathbreaker": "legal", + "standardbrawl": "not_legal", + "brawl": "not_legal", + "alchemy": "not_legal", + "paupercommander": "not_legal", + "duel": "legal", + "oldschool": "not_legal", + "premodern": "not_legal", + "predh": "legal" + }, + "mana_cost": "{1}{W}{U}", + "name": "Ardent Plea", + "nonfoil": true, + "oracle_text": "Exalted (Whenever a creature you control attacks alone, that creature gets +1/+1 until end of turn.)\nCascade (When you cast this spell, exile cards from the top of your library until you exile a nonland card that costs less. You may cast it without paying its mana cost. Put the exiled cards on the bottom in a random order.)", + "oversized": false, + "penny_rank": 1072, + "reserved": false, + "type_line": "Enchantment", + "artist": "Chippy", + "artist_ids": [ + "a36f01a0-e51a-48b2-a556-b9b3bc73f969" + ], + "booster": true, + "border_color": "black", + "card_back_id": "0aeebaf5-8c7d-4636-9e82-8c27447861f7", + "collector_number": "ARB-1", + "digital": false, + "finishes": [ + "nonfoil" + ], + "frame": "2003", + "full_art": false, + "games": [ + "paper" + ], + "highres_image": true, + "illustration_id": "0805f298-026a-495b-8a4f-0aeb1522550a", + "image_status": "highres_scan", + "image_uris": { + "small": "https://cards.scryfall.io/small/front/0/1/013e68be-daf9-409b-aab8-caf51f1cada3.jpg?1699878392", + "normal": "https://cards.scryfall.io/normal/front/0/1/013e68be-daf9-409b-aab8-caf51f1cada3.jpg?1699878392", + "large": "https://cards.scryfall.io/large/front/0/1/013e68be-daf9-409b-aab8-caf51f1cada3.jpg?1699878392", + "png": "https://cards.scryfall.io/png/front/0/1/013e68be-daf9-409b-aab8-caf51f1cada3.png?1699878392", + "art_crop": "https://cards.scryfall.io/art_crop/front/0/1/013e68be-daf9-409b-aab8-caf51f1cada3.jpg?1699878392", + "border_crop": "https://cards.scryfall.io/border_crop/front/0/1/013e68be-daf9-409b-aab8-caf51f1cada3.jpg?1699878392" + }, + "prices": { + "usd": "6.99", + "usd_foil": null, + "usd_etched": null, + "eur": null, + "eur_foil": null, + "tix": null + }, + "promo": false, + "purchase_uris": { + "tcgplayer": "https://tcgplayer.pxf.io/c/4931599/1830156/21018?subId1=api&u=https%3A%2F%2Fwww.tcgplayer.com%2Fproduct%2F526525%3Fpage%3D1", + "cardmarket": "https://www.cardmarket.com/en/Magic/Products/Search?referrer=scryfall&searchString=Ardent+Plea&utm_campaign=card_prices&utm_medium=text&utm_source=scryfall", + "cardhoarder": "https://www.cardhoarder.com/cards?affiliate_id=scryfall&data%5Bsearch%5D=Ardent+Plea&ref=card-profile&utm_campaign=affiliate&utm_medium=card&utm_source=scryfall" + }, + "rarity": "uncommon", + "related_uris": { + "tcgplayer_infinite_articles": "https://tcgplayer.pxf.io/c/4931599/1830156/21018?subId1=api&trafcat=infinite&u=https%3A%2F%2Finfinite.tcgplayer.com%2Fsearch%3FcontentMode%3Darticle%26game%3Dmagic%26partner%3Dscryfall%26q%3DArdent%2BPlea", + "tcgplayer_infinite_decks": "https://tcgplayer.pxf.io/c/4931599/1830156/21018?subId1=api&trafcat=infinite&u=https%3A%2F%2Finfinite.tcgplayer.com%2Fsearch%3FcontentMode%3Ddeck%26game%3Dmagic%26partner%3Dscryfall%26q%3DArdent%2BPlea", + "edhrec": "https://edhrec.com/route/?cc=Ardent+Plea" + }, + "released_at": "2023-11-17", + "reprint": true, + "scryfall_set_uri": "https://scryfall.com/sets/plst?utm_source=api", + "set_name": "The List", + "set_search_uri": "https://api.scryfall.com/cards/search?order=set&q=e%3Aplst&unique=prints", + "set_type": "masters", + "set_uri": "https://api.scryfall.com/sets/67e47ba2-b019-4181-9005-fe9fc021de44", + "set": "plst", + "set_id": "67e47ba2-b019-4181-9005-fe9fc021de44", + "story_spotlight": false, + "textless": false, + "variation": false + }, + { + "object": "card", + "id": "57dffddd-07c3-42f4-b924-3e833eda5edd", + "lang": "en", + "multiverse_ids": [], + "tcgplayer_id": 480156, + "oracle_id": "b59053d5-b5f2-44aa-a29c-7f3908d86577", + "prints_search_uri": "https://api.scryfall.com/cards/search?order=released&q=oracleid%3Ab59053d5-b5f2-44aa-a29c-7f3908d86577&unique=prints", + "rulings_uri": "https://api.scryfall.com/cards/57dffddd-07c3-42f4-b924-3e833eda5edd/rulings", + "scryfall_uri": "https://scryfall.com/card/plst/10E-20/high-ground?utm_source=api", + "uri": "https://api.scryfall.com/cards/57dffddd-07c3-42f4-b924-3e833eda5edd", + "cmc": 1.0, + "colors": [ + "W" + ], + "color_identity": [ + "W" + ], + "edhrec_rank": 16070, + "foil": false, + "keywords": [], + "layout": "normal", + "legalities": { + "standard": "not_legal", + "future": "not_legal", + "historic": "not_legal", + "timeless": "not_legal", + "gladiator": "not_legal", + "pioneer": "not_legal", + "explorer": "not_legal", + "modern": "legal", + "legacy": "legal", + "pauper": "not_legal", + "vintage": "legal", + "penny": "legal", + "commander": "legal", + "oathbreaker": "legal", + "standardbrawl": "not_legal", + "brawl": "not_legal", + "alchemy": "not_legal", + "paupercommander": "not_legal", + "duel": "legal", + "oldschool": "not_legal", + "premodern": "legal", + "predh": "legal" + }, + "mana_cost": "{W}", + "name": "High Ground", + "nonfoil": true, + "oracle_text": "Each creature you control can block an additional creature each combat.", + "oversized": false, + "penny_rank": 15281, + "reserved": false, + "type_line": "Enchantment", + "artist": "rk post", + "artist_ids": [ + "81ae0f3f-1d88-4125-9aeb-b15b4c734c82" + ], + "booster": true, + "border_color": "black", + "card_back_id": "0aeebaf5-8c7d-4636-9e82-8c27447861f7", + "collector_number": "10E-20", + "digital": false, + "finishes": [ + "nonfoil" + ], + "flavor_text": "In war, as in society, position is everything.", + "frame": "2003", + "full_art": false, + "games": [ + "paper" + ], + "highres_image": true, + "illustration_id": "c3998375-78f7-4e56-bfcd-af3fbec94bbe", + "image_status": "highres_scan", + "image_uris": { + "small": "https://cards.scryfall.io/small/front/5/7/57dffddd-07c3-42f4-b924-3e833eda5edd.jpg?1674047029", + "normal": "https://cards.scryfall.io/normal/front/5/7/57dffddd-07c3-42f4-b924-3e833eda5edd.jpg?1674047029", + "large": "https://cards.scryfall.io/large/front/5/7/57dffddd-07c3-42f4-b924-3e833eda5edd.jpg?1674047029", + "png": "https://cards.scryfall.io/png/front/5/7/57dffddd-07c3-42f4-b924-3e833eda5edd.png?1674047029", + "art_crop": "https://cards.scryfall.io/art_crop/front/5/7/57dffddd-07c3-42f4-b924-3e833eda5edd.jpg?1674047029", + "border_crop": "https://cards.scryfall.io/border_crop/front/5/7/57dffddd-07c3-42f4-b924-3e833eda5edd.jpg?1674047029" + }, + "prices": { + "usd": "0.11", + "usd_foil": null, + "usd_etched": null, + "eur": null, + "eur_foil": null, + "tix": null + }, + "promo": false, + "purchase_uris": { + "tcgplayer": "https://tcgplayer.pxf.io/c/4931599/1830156/21018?subId1=api&u=https%3A%2F%2Fwww.tcgplayer.com%2Fproduct%2F480156%3Fpage%3D1", + "cardmarket": "https://www.cardmarket.com/en/Magic/Products/Search?referrer=scryfall&searchString=High+Ground&utm_campaign=card_prices&utm_medium=text&utm_source=scryfall", + "cardhoarder": "https://www.cardhoarder.com/cards?affiliate_id=scryfall&data%5Bsearch%5D=High+Ground&ref=card-profile&utm_campaign=affiliate&utm_medium=card&utm_source=scryfall" + }, + "rarity": "uncommon", + "related_uris": { + "tcgplayer_infinite_articles": "https://tcgplayer.pxf.io/c/4931599/1830156/21018?subId1=api&trafcat=infinite&u=https%3A%2F%2Finfinite.tcgplayer.com%2Fsearch%3FcontentMode%3Darticle%26game%3Dmagic%26partner%3Dscryfall%26q%3DHigh%2BGround", + "tcgplayer_infinite_decks": "https://tcgplayer.pxf.io/c/4931599/1830156/21018?subId1=api&trafcat=infinite&u=https%3A%2F%2Finfinite.tcgplayer.com%2Fsearch%3FcontentMode%3Ddeck%26game%3Dmagic%26partner%3Dscryfall%26q%3DHigh%2BGround", + "edhrec": "https://edhrec.com/route/?cc=High+Ground" + }, + "released_at": "2023-02-10", + "reprint": true, + "scryfall_set_uri": "https://scryfall.com/sets/plst?utm_source=api", + "set_name": "The List", + "set_search_uri": "https://api.scryfall.com/cards/search?order=set&q=e%3Aplst&unique=prints", + "set_type": "masters", + "set_uri": "https://api.scryfall.com/sets/67e47ba2-b019-4181-9005-fe9fc021de44", + "set": "plst", + "set_id": "67e47ba2-b019-4181-9005-fe9fc021de44", + "story_spotlight": false, + "textless": false, + "variation": false + }, + { + "object": "card", + "id": "f8c2f285-141b-479b-aca6-ceacf60e3f6a", + "lang": "en", + "multiverse_ids": [], + "oracle_id": "b81f041d-98db-4408-9472-c483e4a502bc", + "prints_search_uri": "https://api.scryfall.com/cards/search?order=released&q=oracleid%3Ab81f041d-98db-4408-9472-c483e4a502bc&unique=prints", + "rulings_uri": "https://api.scryfall.com/cards/f8c2f285-141b-479b-aca6-ceacf60e3f6a/rulings", + "scryfall_uri": "https://scryfall.com/card/plst/10E-182/terror?utm_source=api", + "uri": "https://api.scryfall.com/cards/f8c2f285-141b-479b-aca6-ceacf60e3f6a", + "cmc": 2.0, + "colors": [ + "B" + ], + "color_identity": [ + "B" + ], + "edhrec_rank": 7244, + "foil": false, + "keywords": [], + "layout": "normal", + "legalities": { + "standard": "not_legal", + "future": "not_legal", + "historic": "not_legal", + "timeless": "not_legal", + "gladiator": "not_legal", + "pioneer": "not_legal", + "explorer": "not_legal", + "modern": "legal", + "legacy": "legal", + "pauper": "legal", + "vintage": "legal", + "penny": "legal", + "commander": "legal", + "oathbreaker": "legal", + "standardbrawl": "not_legal", + "brawl": "not_legal", + "alchemy": "not_legal", + "paupercommander": "legal", + "duel": "legal", + "oldschool": "not_legal", + "premodern": "legal", + "predh": "legal" + }, + "mana_cost": "{1}{B}", + "name": "Terror", + "nonfoil": true, + "oracle_text": "Destroy target nonartifact, nonblack creature. It can't be regenerated.", + "oversized": false, + "penny_rank": 1813, + "reserved": false, + "type_line": "Instant", + "artist": "Adam Rex", + "artist_ids": [ + "445bd2fb-4a70-4599-87a4-83cf5979fc56" + ], + "booster": true, + "border_color": "black", + "card_back_id": "0aeebaf5-8c7d-4636-9e82-8c27447861f7", + "collector_number": "10E-182", + "digital": false, + "finishes": [ + "nonfoil" + ], + "frame": "2003", + "full_art": false, + "games": [ + "paper" + ], + "highres_image": true, + "illustration_id": "df18a88d-c202-418b-a07d-d550abfc021a", + "image_status": "highres_scan", + "image_uris": { + "small": "https://cards.scryfall.io/small/front/f/8/f8c2f285-141b-479b-aca6-ceacf60e3f6a.jpg?1723432855", + "normal": "https://cards.scryfall.io/normal/front/f/8/f8c2f285-141b-479b-aca6-ceacf60e3f6a.jpg?1723432855", + "large": "https://cards.scryfall.io/large/front/f/8/f8c2f285-141b-479b-aca6-ceacf60e3f6a.jpg?1723432855", + "png": "https://cards.scryfall.io/png/front/f/8/f8c2f285-141b-479b-aca6-ceacf60e3f6a.png?1723432855", + "art_crop": "https://cards.scryfall.io/art_crop/front/f/8/f8c2f285-141b-479b-aca6-ceacf60e3f6a.jpg?1723432855", + "border_crop": "https://cards.scryfall.io/border_crop/front/f/8/f8c2f285-141b-479b-aca6-ceacf60e3f6a.jpg?1723432855" + }, + "prices": { + "usd": null, + "usd_foil": null, + "usd_etched": null, + "eur": null, + "eur_foil": null, + "tix": null + }, + "promo": false, + "purchase_uris": { + "tcgplayer": "https://tcgplayer.pxf.io/c/4931599/1830156/21018?subId1=api&u=https%3A%2F%2Fwww.tcgplayer.com%2Fsearch%2Fmagic%2Fproduct%3FproductLineName%3Dmagic%26q%3DTerror%26view%3Dgrid", + "cardmarket": "https://www.cardmarket.com/en/Magic/Products/Search?referrer=scryfall&searchString=Terror&utm_campaign=card_prices&utm_medium=text&utm_source=scryfall", + "cardhoarder": "https://www.cardhoarder.com/cards?affiliate_id=scryfall&data%5Bsearch%5D=Terror&ref=card-profile&utm_campaign=affiliate&utm_medium=card&utm_source=scryfall" + }, + "rarity": "common", + "related_uris": { + "tcgplayer_infinite_articles": "https://tcgplayer.pxf.io/c/4931599/1830156/21018?subId1=api&trafcat=infinite&u=https%3A%2F%2Finfinite.tcgplayer.com%2Fsearch%3FcontentMode%3Darticle%26game%3Dmagic%26partner%3Dscryfall%26q%3DTerror", + "tcgplayer_infinite_decks": "https://tcgplayer.pxf.io/c/4931599/1830156/21018?subId1=api&trafcat=infinite&u=https%3A%2F%2Finfinite.tcgplayer.com%2Fsearch%3FcontentMode%3Ddeck%26game%3Dmagic%26partner%3Dscryfall%26q%3DTerror", + "edhrec": "https://edhrec.com/route/?cc=Terror" + }, + "released_at": "2024-08-02", + "reprint": true, + "scryfall_set_uri": "https://scryfall.com/sets/plst?utm_source=api", + "set_name": "The List", + "set_search_uri": "https://api.scryfall.com/cards/search?order=set&q=e%3Aplst&unique=prints", + "set_type": "masters", + "set_uri": "https://api.scryfall.com/sets/67e47ba2-b019-4181-9005-fe9fc021de44", + "set": "plst", + "set_id": "67e47ba2-b019-4181-9005-fe9fc021de44", + "story_spotlight": false, + "textless": false, + "variation": false + }, + { + "object": "card", + "id": "8829efa0-498a-43ca-91aa-f9caeeafe298", + "lang": "en", + "multiverse_ids": [], + "tcgplayer_id": 48140, + "cardmarket_id": 245268, + "oracle_id": "454a8902-8120-4373-96ee-bbf352b04e8d", + "prints_search_uri": "https://api.scryfall.com/cards/search?order=released&q=oracleid%3A454a8902-8120-4373-96ee-bbf352b04e8d&unique=prints", + "rulings_uri": "https://api.scryfall.com/cards/8829efa0-498a-43ca-91aa-f9caeeafe298/rulings", + "scryfall_uri": "https://scryfall.com/card/pmbs/8%E2%98%85/hero-of-bladehold?utm_source=api", + "uri": "https://api.scryfall.com/cards/8829efa0-498a-43ca-91aa-f9caeeafe298", + "all_parts": [ + { + "object": "related_card", + "id": "8829efa0-498a-43ca-91aa-f9caeeafe298", + "component": "combo_piece", + "name": "Hero of Bladehold", + "type_line": "Creature — Human Knight", + "uri": "https://api.scryfall.com/cards/8829efa0-498a-43ca-91aa-f9caeeafe298" + }, + { + "object": "related_card", + "id": "7a563df7-7b9d-4692-ab1b-578be1887b62", + "component": "token", + "name": "Soldier", + "type_line": "Token Creature — Soldier", + "uri": "https://api.scryfall.com/cards/7a563df7-7b9d-4692-ab1b-578be1887b62" + } + ], + "cmc": 4.0, + "colors": [ + "W" + ], + "color_identity": [ + "W" + ], + "edhrec_rank": 1899, + "foil": true, + "keywords": [ + "Battle Cry" + ], + "layout": "normal", + "legalities": { + "standard": "not_legal", + "future": "not_legal", + "historic": "not_legal", + "timeless": "not_legal", + "gladiator": "not_legal", + "pioneer": "not_legal", + "explorer": "not_legal", + "modern": "legal", + "legacy": "legal", + "pauper": "not_legal", + "vintage": "legal", + "penny": "legal", + "commander": "legal", + "oathbreaker": "legal", + "standardbrawl": "not_legal", + "brawl": "not_legal", + "alchemy": "not_legal", + "paupercommander": "not_legal", + "duel": "legal", + "oldschool": "not_legal", + "premodern": "not_legal", + "predh": "legal" + }, + "mana_cost": "{2}{W}{W}", + "name": "Hero of Bladehold", + "nonfoil": false, + "oracle_text": "Battle cry (Whenever this creature attacks, each other attacking creature gets +1/+0 until end of turn.)\nWhenever Hero of Bladehold attacks, create two 1/1 white Soldier creature tokens that are tapped and attacking.", + "oversized": false, + "penny_rank": 3455, + "power": "3", + "reserved": false, + "toughness": "4", + "type_line": "Creature — Human Knight", + "artist": "Scott Chou", + "artist_ids": [ + "9e048547-f9c3-4958-9c2c-91e45df7c6ae" + ], + "booster": false, + "border_color": "black", + "card_back_id": "0aeebaf5-8c7d-4636-9e82-8c27447861f7", + "collector_number": "8★", + "digital": false, + "finishes": [ + "foil" + ], + "frame": "2003", + "full_art": false, + "games": [ + "paper" + ], + "highres_image": true, + "illustration_id": "bdef2378-b1b2-46fc-81df-b066da385026", + "image_status": "highres_scan", + "image_uris": { + "small": "https://cards.scryfall.io/small/front/8/8/8829efa0-498a-43ca-91aa-f9caeeafe298.jpg?1605370731", + "normal": "https://cards.scryfall.io/normal/front/8/8/8829efa0-498a-43ca-91aa-f9caeeafe298.jpg?1605370731", + "large": "https://cards.scryfall.io/large/front/8/8/8829efa0-498a-43ca-91aa-f9caeeafe298.jpg?1605370731", + "png": "https://cards.scryfall.io/png/front/8/8/8829efa0-498a-43ca-91aa-f9caeeafe298.png?1605370731", + "art_crop": "https://cards.scryfall.io/art_crop/front/8/8/8829efa0-498a-43ca-91aa-f9caeeafe298.jpg?1605370731", + "border_crop": "https://cards.scryfall.io/border_crop/front/8/8/8829efa0-498a-43ca-91aa-f9caeeafe298.jpg?1605370731" + }, + "prices": { + "usd": null, + "usd_foil": "5.80", + "usd_etched": null, + "eur": null, + "eur_foil": "2.70", + "tix": null + }, + "promo": true, + "promo_types": [ + "setpromo", + "datestamped", + "prerelease" + ], + "purchase_uris": { + "tcgplayer": "https://tcgplayer.pxf.io/c/4931599/1830156/21018?subId1=api&u=https%3A%2F%2Fwww.tcgplayer.com%2Fproduct%2F48140%3Fpage%3D1", + "cardmarket": "https://www.cardmarket.com/en/Magic/Products/Singles/Prerelease-Promos/Hero-of-Bladehold?referrer=scryfall&utm_campaign=card_prices&utm_medium=text&utm_source=scryfall", + "cardhoarder": "https://www.cardhoarder.com/cards?affiliate_id=scryfall&data%5Bsearch%5D=Hero+of+Bladehold&ref=card-profile&utm_campaign=affiliate&utm_medium=card&utm_source=scryfall" + }, + "rarity": "mythic", + "related_uris": { + "tcgplayer_infinite_articles": "https://tcgplayer.pxf.io/c/4931599/1830156/21018?subId1=api&trafcat=infinite&u=https%3A%2F%2Finfinite.tcgplayer.com%2Fsearch%3FcontentMode%3Darticle%26game%3Dmagic%26partner%3Dscryfall%26q%3DHero%2Bof%2BBladehold", + "tcgplayer_infinite_decks": "https://tcgplayer.pxf.io/c/4931599/1830156/21018?subId1=api&trafcat=infinite&u=https%3A%2F%2Finfinite.tcgplayer.com%2Fsearch%3FcontentMode%3Ddeck%26game%3Dmagic%26partner%3Dscryfall%26q%3DHero%2Bof%2BBladehold", + "edhrec": "https://edhrec.com/route/?cc=Hero+of+Bladehold" + }, + "released_at": "2011-02-03", + "reprint": true, + "scryfall_set_uri": "https://scryfall.com/sets/pmbs?utm_source=api", + "set_name": "Mirrodin Besieged Promos", + "set_search_uri": "https://api.scryfall.com/cards/search?order=set&q=e%3Apmbs&unique=prints", + "set_type": "promo", + "set_uri": "https://api.scryfall.com/sets/8a59d98a-4e13-4943-b06c-b35868e954ba", + "set": "pmbs", + "set_id": "8a59d98a-4e13-4943-b06c-b35868e954ba", + "story_spotlight": false, + "textless": false, + "variation": false, + "watermark": "mirran" + }, + { + "object": "card", + "id": "dda82840-1f3f-4be7-9bc7-66ff551ef5c0", + "lang": "en", + "multiverse_ids": [], + "tcgplayer_id": 263926, + "cardmarket_id": 609431, + "oracle_id": "bf1341dd-41a3-49f6-87ec-63170dde4324", + "prints_search_uri": "https://api.scryfall.com/cards/search?order=released&q=oracleid%3Abf1341dd-41a3-49f6-87ec-63170dde4324&unique=prints", + "rulings_uri": "https://api.scryfall.com/cards/dda82840-1f3f-4be7-9bc7-66ff551ef5c0/rulings", + "scryfall_uri": "https://scryfall.com/card/pneo/266p/boseiju-who-endures?utm_source=api", + "uri": "https://api.scryfall.com/cards/dda82840-1f3f-4be7-9bc7-66ff551ef5c0", + "cmc": 0.0, + "colors": [], + "color_identity": [ + "G" + ], + "edhrec_rank": 84, + "foil": true, + "keywords": [ + "Channel" + ], + "layout": "normal", + "legalities": { + "standard": "not_legal", + "future": "not_legal", + "historic": "legal", + "timeless": "legal", + "gladiator": "legal", + "pioneer": "legal", + "explorer": "legal", + "modern": "legal", + "legacy": "legal", + "pauper": "not_legal", + "vintage": "legal", + "penny": "not_legal", + "commander": "legal", + "oathbreaker": "legal", + "standardbrawl": "not_legal", + "brawl": "legal", + "alchemy": "not_legal", + "paupercommander": "not_legal", + "duel": "legal", + "oldschool": "not_legal", + "premodern": "not_legal", + "predh": "not_legal" + }, + "mana_cost": "", + "name": "Boseiju, Who Endures", + "nonfoil": true, + "oracle_text": "{T}: Add {G}.\nChannel — {1}{G}, Discard Boseiju, Who Endures: Destroy target artifact, enchantment, or nonbasic land an opponent controls. That player may search their library for a land card with a basic land type, put it onto the battlefield, then shuffle. This ability costs {1} less to activate for each legendary creature you control.", + "oversized": false, + "produced_mana": [ + "G" + ], + "reserved": false, + "type_line": "Legendary Land", + "artist": "Chris Ostrowski", + "artist_ids": [ + "b5f1bd34-abee-40c9-99f7-a6ee089fb30b" + ], + "booster": false, + "border_color": "black", + "card_back_id": "0aeebaf5-8c7d-4636-9e82-8c27447861f7", + "collector_number": "266p", + "digital": false, + "finishes": [ + "nonfoil", + "foil" ], "frame_effects": [ "legendary" @@ -7718,11 +8328,11 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/d/d/dda82840-1f3f-4be7-9bc7-66ff551ef5c0.jpg?1675617053" }, "prices": { - "usd": "34.28", - "usd_foil": "36.43", + "usd": "31.41", + "usd_foil": "33.22", "usd_etched": null, - "eur": "31.14", - "eur_foil": "34.97", + "eur": "32.57", + "eur_foil": "35.75", "tix": null }, "promo": true, @@ -7772,15 +8382,15 @@ "color_identity": [ "G" ], - "edhrec_rank": 85, + "edhrec_rank": 84, "foil": true, "keywords": [ "Channel" ], "layout": "normal", "legalities": { - "standard": "legal", - "future": "legal", + "standard": "not_legal", + "future": "not_legal", "historic": "legal", "timeless": "legal", "gladiator": "legal", @@ -7793,7 +8403,7 @@ "penny": "not_legal", "commander": "legal", "oathbreaker": "legal", - "standardbrawl": "legal", + "standardbrawl": "not_legal", "brawl": "legal", "alchemy": "not_legal", "paupercommander": "not_legal", @@ -7845,10 +8455,10 @@ }, "prices": { "usd": null, - "usd_foil": "47.12", + "usd_foil": "46.12", "usd_etched": null, "eur": null, - "eur_foil": "45.89", + "eur_foil": "42.11", "tix": null }, "promo": true, @@ -7918,7 +8528,7 @@ "color_identity": [ "W" ], - "edhrec_rank": 4705, + "edhrec_rank": 4983, "foil": true, "keywords": [ "Afterlife" @@ -7953,7 +8563,7 @@ "nonfoil": true, "oracle_text": "During your turn, spells your opponents cast cost {1} more to cast and abilities your opponents activate cost {1} more to activate unless they're mana abilities.\nAfterlife 1 (When this creature dies, create a 1/1 white and black Spirit creature token with flying.)", "oversized": false, - "penny_rank": 2078, + "penny_rank": 2218, "power": "2", "reserved": false, "toughness": "1", @@ -7988,11 +8598,11 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/8/4/848d4dae-1e51-446f-bad0-cdf852970486.jpg?1570827724" }, "prices": { - "usd": "0.72", - "usd_foil": "1.65", + "usd": "0.62", + "usd_foil": "1.37", "usd_etched": null, - "eur": "0.49", - "eur_foil": "0.92", + "eur": "0.48", + "eur_foil": "0.79", "tix": null }, "promo": true, @@ -8064,7 +8674,7 @@ "color_identity": [ "W" ], - "edhrec_rank": 4705, + "edhrec_rank": 4983, "foil": true, "keywords": [ "Afterlife" @@ -8099,7 +8709,7 @@ "nonfoil": false, "oracle_text": "During your turn, spells your opponents cast cost {1} more to cast and abilities your opponents activate cost {1} more to activate unless they're mana abilities.\nAfterlife 1 (When this creature dies, create a 1/1 white and black Spirit creature token with flying.)", "oversized": false, - "penny_rank": 2078, + "penny_rank": 2218, "power": "2", "reserved": false, "toughness": "1", @@ -8134,10 +8744,10 @@ }, "prices": { "usd": null, - "usd_foil": "2.39", + "usd_foil": "2.22", "usd_etched": null, "eur": null, - "eur_foil": "1.47", + "eur_foil": "1.58", "tix": null }, "promo": true, @@ -8256,10 +8866,10 @@ }, "prices": { "usd": null, - "usd_foil": "2.64", + "usd_foil": "2.67", "usd_etched": null, "eur": null, - "eur_foil": "1.74", + "eur_foil": "2.04", "tix": null }, "promo": true, @@ -8377,10 +8987,10 @@ }, "prices": { "usd": null, - "usd_foil": "3.88", + "usd_foil": "3.87", "usd_etched": null, "eur": null, - "eur_foil": "2.79", + "eur_foil": "2.73", "tix": null }, "promo": true, @@ -8462,7 +9072,6 @@ "colors": [ "B" ], - "flavor_name": "", "illustration_id": "a18eb5e3-0043-4d97-ba49-163db9e70df3", "image_uris": { "small": "https://cards.scryfall.io/small/back/5/6/5646ea19-0025-4f88-ad22-36968a1d3b89.jpg?1660203798", @@ -8543,10 +9152,10 @@ "image_status": "highres_scan", "prices": { "usd": null, - "usd_foil": "83.18", + "usd_foil": "88.50", "usd_etched": null, "eur": null, - "eur_foil": "148.63", + "eur_foil": "159.28", "tix": null }, "promo": true, @@ -8594,7 +9203,7 @@ "color_identity": [ "G" ], - "edhrec_rank": 133, + "edhrec_rank": 151, "foil": false, "keywords": [], "layout": "normal", @@ -8627,7 +9236,7 @@ "nonfoil": true, "oracle_text": "At the beginning of your draw step, you may draw two additional cards. If you do, choose two cards in your hand drawn this turn. For each of those cards, pay 4 life or put the card on top of your library.", "oversized": false, - "penny_rank": 117, + "penny_rank": 120, "reserved": false, "type_line": "Enchantment", "artist": "Harold McNeill", @@ -8659,10 +9268,10 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/8/1/81917a2b-9bf6-4aa6-947d-36b0f45d6fe3.jpg?1562919020" }, "prices": { - "usd": "55.01", + "usd": "43.86", "usd_foil": null, "usd_etched": null, - "eur": "24.93", + "eur": "28.15", "eur_foil": null, "tix": null }, @@ -8733,7 +9342,7 @@ "color_identity": [ "W" ], - "edhrec_rank": 4705, + "edhrec_rank": 4983, "foil": true, "keywords": [ "Afterlife" @@ -8768,7 +9377,7 @@ "nonfoil": true, "oracle_text": "During your turn, spells your opponents cast cost {1} more to cast and abilities your opponents activate cost {1} more to activate unless they're mana abilities.\nAfterlife 1 (When this creature dies, create a 1/1 white and black Spirit creature token with flying.)", "oversized": false, - "penny_rank": 2078, + "penny_rank": 2218, "power": "2", "reserved": false, "toughness": "1", @@ -8805,11 +9414,11 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/b/d/bd26b7b1-992d-4b8c-bc33-51aab5abdf98.jpg?1584830069" }, "prices": { - "usd": "0.31", - "usd_foil": "1.11", + "usd": "0.24", + "usd_foil": "1.21", "usd_etched": null, - "eur": "0.40", - "eur_foil": "1.46", + "eur": "0.28", + "eur_foil": "1.64", "tix": "0.02" }, "promo": false, @@ -8864,7 +9473,7 @@ "color_identity": [ "G" ], - "edhrec_rank": 17571, + "edhrec_rank": 18548, "foil": true, "keywords": [], "layout": "normal", @@ -8897,7 +9506,7 @@ "nonfoil": false, "oracle_text": "You may have Rhox assign its combat damage as though it weren't blocked.\n{2}{G}: Regenerate Rhox. (The next time this creature would be destroyed this turn, it isn't. Instead tap it, remove all damage from it, and remove it from combat.)", "oversized": false, - "penny_rank": 12962, + "penny_rank": 14204, "power": "5", "reserved": false, "toughness": "5", @@ -8932,10 +9541,10 @@ }, "prices": { "usd": null, - "usd_foil": "0.47", + "usd_foil": "0.58", "usd_etched": null, "eur": null, - "eur_foil": "0.90", + "eur_foil": "0.76", "tix": null }, "promo": true, @@ -9025,7 +9634,7 @@ } ], "color_identity": [], - "edhrec_rank": 2913, + "edhrec_rank": 2953, "foil": true, "keywords": [], "layout": "reversible_card", @@ -9056,7 +9665,7 @@ "name": "Doubling Cube // Doubling Cube", "nonfoil": true, "oversized": false, - "penny_rank": 8999, + "penny_rank": 9182, "reserved": false, "artist": "Volta Creation", "artist_ids": [ @@ -9078,8 +9687,8 @@ "highres_image": true, "image_status": "highres_scan", "prices": { - "usd": "17.24", - "usd_foil": "17.33", + "usd": "17.01", + "usd_foil": "16.97", "usd_etched": null, "eur": null, "eur_foil": null, @@ -9168,11 +9777,11 @@ }, { "object": "related_card", - "id": "fcaf7d1e-9ebf-497e-9d0e-bd23d3bf2b12", + "id": "0ec86780-0a66-498c-b86b-1d1836532dd4", "component": "combo_piece", "name": "Goblin Goliath", "type_line": "Creature — Goblin Mutant", - "uri": "https://api.scryfall.com/cards/fcaf7d1e-9ebf-497e-9d0e-bd23d3bf2b12" + "uri": "https://api.scryfall.com/cards/0ec86780-0a66-498c-b86b-1d1836532dd4" }, { "object": "related_card", @@ -9200,11 +9809,11 @@ }, { "object": "related_card", - "id": "b4c4d642-c3fb-47d1-b57a-266eb269d5ea", + "id": "7d97d0c8-5c9a-4b04-a680-39ae3367367c", "component": "combo_piece", "name": "Goblin Offensive", "type_line": "Sorcery", - "uri": "https://api.scryfall.com/cards/b4c4d642-c3fb-47d1-b57a-266eb269d5ea" + "uri": "https://api.scryfall.com/cards/7d97d0c8-5c9a-4b04-a680-39ae3367367c" }, { "object": "related_card", @@ -9216,11 +9825,11 @@ }, { "object": "related_card", - "id": "fbd81c2e-9c0d-47b2-ba02-6f1dca1d96dc", + "id": "41d728ed-9fdf-4d92-bd97-66e27c139423", "component": "combo_piece", "name": "Empty the Warrens", "type_line": "Sorcery", - "uri": "https://api.scryfall.com/cards/fbd81c2e-9c0d-47b2-ba02-6f1dca1d96dc" + "uri": "https://api.scryfall.com/cards/41d728ed-9fdf-4d92-bd97-66e27c139423" }, { "object": "related_card", @@ -9240,11 +9849,11 @@ }, { "object": "related_card", - "id": "a9d80e96-3956-4408-84fb-5f94a364eb41", + "id": "b0e81bcf-d2f1-4ce0-9c1e-730632caa328", "component": "combo_piece", "name": "Goblinslide", "type_line": "Enchantment", - "uri": "https://api.scryfall.com/cards/a9d80e96-3956-4408-84fb-5f94a364eb41" + "uri": "https://api.scryfall.com/cards/b0e81bcf-d2f1-4ce0-9c1e-730632caa328" }, { "object": "related_card", @@ -9256,11 +9865,11 @@ }, { "object": "related_card", - "id": "8d8d27af-e4cf-4e18-825e-8f6c972e64ba", + "id": "36633f10-ea38-421c-ab80-9862eb18d6da", "component": "combo_piece", "name": "Sling-Gang Lieutenant", "type_line": "Creature — Goblin", - "uri": "https://api.scryfall.com/cards/8d8d27af-e4cf-4e18-825e-8f6c972e64ba" + "uri": "https://api.scryfall.com/cards/36633f10-ea38-421c-ab80-9862eb18d6da" }, { "object": "related_card", @@ -9304,11 +9913,11 @@ }, { "object": "related_card", - "id": "623c1d1b-69a4-4bc4-b388-17a7600fd960", + "id": "24025e76-0016-46a6-93cd-366071953c36", "component": "combo_piece", "name": "Swarming Goblins", "type_line": "Creature — Goblin", - "uri": "https://api.scryfall.com/cards/623c1d1b-69a4-4bc4-b388-17a7600fd960" + "uri": "https://api.scryfall.com/cards/24025e76-0016-46a6-93cd-366071953c36" }, { "object": "related_card", @@ -9336,27 +9945,27 @@ }, { "object": "related_card", - "id": "c069ebf8-5616-4cff-81d9-cd20b20102ee", + "id": "98be3783-23e8-4143-8685-6d887f164294", "component": "combo_piece", "name": "Goblin Gang Leader", "type_line": "Creature — Goblin Warrior", - "uri": "https://api.scryfall.com/cards/c069ebf8-5616-4cff-81d9-cd20b20102ee" + "uri": "https://api.scryfall.com/cards/98be3783-23e8-4143-8685-6d887f164294" }, { "object": "related_card", - "id": "fc027246-1dd3-4be0-bea6-3a7476a833ce", + "id": "fd170aa1-18be-470e-aa36-bfb11e9f92c1", "component": "combo_piece", "name": "Mogg War Marshal", "type_line": "Creature — Goblin Warrior", - "uri": "https://api.scryfall.com/cards/fc027246-1dd3-4be0-bea6-3a7476a833ce" + "uri": "https://api.scryfall.com/cards/fd170aa1-18be-470e-aa36-bfb11e9f92c1" }, { "object": "related_card", - "id": "b36a1bc7-a080-4fb6-b975-c59bb33a090a", + "id": "71c818eb-3846-471f-967a-76e1cb809b9f", "component": "combo_piece", "name": "Goblin Instigator", "type_line": "Creature — Goblin Rogue", - "uri": "https://api.scryfall.com/cards/b36a1bc7-a080-4fb6-b975-c59bb33a090a" + "uri": "https://api.scryfall.com/cards/71c818eb-3846-471f-967a-76e1cb809b9f" }, { "object": "related_card", @@ -9398,6 +10007,14 @@ "type_line": "Sorcery", "uri": "https://api.scryfall.com/cards/b07d96a1-87a0-45ff-ae6e-230deaf44dca" }, + { + "object": "related_card", + "id": "e22c2df5-ae00-4d71-ac60-6ea402b9036b", + "component": "combo_piece", + "name": "Siege-Gang Lieutenant", + "type_line": "Creature — Goblin", + "uri": "https://api.scryfall.com/cards/e22c2df5-ae00-4d71-ac60-6ea402b9036b" + }, { "object": "related_card", "id": "a5579dfb-4e63-4e7b-80c5-56949518c71e", @@ -9408,11 +10025,11 @@ }, { "object": "related_card", - "id": "c80c53a3-a2de-4e54-a50a-2eabb2ceb67c", + "id": "5183ca53-dc90-4971-a610-38b4ba85dc83", "component": "combo_piece", "name": "Hordeling Outburst", "type_line": "Sorcery", - "uri": "https://api.scryfall.com/cards/c80c53a3-a2de-4e54-a50a-2eabb2ceb67c" + "uri": "https://api.scryfall.com/cards/5183ca53-dc90-4971-a610-38b4ba85dc83" }, { "object": "related_card", @@ -9456,11 +10073,11 @@ }, { "object": "related_card", - "id": "bfeb1145-3729-481e-a314-c325ed2f2a35", + "id": "ef8b7992-d4d9-4d0f-9eca-5085588a4669", "component": "combo_piece", "name": "Mogg Infestation", "type_line": "Sorcery", - "uri": "https://api.scryfall.com/cards/bfeb1145-3729-481e-a314-c325ed2f2a35" + "uri": "https://api.scryfall.com/cards/ef8b7992-d4d9-4d0f-9eca-5085588a4669" }, { "object": "related_card", @@ -9480,19 +10097,19 @@ }, { "object": "related_card", - "id": "98b913e1-c26d-4a7d-9671-50d483304ba3", + "id": "0befe0f5-ff7c-441a-9bb2-cbe919be10ad", "component": "combo_piece", "name": "Siege-Gang Commander", "type_line": "Creature — Goblin", - "uri": "https://api.scryfall.com/cards/98b913e1-c26d-4a7d-9671-50d483304ba3" + "uri": "https://api.scryfall.com/cards/0befe0f5-ff7c-441a-9bb2-cbe919be10ad" }, { "object": "related_card", - "id": "6d6adaa2-62ac-44f3-9665-8361135ccf6a", + "id": "2a17c97b-1195-4ca7-aa30-fe11585f180c", "component": "combo_piece", "name": "Battle Cry Goblin", "type_line": "Creature — Goblin", - "uri": "https://api.scryfall.com/cards/6d6adaa2-62ac-44f3-9665-8361135ccf6a" + "uri": "https://api.scryfall.com/cards/2a17c97b-1195-4ca7-aa30-fe11585f180c" }, { "object": "related_card", @@ -9640,11 +10257,11 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/d/9/d99cc0a4-4868-47f3-bd1d-f46b7cb74650.jpg?1681768986" }, "prices": { - "usd": "1.62", - "usd_foil": "1.69", + "usd": "1.94", + "usd_foil": "2.22", "usd_etched": null, - "eur": "0.89", - "eur_foil": "1.20", + "eur": "1.13", + "eur_foil": "1.19", "tix": null }, "promo": false, @@ -9691,7 +10308,7 @@ "color_identity": [ "B" ], - "edhrec_rank": 174, + "edhrec_rank": 192, "foil": true, "keywords": [ "Scry" @@ -9724,9 +10341,9 @@ "mana_cost": "{B}", "name": "Viscera Seer", "nonfoil": false, - "oracle_text": "Sacrifice a creature: Scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.)", + "oracle_text": "Sacrifice a creature: Scry 1. (Look at the top card of your library. You may put that card on the bottom.)", "oversized": false, - "penny_rank": 1008, + "penny_rank": 1038, "power": "1", "reserved": false, "toughness": "1", @@ -9829,7 +10446,6 @@ "object": "card_face", "artist": "Matt Cavotta", "artist_id": "2e6a0611-9411-4ba4-98e3-c0e18cbf9f83", - "flavor_name": "", "mana_cost": "", "name": "Erayo's Essence", "oracle_text": "Whenever an opponent casts their first spell each turn, counter that spell.", @@ -9876,7 +10492,7 @@ "name": "Erayo, Soratami Ascendant // Erayo's Essence", "nonfoil": true, "oversized": false, - "penny_rank": 2955, + "penny_rank": 3039, "power": "1", "reserved": false, "toughness": "1", @@ -9912,11 +10528,11 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/0/b/0b61d772-2d8b-4acf-9dd2-b2e8b03538c8.jpg?1610664131" }, "prices": { - "usd": "4.56", - "usd_foil": "4.46", + "usd": "4.27", + "usd_foil": "11.43", "usd_etched": null, - "eur": "3.03", - "eur_foil": "14.17", + "eur": "3.04", + "eur_foil": "14.00", "tix": "0.02" }, "promo": false, @@ -9976,9 +10592,9 @@ "pioneer": "not_legal", "explorer": "not_legal", "modern": "not_legal", - "legacy": "legal", - "pauper": "legal", - "vintage": "legal", + "legacy": "not_legal", + "pauper": "not_legal", + "vintage": "not_legal", "penny": "not_legal", "commander": "legal", "oathbreaker": "legal", @@ -9986,7 +10602,7 @@ "brawl": "not_legal", "alchemy": "not_legal", "paupercommander": "legal", - "duel": "legal", + "duel": "banned", "oldschool": "not_legal", "premodern": "not_legal", "predh": "not_legal" @@ -10031,10 +10647,10 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/2/0/20a67ee2-0137-458d-b381-430a2494357f.jpg?1675457009" }, "prices": { - "usd": "0.19", + "usd": "0.23", "usd_foil": null, "usd_etched": null, - "eur": "0.13", + "eur": "0.18", "eur_foil": null, "tix": null }, @@ -10089,7 +10705,7 @@ "G", "R" ], - "edhrec_rank": 3980, + "edhrec_rank": 4189, "foil": true, "keywords": [ "Indestructible" @@ -10122,7 +10738,7 @@ "mana_cost": "{1}{R}{G}", "name": "Klothys, God of Destiny", "nonfoil": true, - "oracle_text": "Indestructible\nAs long as your devotion to red and green is less than seven, Klothys isn't a creature.\nAt the beginning of your precombat main phase, exile target card from a graveyard. If it was a land card, add {R} or {G}. Otherwise, you gain 2 life and Klothys deals 2 damage to each opponent.", + "oracle_text": "Indestructible\nAs long as your devotion to red and green is less than seven, Klothys isn't a creature.\nAt the beginning of your first main phase, exile target card from a graveyard. If it was a land card, add {R} or {G}. Otherwise, you gain 2 life and Klothys deals 2 damage to each opponent.", "oversized": false, "power": "4", "produced_mana": [ @@ -10168,12 +10784,12 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/5/b/5b3c393c-3596-4bd9-a553-e0b03c2eb950.jpg?1581481087" }, "prices": { - "usd": "4.43", - "usd_foil": "3.54", + "usd": "3.26", + "usd_foil": "3.73", "usd_etched": null, - "eur": "4.95", - "eur_foil": "6.69", - "tix": "0.72" + "eur": "4.65", + "eur_foil": "6.10", + "tix": "0.30" }, "promo": false, "purchase_uris": { @@ -10229,7 +10845,7 @@ "G", "R" ], - "edhrec_rank": 3980, + "edhrec_rank": 4189, "foil": true, "keywords": [ "Indestructible" @@ -10262,7 +10878,7 @@ "mana_cost": "{1}{R}{G}", "name": "Klothys, God of Destiny", "nonfoil": true, - "oracle_text": "Indestructible\nAs long as your devotion to red and green is less than seven, Klothys isn't a creature.\nAt the beginning of your precombat main phase, exile target card from a graveyard. If it was a land card, add {R} or {G}. Otherwise, you gain 2 life and Klothys deals 2 damage to each opponent.", + "oracle_text": "Indestructible\nAs long as your devotion to red and green is less than seven, Klothys isn't a creature.\nAt the beginning of your first main phase, exile target card from a graveyard. If it was a land card, add {R} or {G}. Otherwise, you gain 2 life and Klothys deals 2 damage to each opponent.", "oversized": false, "power": "4", "produced_mana": [ @@ -10310,11 +10926,11 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/4/d/4d747889-04db-4e7a-ad4c-7549514b5112.jpg?1682720711" }, "prices": { - "usd": "4.04", - "usd_foil": "4.80", + "usd": "3.71", + "usd_foil": "4.82", "usd_etched": null, - "eur": "4.79", - "eur_foil": "5.93", + "eur": "4.22", + "eur_foil": "5.32", "tix": null }, "promo": false, @@ -10374,7 +10990,7 @@ "color_identity": [ "G" ], - "edhrec_rank": 775, + "edhrec_rank": 800, "foil": true, "keywords": [ "Trample" @@ -10449,11 +11065,11 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/a/3/a391da36-0b40-46ea-b771-50d2b920207e.jpg?1581480808" }, "prices": { - "usd": "26.47", - "usd_foil": "26.83", + "usd": "29.44", + "usd_foil": "27.12", "usd_etched": null, - "eur": "15.12", - "eur_foil": "16.59", + "eur": "15.52", + "eur_foil": "15.93", "tix": "0.02" }, "promo": false, @@ -10507,7 +11123,7 @@ "color_identity": [ "G" ], - "edhrec_rank": 775, + "edhrec_rank": 800, "foil": true, "keywords": [ "Trample" @@ -10582,11 +11198,11 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/c/8/c8a8e37b-0b97-4355-8e00-169a82c38ea0.jpg?1634466744" }, "prices": { - "usd": "35.21", - "usd_foil": "55.76", + "usd": "34.14", + "usd_foil": "59.12", "usd_etched": null, - "eur": "20.28", - "eur_foil": "41.12", + "eur": "23.22", + "eur_foil": "40.70", "tix": null }, "promo": false, @@ -10640,7 +11256,7 @@ "G", "W" ], - "edhrec_rank": 494, + "edhrec_rank": 477, "foil": true, "keywords": [ "Scry" @@ -10673,9 +11289,9 @@ "mana_cost": "", "name": "Temple of Plenty", "nonfoil": true, - "oracle_text": "Temple of Plenty enters the battlefield tapped.\nWhen Temple of Plenty enters the battlefield, scry 1.\n{T}: Add {G} or {W}.", + "oracle_text": "Temple of Plenty enters tapped.\nWhen Temple of Plenty enters, scry 1.\n{T}: Add {G} or {W}.", "oversized": false, - "penny_rank": 1160, + "penny_rank": 1130, "produced_mana": [ "G", "W" @@ -10714,12 +11330,12 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/6/e/6e6256ea-ccb5-4595-8278-44266f922e31.jpg?1581481279" }, "prices": { - "usd": "0.17", - "usd_foil": "0.35", + "usd": "0.16", + "usd_foil": "0.23", "usd_etched": null, - "eur": "0.33", - "eur_foil": "0.69", - "tix": "0.03" + "eur": "0.31", + "eur_foil": "0.68", + "tix": "0.02" }, "promo": false, "purchase_uris": { @@ -10771,7 +11387,7 @@ "G", "W" ], - "edhrec_rank": 494, + "edhrec_rank": 477, "foil": true, "keywords": [ "Scry" @@ -10804,9 +11420,9 @@ "mana_cost": "", "name": "Temple of Plenty", "nonfoil": true, - "oracle_text": "Temple of Plenty enters the battlefield tapped.\nWhen Temple of Plenty enters the battlefield, scry 1.\n{T}: Add {G} or {W}.", + "oracle_text": "Temple of Plenty enters tapped.\nWhen Temple of Plenty enters, scry 1.\n{T}: Add {G} or {W}.", "oversized": false, - "penny_rank": 1160, + "penny_rank": 1130, "produced_mana": [ "G", "W" @@ -10848,11 +11464,11 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/6/1/61dc9a80-850c-4945-b84a-85381cc3ee85.jpg?1580351273" }, "prices": { - "usd": "1.64", - "usd_foil": "7.65", + "usd": "1.21", + "usd_foil": "6.57", "usd_etched": null, - "eur": "1.47", - "eur_foil": "5.76", + "eur": "1.82", + "eur_foil": "5.05", "tix": null }, "promo": false, @@ -10930,7 +11546,7 @@ "color_identity": [ "G" ], - "edhrec_rank": 3549, + "edhrec_rank": 3643, "foil": true, "keywords": [ "Enchant" @@ -10948,7 +11564,7 @@ "legacy": "legal", "pauper": "not_legal", "vintage": "legal", - "penny": "not_legal", + "penny": "legal", "commander": "legal", "oathbreaker": "legal", "standardbrawl": "not_legal", @@ -10965,7 +11581,7 @@ "nonfoil": true, "oracle_text": "Enchant land\nWhenever enchanted land is tapped for mana, its controller adds an additional {G}.\n{4}{G}, Sacrifice Wolfwillow Haven: Create a 2/2 green Wolf creature token. Activate only during your turn.", "oversized": false, - "penny_rank": 2458, + "penny_rank": 2531, "produced_mana": [ "G" ], @@ -11003,10 +11619,10 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/7/2/72b886c3-234c-49ce-9a11-456c1e8f092f.jpg?1581480945" }, "prices": { - "usd": "0.29", - "usd_foil": "0.33", + "usd": "0.19", + "usd_foil": "0.48", "usd_etched": null, - "eur": "0.23", + "eur": "0.22", "eur_foil": "0.47", "tix": "0.03" }, @@ -11078,7 +11694,7 @@ "color_identity": [ "G" ], - "edhrec_rank": 3549, + "edhrec_rank": 3643, "foil": true, "keywords": [ "Enchant" @@ -11096,7 +11712,7 @@ "legacy": "legal", "pauper": "not_legal", "vintage": "legal", - "penny": "not_legal", + "penny": "legal", "commander": "legal", "oathbreaker": "legal", "standardbrawl": "not_legal", @@ -11113,7 +11729,7 @@ "nonfoil": true, "oracle_text": "Enchant land\nWhenever enchanted land is tapped for mana, its controller adds an additional {G}.\n{4}{G}, Sacrifice Wolfwillow Haven: Create a 2/2 green Wolf creature token. Activate only during your turn.", "oversized": false, - "penny_rank": 2458, + "penny_rank": 2531, "produced_mana": [ "G" ], @@ -11154,11 +11770,11 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/c/f/cfc4be7b-a948-464d-8327-575ccb7dccf3.jpg?1586187338" }, "prices": { - "usd": "1.46", - "usd_foil": "5.01", + "usd": "1.49", + "usd_foil": "3.54", "usd_etched": null, - "eur": "0.31", - "eur_foil": "0.66", + "eur": "0.27", + "eur_foil": "0.87", "tix": null }, "promo": true, @@ -11320,10 +11936,10 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/8/9/8987644d-5a31-4a4e-9a8a-3d6260ed0fd6.jpg?1562488870" }, "prices": { - "usd": "1.44", - "usd_foil": "45.14", + "usd": "1.92", + "usd_foil": null, "usd_etched": null, - "eur": "1.15", + "eur": "0.73", "eur_foil": "47.80", "tix": null }, @@ -11490,10 +12106,10 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/9/a/9a650610-20e2-4f16-b59c-2ea7779f6e47.jpg?1562927634" }, "prices": { - "usd": "1.31", + "usd": "1.29", "usd_foil": null, "usd_etched": null, - "eur": "1.89", + "eur": "1.38", "eur_foil": "18.21", "tix": null }, @@ -11659,10 +12275,10 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/2/a/2a90b2b6-d96e-4c13-83be-849d2ec1d845.jpg?1562904026" }, "prices": { - "usd": "1.45", - "usd_foil": "7.23", + "usd": "1.80", + "usd_foil": "7.54", "usd_etched": null, - "eur": "2.15", + "eur": "2.22", "eur_foil": "10.56", "tix": null }, @@ -11836,10 +12452,10 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/2/d/2dfc9416-06d6-40af-8b3d-62371b3da7c5.jpg?1562904665" }, "prices": { - "usd": "1.73", - "usd_foil": "8.47", + "usd": "1.83", + "usd_foil": "9.23", "usd_etched": null, - "eur": "2.20", + "eur": "2.26", "eur_foil": "10.92", "tix": null }, @@ -12005,10 +12621,10 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/1/2/12272ce6-ab1f-4576-9e50-21d324263c44.jpg?1562898766" }, "prices": { - "usd": "2.80", - "usd_foil": "8.00", + "usd": "3.43", + "usd_foil": null, "usd_etched": null, - "eur": "1.17", + "eur": "1.90", "eur_foil": "12.81", "tix": null }, @@ -12176,10 +12792,10 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/d/8/d8e84dd2-01f9-4fad-8a24-cc86424d09a2.jpg?1562940811" }, "prices": { - "usd": "3.09", + "usd": "3.51", "usd_foil": null, "usd_etched": null, - "eur": "2.14", + "eur": "2.04", "eur_foil": "8.26", "tix": null }, @@ -12355,11 +12971,11 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/d/4/d41e6c51-d96a-436f-94c5-5d1e19c5e0d5.jpg?1562939866" }, "prices": { - "usd": "1.35", + "usd": "1.34", "usd_foil": "5.17", "usd_etched": null, - "eur": "1.68", - "eur_foil": "7.10", + "eur": "2.10", + "eur_foil": "6.30", "tix": null }, "promo": false, @@ -12410,7 +13026,7 @@ "color_identity": [ "U" ], - "edhrec_rank": 16985, + "edhrec_rank": 17703, "foil": true, "keywords": [], "layout": "normal", @@ -12441,9 +13057,9 @@ "mana_cost": "{3}{U}", "name": "Academy Elite", "nonfoil": true, - "oracle_text": "Academy Elite enters the battlefield with X +1/+1 counters on it, where X is the number of instant and sorcery cards in all graveyards.\n{2}{U}, Remove a +1/+1 counter from Academy Elite: Draw a card, then discard a card.", + "oracle_text": "Academy Elite enters with X +1/+1 counters on it, where X is the number of instant and sorcery cards in all graveyards.\n{2}{U}, Remove a +1/+1 counter from Academy Elite: Draw a card, then discard a card.", "oversized": false, - "penny_rank": 5859, + "penny_rank": 6089, "power": "0", "reserved": false, "toughness": "0", @@ -12553,7 +13169,7 @@ "color_identity": [ "W" ], - "edhrec_rank": 9570, + "edhrec_rank": 10036, "foil": false, "keywords": [ "Flying", @@ -12589,7 +13205,7 @@ "nonfoil": true, "oracle_text": "Flying, vigilance", "oversized": false, - "penny_rank": 10231, + "penny_rank": 10460, "power": "4", "reserved": false, "toughness": "4", @@ -12625,10 +13241,10 @@ "border_crop": "https://cards.scryfall.io/border_crop/front/8/7/8752c1db-b924-4dda-8b71-4c254d0ef2de.jpg?1562923563" }, "prices": { - "usd": "0.14", + "usd": "0.07", "usd_foil": null, "usd_etched": null, - "eur": "0.09", + "eur": "0.11", "eur_foil": null, "tix": "0.06" }, diff --git a/tests/data/sets.json b/tests/data/sets.json index 6834ee3..0424aa0 100644 --- a/tests/data/sets.json +++ b/tests/data/sets.json @@ -13,7 +13,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/arc.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/arc.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aarc&unique=prints", "scryfall_uri": "https://scryfall.com/sets/arc", "uri": "https://api.scryfall.com/sets/8bc5ec64-18d5-4c81-96a1-8f619d81a019" @@ -35,7 +35,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/bok.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/bok.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Abok&unique=prints", "scryfall_uri": "https://scryfall.com/sets/bok", "uri": "https://api.scryfall.com/sets/d4b88587-a1f5-4b47-9e24-78ec9e57bd0e" @@ -57,7 +57,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/chk.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/chk.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Achk&unique=prints", "scryfall_uri": "https://scryfall.com/sets/chk", "uri": "https://api.scryfall.com/sets/6183d21f-a0af-4118-ba58-aca1d8719c01" @@ -79,7 +79,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/csp.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/csp.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Acsp&unique=prints", "scryfall_uri": "https://scryfall.com/sets/csp", "uri": "https://api.scryfall.com/sets/1f4f105f-73e4-4f03-849e-82a204807847" @@ -96,7 +96,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/fem.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/fem.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Afem&unique=prints", "scryfall_uri": "https://scryfall.com/sets/fem", "uri": "https://api.scryfall.com/sets/cf7390b1-341a-4ae8-a325-da0f5f322f13" @@ -113,7 +113,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/hml.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/hml.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Ahml&unique=prints", "scryfall_uri": "https://scryfall.com/sets/hml", "uri": "https://api.scryfall.com/sets/5ac1f606-e682-46e9-ad0f-122a3783581b" @@ -132,7 +132,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/hop.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/hop.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Ahop&unique=prints", "scryfall_uri": "https://scryfall.com/sets/hop", "uri": "https://api.scryfall.com/sets/7137ffeb-eb1d-466c-a0d3-3157f52b1b10" @@ -151,7 +151,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/ice.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/ice.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aice&unique=prints", "scryfall_uri": "https://scryfall.com/sets/ice", "uri": "https://api.scryfall.com/sets/b0e08eea-5c01-4406-a6e2-dcd09c5e5b67" @@ -173,7 +173,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/isd.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/isd.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aisd&unique=prints", "scryfall_uri": "https://scryfall.com/sets/isd", "uri": "https://api.scryfall.com/sets/d1026945-2969-42b9-be53-f941405a58cb" @@ -192,7 +192,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/khm.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/khm.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Akhm&unique=prints", "scryfall_uri": "https://scryfall.com/sets/khm", "uri": "https://api.scryfall.com/sets/43057fad-b1c1-437f-bc48-0045bce6d8c9" @@ -211,7 +211,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/lea.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/lea.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Alea&unique=prints", "scryfall_uri": "https://scryfall.com/sets/lea", "uri": "https://api.scryfall.com/sets/288bd996-960e-448b-a187-9504c1930c2c" @@ -233,7 +233,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/mbs.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/mbs.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Ambs&unique=prints", "scryfall_uri": "https://scryfall.com/sets/mbs", "uri": "https://api.scryfall.com/sets/f46c57e3-9301-4006-a6ca-06f3f65961fb" @@ -253,7 +253,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/mma.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/mma.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Amma&unique=prints", "scryfall_uri": "https://scryfall.com/sets/mma", "uri": "https://api.scryfall.com/sets/0b7020f2-336d-4706-9ce6-f6710b9ebd5c" @@ -273,7 +273,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/neo.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/neo.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aneo&unique=prints", "scryfall_uri": "https://scryfall.com/sets/neo", "uri": "https://api.scryfall.com/sets/59a2059f-5482-433f-8761-eb2e17859b71" @@ -290,7 +290,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/arc.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/arc.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aoarc&unique=prints", "scryfall_uri": "https://scryfall.com/sets/oarc", "uri": "https://api.scryfall.com/sets/238beedf-1d4d-475f-a980-527ba2f55dc6" @@ -312,7 +312,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/ogw.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/ogw.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aogw&unique=prints", "scryfall_uri": "https://scryfall.com/sets/ogw", "uri": "https://api.scryfall.com/sets/cd51d245-8f95-45b0-ab5f-e2b3a3eb5dfe" @@ -331,7 +331,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/hop.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/hop.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aohop&unique=prints", "scryfall_uri": "https://scryfall.com/sets/ohop", "uri": "https://api.scryfall.com/sets/7a8b75a9-7c92-4c3f-976a-322e1eb3b6b6" @@ -350,7 +350,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/pc2.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/pc2.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aopc2&unique=prints", "scryfall_uri": "https://scryfall.com/sets/opc2", "uri": "https://api.scryfall.com/sets/7079031b-c5b0-4353-87af-a63a0f204f47" @@ -368,7 +368,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/dci.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/dci.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Ap03&unique=prints", "scryfall_uri": "https://scryfall.com/sets/p03", "uri": "https://api.scryfall.com/sets/dfa906ff-63d8-4065-abef-809988337288" @@ -387,7 +387,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/pc2.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/pc2.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Apc2&unique=prints", "scryfall_uri": "https://scryfall.com/sets/pc2", "uri": "https://api.scryfall.com/sets/9fb2f83e-7015-4aa9-808f-310ccf0fdb9c" @@ -403,7 +403,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/dci.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/dci.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Apdci&unique=prints", "scryfall_uri": "https://scryfall.com/sets/pdci", "uri": "https://api.scryfall.com/sets/935e91e9-61c2-4b35-a85a-c08fef3b420b" @@ -422,7 +422,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/frf.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/frf.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Apfrf&unique=prints", "scryfall_uri": "https://scryfall.com/sets/pfrf", "uri": "https://api.scryfall.com/sets/aa9f80e3-8d60-46b7-b91e-eb1736fde866" @@ -439,7 +439,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/dci.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/dci.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aphop&unique=prints", "scryfall_uri": "https://scryfall.com/sets/phop", "uri": "https://api.scryfall.com/sets/ef3f6784-a6e8-41ff-8bed-72e0c7121298" @@ -455,7 +455,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/pbook.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/pbook.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aphpr&unique=prints", "scryfall_uri": "https://scryfall.com/sets/phpr", "uri": "https://api.scryfall.com/sets/b32cc4a1-1e06-4bec-bab6-89b2691b57a4" @@ -477,7 +477,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/plc.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/plc.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aplc&unique=prints", "scryfall_uri": "https://scryfall.com/sets/plc", "uri": "https://api.scryfall.com/sets/5a1b571c-73e9-4c14-b9d4-a62507d85789" @@ -499,11 +499,28 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/pls.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/pls.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Apls&unique=prints", "scryfall_uri": "https://scryfall.com/sets/pls", "uri": "https://api.scryfall.com/sets/82dc193b-bd5f-4883-a93f-a4155b467ee0" }, + { + "object": "set", + "id": "67e47ba2-b019-4181-9005-fe9fc021de44", + "code": "plst", + "tcgplayer_id": 2715, + "name": "The List", + "set_type": "masters", + "released_at": "2020-09-26", + "card_count": 5, + "digital": false, + "foil_only": false, + "nonfoil_only": false, + "icon_svg_uri": "https://svgs.scryfall.io/sets/planeswalker.svg?1724644800", + "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aplst&unique=prints", + "scryfall_uri": "https://scryfall.com/sets/plst", + "uri": "https://api.scryfall.com/sets/67e47ba2-b019-4181-9005-fe9fc021de44" + }, { "object": "set", "id": "8a59d98a-4e13-4943-b06c-b35868e954ba", @@ -518,7 +535,7 @@ "digital": false, "foil_only": true, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/mbs.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/mbs.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Apmbs&unique=prints", "scryfall_uri": "https://scryfall.com/sets/pmbs", "uri": "https://api.scryfall.com/sets/8a59d98a-4e13-4943-b06c-b35868e954ba" @@ -535,7 +552,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/neo.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/neo.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Apneo&unique=prints", "scryfall_uri": "https://scryfall.com/sets/pneo", "uri": "https://api.scryfall.com/sets/b3161020-d74f-48cc-bc9d-d7233e64e524" @@ -554,7 +571,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/rna.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/rna.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aprna&unique=prints", "scryfall_uri": "https://scryfall.com/sets/prna", "uri": "https://api.scryfall.com/sets/503230ec-81e3-4f92-b847-ff435b1652e0" @@ -573,7 +590,7 @@ "digital": false, "foil_only": true, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/rna.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/rna.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aprw2&unique=prints", "scryfall_uri": "https://scryfall.com/sets/prw2", "uri": "https://api.scryfall.com/sets/ee3a8eb6-0583-492b-8be5-265795d38038" @@ -590,7 +607,7 @@ "digital": false, "foil_only": true, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/ptg.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/ptg.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aptg&unique=prints", "scryfall_uri": "https://scryfall.com/sets/ptg", "uri": "https://api.scryfall.com/sets/d264b61b-bfb3-4388-be42-e34a1eaa00c2" @@ -607,7 +624,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/ren.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/ren.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aren&unique=prints", "scryfall_uri": "https://scryfall.com/sets/ren", "uri": "https://api.scryfall.com/sets/bec33d25-cf6f-460f-918d-29b3009686bb" @@ -629,7 +646,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/rna.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/rna.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Arna&unique=prints", "scryfall_uri": "https://scryfall.com/sets/rna", "uri": "https://api.scryfall.com/sets/97a7fd84-8d89-45a3-b48b-c951f6a3f9f1" @@ -646,7 +663,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/s00.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/s00.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3As00&unique=prints", "scryfall_uri": "https://scryfall.com/sets/s00", "uri": "https://api.scryfall.com/sets/1c105623-2564-40d7-a3aa-4134787fb127" @@ -663,7 +680,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/star.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/star.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Asld&unique=prints", "scryfall_uri": "https://scryfall.com/sets/sld", "uri": "https://api.scryfall.com/sets/4d92a8a7-ccb0-437d-abdc-9d70fc5ed672" @@ -685,7 +702,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/sok.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/sok.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Asok&unique=prints", "scryfall_uri": "https://scryfall.com/sets/sok", "uri": "https://api.scryfall.com/sets/4db16ad3-2b95-442f-bb6b-e9aa7fe7f769" @@ -702,7 +719,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/unf.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/unf.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Asunf&unique=prints", "scryfall_uri": "https://scryfall.com/sets/sunf", "uri": "https://api.scryfall.com/sets/565e3302-2fed-487e-a0f7-7f8037d25030" @@ -721,7 +738,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/thb.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/thb.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Athb&unique=prints", "scryfall_uri": "https://scryfall.com/sets/thb", "uri": "https://api.scryfall.com/sets/5f23a78d-cda1-462a-8be3-a62b40c34913" @@ -739,7 +756,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/unh.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/unh.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aunh&unique=prints", "scryfall_uri": "https://scryfall.com/sets/unh", "uri": "https://api.scryfall.com/sets/4c8bc76a-05a5-43db-aaf0-34deb347b871" @@ -757,7 +774,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/ust.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/ust.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aust&unique=prints", "scryfall_uri": "https://scryfall.com/sets/ust", "uri": "https://api.scryfall.com/sets/83491685-880d-41dd-a4af-47d2b3b17c10" @@ -776,7 +793,7 @@ "digital": true, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/vma.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/vma.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Avma&unique=prints", "scryfall_uri": "https://scryfall.com/sets/vma", "uri": "https://api.scryfall.com/sets/a944551a-73fa-41cd-9159-e8d0e4674403" @@ -795,7 +812,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/w16.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/w16.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aw16&unique=prints", "scryfall_uri": "https://scryfall.com/sets/w16", "uri": "https://api.scryfall.com/sets/b3a0e4a1-5f2c-44e1-8558-61e6dcd88fda" diff --git a/tests/data/sets1.json b/tests/data/sets1.json index e63f516..3f45405 100644 --- a/tests/data/sets1.json +++ b/tests/data/sets1.json @@ -13,7 +13,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/arc.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/arc.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aarc&unique=prints", "scryfall_uri": "https://scryfall.com/sets/arc", "uri": "https://api.scryfall.com/sets/8bc5ec64-18d5-4c81-96a1-8f619d81a019" @@ -35,7 +35,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/bok.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/bok.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Abok&unique=prints", "scryfall_uri": "https://scryfall.com/sets/bok", "uri": "https://api.scryfall.com/sets/d4b88587-a1f5-4b47-9e24-78ec9e57bd0e" @@ -57,7 +57,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/chk.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/chk.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Achk&unique=prints", "scryfall_uri": "https://scryfall.com/sets/chk", "uri": "https://api.scryfall.com/sets/6183d21f-a0af-4118-ba58-aca1d8719c01" @@ -79,7 +79,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/csp.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/csp.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Acsp&unique=prints", "scryfall_uri": "https://scryfall.com/sets/csp", "uri": "https://api.scryfall.com/sets/1f4f105f-73e4-4f03-849e-82a204807847" @@ -96,7 +96,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/fem.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/fem.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Afem&unique=prints", "scryfall_uri": "https://scryfall.com/sets/fem", "uri": "https://api.scryfall.com/sets/cf7390b1-341a-4ae8-a325-da0f5f322f13" @@ -113,7 +113,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/hml.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/hml.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Ahml&unique=prints", "scryfall_uri": "https://scryfall.com/sets/hml", "uri": "https://api.scryfall.com/sets/5ac1f606-e682-46e9-ad0f-122a3783581b" @@ -132,7 +132,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/hop.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/hop.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Ahop&unique=prints", "scryfall_uri": "https://scryfall.com/sets/hop", "uri": "https://api.scryfall.com/sets/7137ffeb-eb1d-466c-a0d3-3157f52b1b10" @@ -151,7 +151,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/ice.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/ice.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aice&unique=prints", "scryfall_uri": "https://scryfall.com/sets/ice", "uri": "https://api.scryfall.com/sets/b0e08eea-5c01-4406-a6e2-dcd09c5e5b67" @@ -173,7 +173,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/isd.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/isd.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aisd&unique=prints", "scryfall_uri": "https://scryfall.com/sets/isd", "uri": "https://api.scryfall.com/sets/d1026945-2969-42b9-be53-f941405a58cb" @@ -192,7 +192,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/khm.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/khm.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Akhm&unique=prints", "scryfall_uri": "https://scryfall.com/sets/khm", "uri": "https://api.scryfall.com/sets/43057fad-b1c1-437f-bc48-0045bce6d8c9" @@ -211,7 +211,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/lea.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/lea.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Alea&unique=prints", "scryfall_uri": "https://scryfall.com/sets/lea", "uri": "https://api.scryfall.com/sets/288bd996-960e-448b-a187-9504c1930c2c" @@ -233,7 +233,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/mbs.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/mbs.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Ambs&unique=prints", "scryfall_uri": "https://scryfall.com/sets/mbs", "uri": "https://api.scryfall.com/sets/f46c57e3-9301-4006-a6ca-06f3f65961fb" @@ -253,7 +253,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/mma.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/mma.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Amma&unique=prints", "scryfall_uri": "https://scryfall.com/sets/mma", "uri": "https://api.scryfall.com/sets/0b7020f2-336d-4706-9ce6-f6710b9ebd5c" @@ -273,7 +273,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/neo.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/neo.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aneo&unique=prints", "scryfall_uri": "https://scryfall.com/sets/neo", "uri": "https://api.scryfall.com/sets/59a2059f-5482-433f-8761-eb2e17859b71" @@ -290,7 +290,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/arc.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/arc.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aoarc&unique=prints", "scryfall_uri": "https://scryfall.com/sets/oarc", "uri": "https://api.scryfall.com/sets/238beedf-1d4d-475f-a980-527ba2f55dc6" @@ -312,7 +312,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/ogw.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/ogw.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aogw&unique=prints", "scryfall_uri": "https://scryfall.com/sets/ogw", "uri": "https://api.scryfall.com/sets/cd51d245-8f95-45b0-ab5f-e2b3a3eb5dfe" @@ -331,7 +331,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/hop.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/hop.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aohop&unique=prints", "scryfall_uri": "https://scryfall.com/sets/ohop", "uri": "https://api.scryfall.com/sets/7a8b75a9-7c92-4c3f-976a-322e1eb3b6b6" @@ -350,7 +350,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/pc2.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/pc2.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aopc2&unique=prints", "scryfall_uri": "https://scryfall.com/sets/opc2", "uri": "https://api.scryfall.com/sets/7079031b-c5b0-4353-87af-a63a0f204f47" @@ -368,7 +368,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/dci.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/dci.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Ap03&unique=prints", "scryfall_uri": "https://scryfall.com/sets/p03", "uri": "https://api.scryfall.com/sets/dfa906ff-63d8-4065-abef-809988337288" @@ -387,7 +387,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/pc2.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/pc2.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Apc2&unique=prints", "scryfall_uri": "https://scryfall.com/sets/pc2", "uri": "https://api.scryfall.com/sets/9fb2f83e-7015-4aa9-808f-310ccf0fdb9c" @@ -403,7 +403,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/dci.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/dci.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Apdci&unique=prints", "scryfall_uri": "https://scryfall.com/sets/pdci", "uri": "https://api.scryfall.com/sets/935e91e9-61c2-4b35-a85a-c08fef3b420b" diff --git a/tests/data/sets2.json b/tests/data/sets2.json index 39d6ae3..d741bd4 100644 --- a/tests/data/sets2.json +++ b/tests/data/sets2.json @@ -15,7 +15,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/frf.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/frf.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Apfrf&unique=prints", "scryfall_uri": "https://scryfall.com/sets/pfrf", "uri": "https://api.scryfall.com/sets/aa9f80e3-8d60-46b7-b91e-eb1736fde866" @@ -32,7 +32,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/dci.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/dci.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aphop&unique=prints", "scryfall_uri": "https://scryfall.com/sets/phop", "uri": "https://api.scryfall.com/sets/ef3f6784-a6e8-41ff-8bed-72e0c7121298" @@ -48,7 +48,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/pbook.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/pbook.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aphpr&unique=prints", "scryfall_uri": "https://scryfall.com/sets/phpr", "uri": "https://api.scryfall.com/sets/b32cc4a1-1e06-4bec-bab6-89b2691b57a4" @@ -70,7 +70,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/plc.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/plc.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aplc&unique=prints", "scryfall_uri": "https://scryfall.com/sets/plc", "uri": "https://api.scryfall.com/sets/5a1b571c-73e9-4c14-b9d4-a62507d85789" @@ -92,11 +92,28 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/pls.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/pls.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Apls&unique=prints", "scryfall_uri": "https://scryfall.com/sets/pls", "uri": "https://api.scryfall.com/sets/82dc193b-bd5f-4883-a93f-a4155b467ee0" }, + { + "object": "set", + "id": "67e47ba2-b019-4181-9005-fe9fc021de44", + "code": "plst", + "tcgplayer_id": 2715, + "name": "The List", + "set_type": "masters", + "released_at": "2020-09-26", + "card_count": 5, + "digital": false, + "foil_only": false, + "nonfoil_only": false, + "icon_svg_uri": "https://svgs.scryfall.io/sets/planeswalker.svg?1724644800", + "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aplst&unique=prints", + "scryfall_uri": "https://scryfall.com/sets/plst", + "uri": "https://api.scryfall.com/sets/67e47ba2-b019-4181-9005-fe9fc021de44" + }, { "object": "set", "id": "8a59d98a-4e13-4943-b06c-b35868e954ba", @@ -111,7 +128,7 @@ "digital": false, "foil_only": true, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/mbs.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/mbs.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Apmbs&unique=prints", "scryfall_uri": "https://scryfall.com/sets/pmbs", "uri": "https://api.scryfall.com/sets/8a59d98a-4e13-4943-b06c-b35868e954ba" @@ -128,7 +145,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/neo.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/neo.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Apneo&unique=prints", "scryfall_uri": "https://scryfall.com/sets/pneo", "uri": "https://api.scryfall.com/sets/b3161020-d74f-48cc-bc9d-d7233e64e524" @@ -147,7 +164,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/rna.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/rna.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aprna&unique=prints", "scryfall_uri": "https://scryfall.com/sets/prna", "uri": "https://api.scryfall.com/sets/503230ec-81e3-4f92-b847-ff435b1652e0" @@ -166,7 +183,7 @@ "digital": false, "foil_only": true, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/rna.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/rna.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aprw2&unique=prints", "scryfall_uri": "https://scryfall.com/sets/prw2", "uri": "https://api.scryfall.com/sets/ee3a8eb6-0583-492b-8be5-265795d38038" @@ -183,7 +200,7 @@ "digital": false, "foil_only": true, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/ptg.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/ptg.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aptg&unique=prints", "scryfall_uri": "https://scryfall.com/sets/ptg", "uri": "https://api.scryfall.com/sets/d264b61b-bfb3-4388-be42-e34a1eaa00c2" @@ -200,7 +217,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/ren.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/ren.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aren&unique=prints", "scryfall_uri": "https://scryfall.com/sets/ren", "uri": "https://api.scryfall.com/sets/bec33d25-cf6f-460f-918d-29b3009686bb" @@ -222,7 +239,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/rna.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/rna.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Arna&unique=prints", "scryfall_uri": "https://scryfall.com/sets/rna", "uri": "https://api.scryfall.com/sets/97a7fd84-8d89-45a3-b48b-c951f6a3f9f1" @@ -239,7 +256,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/s00.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/s00.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3As00&unique=prints", "scryfall_uri": "https://scryfall.com/sets/s00", "uri": "https://api.scryfall.com/sets/1c105623-2564-40d7-a3aa-4134787fb127" @@ -256,7 +273,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/star.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/star.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Asld&unique=prints", "scryfall_uri": "https://scryfall.com/sets/sld", "uri": "https://api.scryfall.com/sets/4d92a8a7-ccb0-437d-abdc-9d70fc5ed672" @@ -278,7 +295,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/sok.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/sok.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Asok&unique=prints", "scryfall_uri": "https://scryfall.com/sets/sok", "uri": "https://api.scryfall.com/sets/4db16ad3-2b95-442f-bb6b-e9aa7fe7f769" @@ -295,7 +312,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/unf.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/unf.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Asunf&unique=prints", "scryfall_uri": "https://scryfall.com/sets/sunf", "uri": "https://api.scryfall.com/sets/565e3302-2fed-487e-a0f7-7f8037d25030" @@ -314,7 +331,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/thb.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/thb.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Athb&unique=prints", "scryfall_uri": "https://scryfall.com/sets/thb", "uri": "https://api.scryfall.com/sets/5f23a78d-cda1-462a-8be3-a62b40c34913" @@ -332,7 +349,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/unh.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/unh.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aunh&unique=prints", "scryfall_uri": "https://scryfall.com/sets/unh", "uri": "https://api.scryfall.com/sets/4c8bc76a-05a5-43db-aaf0-34deb347b871" @@ -350,7 +367,7 @@ "digital": false, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/ust.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/ust.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aust&unique=prints", "scryfall_uri": "https://scryfall.com/sets/ust", "uri": "https://api.scryfall.com/sets/83491685-880d-41dd-a4af-47d2b3b17c10" @@ -369,7 +386,7 @@ "digital": true, "foil_only": false, "nonfoil_only": false, - "icon_svg_uri": "https://svgs.scryfall.io/sets/vma.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/vma.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Avma&unique=prints", "scryfall_uri": "https://scryfall.com/sets/vma", "uri": "https://api.scryfall.com/sets/a944551a-73fa-41cd-9159-e8d0e4674403" @@ -388,7 +405,7 @@ "digital": false, "foil_only": false, "nonfoil_only": true, - "icon_svg_uri": "https://svgs.scryfall.io/sets/w16.svg?1714968000", + "icon_svg_uri": "https://svgs.scryfall.io/sets/w16.svg?1724644800", "search_uri": "https://api.scryfall.com/cards/search?include_extras=true&include_variations=true&order=set&q=e%3Aw16&unique=prints", "scryfall_uri": "https://scryfall.com/sets/w16", "uri": "https://api.scryfall.com/sets/b3a0e4a1-5f2c-44e1-8558-61e6dcd88fda" diff --git a/tests/gen_testdata.py b/tests/gen_testdata.py index ac75011..7459846 100755 --- a/tests/gen_testdata.py +++ b/tests/gen_testdata.py @@ -48,12 +48,13 @@ class MissingScryfallDataError(Error): "opc2": {"Akoum", "Chaotic Aether"}, "p03": {"Goblin"}, "pc2": {"Armored Griffin"}, + "pdci": {"Black Sun's Zenith", "Tazeem"}, "pfrf": {"Dragonscale General"}, "phop": {"Stairs to Infinity"}, "phpr": {"Arena"}, "plc": {"Boom // Bust"}, "pls": {"Ertai, the Corrupted"}, - "pdci": {"Black Sun's Zenith", "Tazeem"}, + "plst": {"Ardent Plea", "Anointed Procession", "Anointer Priest", "High Ground", "Terror"}, "pmbs": {"Hero of Bladehold"}, "pneo": {"Boseiju, Who Endures"}, "prna": {"Tithe Taker"}, @@ -66,10 +67,10 @@ class MissingScryfallDataError(Error): "sok": {"Erayo, Soratami Ascendant // Erayo's Essence"}, "sunf": {"Happy Dead Squirrel"}, "thb": { - "Wolfwillow Haven", - "Temple of Plenty", - "Nyxbloom Ancient", "Klothys, God of Destiny", + "Nyxbloom Ancient", + "Temple of Plenty", + "Wolfwillow Haven", }, "unh": {"Who // What // When // Where // Why"}, "ust": {"Very Cryptic Command"}, diff --git a/tests/mtg/test_util.py b/tests/mtg/test_util.py index da74b82..f626d1f 100644 --- a/tests/mtg/test_util.py +++ b/tests/mtg/test_util.py @@ -1,6 +1,6 @@ """Tests for mtg_ssm.mtg.util.""" -from typing import Dict, Optional +from typing import Dict, Tuple from uuid import UUID import pytest @@ -23,38 +23,32 @@ def test_is_strict_basic(name: str, expected: bool) -> None: @pytest.mark.parametrize( - ("name", "card_id", "number", "variant"), + ("name", "card_id", "number_parts"), [ - pytest.param("Thallid", UUID("4caaf31b-86a9-485b-8da7-d5b526ed1233"), 74, "a"), - pytest.param("Dark Ritual", UUID("ebb6664d-23ca-456e-9916-afcd6f26aa7f"), 98, None), - pytest.param("Stairs to Infinity", UUID("57f25ead-b3ec-4c40-972d-d750ed2f5319"), 1, "P"), + pytest.param("Thallid", UUID("4caaf31b-86a9-485b-8da7-d5b526ed1233"), ("", 74, "a")), + pytest.param("Dark Ritual", UUID("ebb6664d-23ca-456e-9916-afcd6f26aa7f"), ("", 98, "")), pytest.param( - "Ertai, the Corrupted", - UUID("66b950d9-8fef-4deb-b51b-26edb90abc56"), - 107, - None, + "Stairs to Infinity", UUID("57f25ead-b3ec-4c40-972d-d750ed2f5319"), ("P", 1, "") ), pytest.param( - "Ertai, the Corrupted", - UUID("fbbfeb32-1654-4bf6-9a38-891f1a03e02b"), - 107, - "★", + "Ertai, the Corrupted", UUID("66b950d9-8fef-4deb-b51b-26edb90abc56"), ("", 107, "") ), pytest.param( - "Viscera Seer", - UUID("dba1cf83-e13d-401e-b76f-b12a51b307f9"), - None, - "VS", + "Ertai, the Corrupted", UUID("fbbfeb32-1654-4bf6-9a38-891f1a03e02b"), ("", 107, "★") ), + pytest.param("Viscera Seer", UUID("dba1cf83-e13d-401e-b76f-b12a51b307f9"), ("VS", 0, "")), + pytest.param( + "Anointed Procession", UUID("c9d6af7b-41a5-4077-81ed-7560548dcf3e"), ("AKH-", 2, "") + ), + pytest.param("Terror", UUID("f8c2f285-141b-479b-aca6-ceacf60e3f6a"), ("10E-", 182, "")), ], ) -def test_collector_int_var( +def test_collector_number_parts( id_to_card: Dict[UUID, ScryCard], name: str, card_id: UUID, - number: Optional[int], - variant: Optional[str], + number_parts: Tuple[str, int, str], ) -> None: card = id_to_card[card_id] assert card.name == name - assert (number, variant) == util.collector_int_var(card) + assert number_parts == util.collector_number_parts(card.collector_number) diff --git a/tests/scryfall/test_fetcher.py b/tests/scryfall/test_fetcher.py index ab3ebc5..bd74bbc 100644 --- a/tests/scryfall/test_fetcher.py +++ b/tests/scryfall/test_fetcher.py @@ -23,7 +23,7 @@ } -@pytest.fixture() +@pytest.fixture def _scryurls(requests_mock: RequestsMock) -> None: """Populate mock responses for scryfall urls.""" for endpoint, filename in ENDPOINT_TO_FILE.items(): diff --git a/tests/serialization/__snapshots__/test_xlsx.ambr b/tests/serialization/__snapshots__/test_xlsx.ambr index 8ac69c0..b702199 100644 --- a/tests/serialization/__snapshots__/test_xlsx.ambr +++ b/tests/serialization/__snapshots__/test_xlsx.ambr @@ -257,7 +257,7 @@ '120', '4ebcd681-1871-4914-bcd7-6bd95829f6e0', 'Justin Hampton', - Decimal('1.31'), + Decimal('1.40'), None, None, None, @@ -270,7 +270,7 @@ '380', 'fbdcbd97-90a9-45ea-94f6-2a1c6faaf965', 'Pat Lewis', - Decimal('0.61'), + Decimal('0.46'), None, 1, None, @@ -283,7 +283,7 @@ '381', 'b346b784-7bde-49d0-bfa9-56236cbe19d9', 'Pat Lewis', - Decimal('0.60'), + Decimal('0.62'), None, None, 2, @@ -296,7 +296,7 @@ '382', '768c4d8f-5700-4f0a-9ff2-58422aeb1dac', 'Pat Lewis', - Decimal('0.39'), + Decimal('0.31'), None, 3, 4, @@ -309,7 +309,7 @@ '383', '4c0ad95c-d62c-4138-ada0-fa39a63a449e', 'Pat Lewis', - Decimal('1.96'), + Decimal('1.91'), None, None, None, @@ -575,7 +575,7 @@ '46', '69c3b2a3-0daa-4d42-832d-fcdfda6555ea', 'Richard Thomas', - None, + 159.95, None, None, None, @@ -588,7 +588,7 @@ '98', 'ebb6664d-23ca-456e-9916-afcd6f26aa7f', 'Sandra Everingham', - 205.67, + 322.18, None, None, None, @@ -601,7 +601,7 @@ '294', '6f1c8cb0-38eb-408b-94e8-16db83999b3b', 'Christopher Rush', - 38.12, + 37.23, None, None, None, @@ -614,7 +614,7 @@ '295', 'f20c89d9-71c9-45f5-a9cb-6e253b0a7cca', 'Christopher Rush', - 52.9, + 47.58, None, None, None, @@ -644,7 +644,7 @@ '74a', '4caaf31b-86a9-485b-8da7-d5b526ed1233', 'Edward P. Beard, Jr.', - 0.2, + 0.21, None, None, None, @@ -657,7 +657,7 @@ '74b', '80f8f778-ae31-45cd-b27f-f93a07853ede', 'Jesper Myrfors', - 0.17, + 0.16, None, None, None, @@ -670,7 +670,7 @@ '74c', '2cf2f3da-9101-439d-8caa-910ff40bfbb3', 'Ron Spencer', - 0.23, + 0.19, None, None, None, @@ -713,7 +713,7 @@ '120', '4ebcd681-1871-4914-bcd7-6bd95829f6e0', 'Justin Hampton', - 1.31, + 1.4, None, None, None, @@ -726,7 +726,7 @@ '380', 'fbdcbd97-90a9-45ea-94f6-2a1c6faaf965', 'Pat Lewis', - 0.61, + 0.46, None, None, None, @@ -739,7 +739,7 @@ '381', 'b346b784-7bde-49d0-bfa9-56236cbe19d9', 'Pat Lewis', - 0.6, + 0.62, None, None, None, @@ -752,7 +752,7 @@ '382', '768c4d8f-5700-4f0a-9ff2-58422aeb1dac', 'Pat Lewis', - 0.39, + 0.31, None, None, None, @@ -765,7 +765,7 @@ '383', '4c0ad95c-d62c-4138-ada0-fa39a63a449e', 'Pat Lewis', - 1.96, + 1.91, None, None, None, @@ -796,7 +796,7 @@ '5d5f3f57-410f-4ee2-b93c-f5051a068828', 'Mark Zug', None, - 0.47, + 0.58, 7, 12, None, @@ -825,8 +825,8 @@ '2', '864ad989-19a6-4930-8efc-bbc077a18c32', 'Mark Zug', - 0.29, - 1.82, + 0.3, + 6, None, None, None, @@ -838,8 +838,8 @@ '273', '0180d9a8-992c-4d55-8ac4-33a587786993', 'Ralph Horsley', - 10.38, - 59.7, + 10.41, + 57.08, None, None, None, @@ -868,8 +868,8 @@ '3', '758abd53-6ad2-406e-8615-8e48678405b4', 'Mark Zug', - 0.18, - 0.29, + 0.14, + 0.3, None, None, None, @@ -898,8 +898,8 @@ '35', '0b61d772-2d8b-4acf-9dd2-b2e8b03538c8', 'Matt Cavotta', - 4.56, - 4.46, + 4.27, + 11.43, None, None, None, @@ -928,7 +928,7 @@ '1', 'b8f5e276-d7c3-4b4b-ac5b-9bb1aeeca8d0', 'Greg Hildebrandt & Tim Hildebrandt', - 0.41, + 0.39, None, None, None, @@ -941,7 +941,7 @@ '24', 'c8c774f2-110e-476c-a4ff-cc86d31c6ae7', 'Clint Langley', - 2.6, + 3.9, None, None, None, @@ -972,7 +972,7 @@ '8829efa0-498a-43ca-91aa-f9caeeafe298', 'Scott Chou', None, - 4.77, + 5.8, None, None, '=IF(\'MBS\'!A2>0,"MBS:"&\'MBS\'!A2,"")', @@ -1001,8 +1001,8 @@ '8', '8a3853ec-e307-46e0-96d7-0706b5c45c5e', 'Austin Hsu', - 6.09, - 19.15, + 4.95, + 20.7, None, None, '=IF(\'PMBS\'!A2>0,"PMBS:"&\'PMBS\'!A2,"")', @@ -1014,8 +1014,8 @@ '39', '03bdcf52-50b8-42c0-9665-931d83f5f314', 'Daniel Ljunggren', - 4.02, - 7.41, + 2.11, + 6.99, None, None, None, @@ -1044,8 +1044,8 @@ '266', '2135ac5a-187b-4dc9-8f82-34e8d1603416', 'Chris Ostrowski', - 33.85, - 36.01, + 32.41, + 34.41, None, None, '=IF(SUM(\'PNEO\'!A2:A3)>0,"PNEO:"&SUM(\'PNEO\'!A2:A3),"")', @@ -1057,8 +1057,8 @@ '412', '0055ea30-20fb-4324-a632-8fed87628f05', 'Esuthio', - 44.08, - 92.33, + 40.79, + 80.45, None, None, '=IF(SUM(\'PNEO\'!A2:A3)>0,"PNEO:"&SUM(\'PNEO\'!A2:A3),"")', @@ -1070,8 +1070,8 @@ '501', '2488a80b-6882-4b59-8232-f02f800204a9', 'Chris Ostrowski', - 35.62, - 51.31, + 34.54, + 43.12, None, None, '=IF(SUM(\'PNEO\'!A2:A3)>0,"PNEO:"&SUM(\'PNEO\'!A2:A3),"")', @@ -1100,8 +1100,8 @@ '266p', 'dda82840-1f3f-4be7-9bc7-66ff551ef5c0', 'Chris Ostrowski', - 34.28, - 36.43, + 31.41, + 33.22, None, None, '=IF(SUM(\'NEO\'!A2:A4)>0,"NEO:"&SUM(\'NEO\'!A2:A4),"")', @@ -1114,7 +1114,7 @@ '2a2f63b7-c33c-41d0-9c8f-7bddd1821f15', 'Chris Ostrowski', None, - 47.12, + 46.12, None, None, '=IF(SUM(\'NEO\'!A2:A4)>0,"NEO:"&SUM(\'NEO\'!A2:A4),"")', diff --git a/tests/serialization/test_csv.py b/tests/serialization/test_csv.py index 640bea1..9af5890 100644 --- a/tests/serialization/test_csv.py +++ b/tests/serialization/test_csv.py @@ -32,14 +32,14 @@ def oracle(scryfall_data: ScryfallDataSet) -> Oracle: def test_header() -> None: - assert [ + assert csv.CSV_HEADER == [ "set", "name", "collector_number", "scryfall_id", "nonfoil", "foil", - ] == csv.CSV_HEADER + ] def test_row_for_card(id_to_card: Dict[UUID, ScryCard]) -> None: