diff --git a/scryfall_deser/src/deser.rs b/scryfall_deser/src/deser.rs index 4971fa2..815f8ef 100644 --- a/scryfall_deser/src/deser.rs +++ b/scryfall_deser/src/deser.rs @@ -43,6 +43,7 @@ pub struct ScryfallCard { pub colours: Option>, pub edhrec_rank: Option, pub defense: Option, + pub game_changer: bool, pub hand_modifier: Option, pub keywords: Vec, // Words like "Flying" pub legalities: FormatLegalities, @@ -89,7 +90,8 @@ pub struct ScryfallCard { pub printed_text: Option, pub printed_type_line: Option, pub promo: bool, - pub promo_types: Option>, + //pub promo_types: Option>, + pub promo_types: Option>, pub purchase_uris: Option, pub rarity: Rarity, pub related_uris: Value, // TODO: - list all the URIs? Maybe? Who cares? @@ -199,7 +201,6 @@ pub struct FormatLegalities { timeless: Legality, gladiator: Legality, pioneer: Legality, - explorer: Legality, modern: Legality, legacy: Legality, pauper: Legality, diff --git a/scryfall_deser/src/download.rs b/scryfall_deser/src/download.rs index 21bd385..8bc2135 100644 --- a/scryfall_deser/src/download.rs +++ b/scryfall_deser/src/download.rs @@ -47,6 +47,7 @@ pub fn download_latest( stype: ScryfallBulkType, mut dest_file: &NamedTempFile, ) -> Result<(), Box> { + panic!(); let bulk_body: ScryfallBulk = ureq::get(SCRYFALL_BULK_API) .header("User-Agent", "Arthur's Card Finger Testing v0.1") .header("Accept", "application/json") diff --git a/scryfall_deser/test_files/black_lotus.json b/scryfall_deser/test_files/black_lotus.json index 8b7852a..643915f 100644 --- a/scryfall_deser/test_files/black_lotus.json +++ b/scryfall_deser/test_files/black_lotus.json @@ -1,28 +1,32 @@ { "object": "card", - "id": "f5d24a5b-c950-4fd9-99e6-a4b979d915b3", + "id": "bd8fa327-dd41-4737-8f19-2cf5eb1f7cdd", "oracle_id": "5089ec1a-f881-4d55-af14-5d996171203b", - "multiverse_ids": [], + "multiverse_ids": [ + 382866 + ], + "mtgo_id": 53155, + "mtgo_foil_id": 53156, "name": "Black Lotus", "lang": "en", - "released_at": "2023-12-08", - "uri": "https://api.scryfall.com/cards/f5d24a5b-c950-4fd9-99e6-a4b979d915b3", - "scryfall_uri": "https://scryfall.com/card/ovnt/2023NA/black-lotus?utm_source=api", + "released_at": "2014-06-16", + "uri": "https://api.scryfall.com/cards/bd8fa327-dd41-4737-8f19-2cf5eb1f7cdd", + "scryfall_uri": "https://scryfall.com/card/vma/4/black-lotus?utm_source=api", "layout": "normal", - "highres_image": false, - "image_status": "lowres", + "highres_image": true, + "image_status": "highres_scan", "image_uris": { - "small": "https://cards.scryfall.io/small/front/f/5/f5d24a5b-c950-4fd9-99e6-a4b979d915b3.jpg?1738105453", - "normal": "https://cards.scryfall.io/normal/front/f/5/f5d24a5b-c950-4fd9-99e6-a4b979d915b3.jpg?1738105453", - "large": "https://cards.scryfall.io/large/front/f/5/f5d24a5b-c950-4fd9-99e6-a4b979d915b3.jpg?1738105453", - "png": "https://cards.scryfall.io/png/front/f/5/f5d24a5b-c950-4fd9-99e6-a4b979d915b3.png?1738105453", - "art_crop": "https://cards.scryfall.io/art_crop/front/f/5/f5d24a5b-c950-4fd9-99e6-a4b979d915b3.jpg?1738105453", - "border_crop": "https://cards.scryfall.io/border_crop/front/f/5/f5d24a5b-c950-4fd9-99e6-a4b979d915b3.jpg?1738105453" + "small": "https://cards.scryfall.io/small/front/b/d/bd8fa327-dd41-4737-8f19-2cf5eb1f7cdd.jpg?1614638838", + "normal": "https://cards.scryfall.io/normal/front/b/d/bd8fa327-dd41-4737-8f19-2cf5eb1f7cdd.jpg?1614638838", + "large": "https://cards.scryfall.io/large/front/b/d/bd8fa327-dd41-4737-8f19-2cf5eb1f7cdd.jpg?1614638838", + "png": "https://cards.scryfall.io/png/front/b/d/bd8fa327-dd41-4737-8f19-2cf5eb1f7cdd.png?1614638838", + "art_crop": "https://cards.scryfall.io/art_crop/front/b/d/bd8fa327-dd41-4737-8f19-2cf5eb1f7cdd.jpg?1614638838", + "border_crop": "https://cards.scryfall.io/border_crop/front/b/d/bd8fa327-dd41-4737-8f19-2cf5eb1f7cdd.jpg?1614638838" }, "mana_cost": "{0}", "cmc": 0, "type_line": "Artifact", - "oracle_text": "{T}, Sacrifice Black Lotus: Add three mana of any one color.", + "oracle_text": "{T}, Sacrifice this artifact: Add three mana of any one color.", "colors": [], "color_identity": [], "keywords": [], @@ -40,7 +44,6 @@ "timeless": "not_legal", "gladiator": "not_legal", "pioneer": "not_legal", - "explorer": "not_legal", "modern": "not_legal", "legacy": "banned", "pauper": "not_legal", @@ -58,43 +61,44 @@ "predh": "banned" }, "games": [ - "paper" + "mtgo" ], "reserved": true, - "foil": false, + "game_changer": false, + "foil": true, "nonfoil": true, "finishes": [ - "nonfoil" + "nonfoil", + "foil" ], - "oversized": true, + "oversized": false, "promo": false, "reprint": true, "variation": false, - "set_id": "c6a6b61b-143a-43f2-b74d-b140f3d93490", - "set": "ovnt", - "set_name": "Vintage Championship", - "set_type": "memorabilia", - "set_uri": "https://api.scryfall.com/sets/c6a6b61b-143a-43f2-b74d-b140f3d93490", - "set_search_uri": "https://api.scryfall.com/cards/search?order=set&q=e%3Aovnt&unique=prints", - "scryfall_set_uri": "https://scryfall.com/sets/ovnt?utm_source=api", - "rulings_uri": "https://api.scryfall.com/cards/f5d24a5b-c950-4fd9-99e6-a4b979d915b3/rulings", + "set_id": "a944551a-73fa-41cd-9159-e8d0e4674403", + "set": "vma", + "set_name": "Vintage Masters", + "set_type": "masters", + "set_uri": "https://api.scryfall.com/sets/a944551a-73fa-41cd-9159-e8d0e4674403", + "set_search_uri": "https://api.scryfall.com/cards/search?order=set&q=e%3Avma&unique=prints", + "scryfall_set_uri": "https://scryfall.com/sets/vma?utm_source=api", + "rulings_uri": "https://api.scryfall.com/cards/bd8fa327-dd41-4737-8f19-2cf5eb1f7cdd/rulings", "prints_search_uri": "https://api.scryfall.com/cards/search?order=released&q=oracleid%3A5089ec1a-f881-4d55-af14-5d996171203b&unique=prints", - "collector_number": "2023NA", - "digital": false, - "rarity": "special", - "flavor_text": "2023 North America\nVintage Championship", + "collector_number": "4", + "digital": true, + "rarity": "bonus", "card_back_id": "0aeebaf5-8c7d-4636-9e82-8c27447861f7", - "artist": "Scott M. Fischer", + "artist": "Chris Rahn", "artist_ids": [ - "23b0cf43-3e43-44c6-8329-96446eca5bce" + "7742047e-0f80-4c0f-a530-d07460165e86" ], - "illustration_id": "4bc3f69f-66b6-4a6f-8b55-09df0ea4cb89", + "illustration_id": "da62ded1-bedd-44c6-8950-ca56e691a899", "border_color": "black", "frame": "2015", "security_stamp": "oval", "full_art": false, "textless": false, - "booster": false, + "booster": true, "story_spotlight": false, "prices": { "usd": null, @@ -102,16 +106,17 @@ "usd_etched": null, "eur": null, "eur_foil": null, - "tix": null + "tix": "41.98" }, "related_uris": { - "tcgplayer_infinite_articles": "https://partner.tcgplayer.com/c/4931599/1830156/21018?subId1=api&trafcat=infinite&u=https%3A%2F%2Finfinite.tcgplayer.com%2Fsearch%3FcontentMode%3Darticle%26game%3Dmagic%26q%3DBlack%2BLotus", - "tcgplayer_infinite_decks": "https://partner.tcgplayer.com/c/4931599/1830156/21018?subId1=api&trafcat=infinite&u=https%3A%2F%2Finfinite.tcgplayer.com%2Fsearch%3FcontentMode%3Ddeck%26game%3Dmagic%26q%3DBlack%2BLotus", + "gatherer": "https://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid=382866&printed=false", + "tcgplayer_infinite_articles": "https://partner.tcgplayer.com/c/4931599/1830156/21018?subId1=api&trafcat=tcgplayer.com%2Fsearch%2Farticles&u=https%3A%2F%2Fwww.tcgplayer.com%2Fsearch%2Farticles%3FproductLineName%3Dmagic%26q%3DBlack%2BLotus", + "tcgplayer_infinite_decks": "https://partner.tcgplayer.com/c/4931599/1830156/21018?subId1=api&trafcat=tcgplayer.com%2Fsearch%2Fdecks&u=https%3A%2F%2Fwww.tcgplayer.com%2Fsearch%2Fdecks%3FproductLineName%3Dmagic%26q%3DBlack%2BLotus", "edhrec": "https://edhrec.com/route/?cc=Black+Lotus" }, "purchase_uris": { "tcgplayer": "https://partner.tcgplayer.com/c/4931599/1830156/21018?subId1=api&u=https%3A%2F%2Fwww.tcgplayer.com%2Fsearch%2Fmagic%2Fproduct%3FproductLineName%3Dmagic%26q%3DBlack%2BLotus%26view%3Dgrid", "cardmarket": "https://www.cardmarket.com/en/Magic/Products/Search?referrer=scryfall&searchString=Black+Lotus&utm_campaign=card_prices&utm_medium=text&utm_source=scryfall", - "cardhoarder": "https://www.cardhoarder.com/cards?affiliate_id=scryfall&data%5Bsearch%5D=Black+Lotus&ref=card-profile&utm_campaign=affiliate&utm_medium=card&utm_source=scryfall" + "cardhoarder": "https://www.cardhoarder.com/cards/53155?affiliate_id=scryfall&ref=card-profile&utm_campaign=affiliate&utm_medium=card&utm_source=scryfall" } } diff --git a/scryfall_deser/test_files/little_girl.json b/scryfall_deser/test_files/little_girl.json index 8b09a53..95161bc 100644 --- a/scryfall_deser/test_files/little_girl.json +++ b/scryfall_deser/test_files/little_girl.json @@ -43,7 +43,6 @@ "timeless": "not_legal", "gladiator": "not_legal", "pioneer": "not_legal", - "explorer": "not_legal", "modern": "not_legal", "legacy": "not_legal", "pauper": "not_legal", @@ -64,6 +63,7 @@ "paper" ], "reserved": false, + "game_changer": false, "foil": true, "nonfoil": true, "finishes": [ @@ -100,23 +100,22 @@ "booster": true, "story_spotlight": false, "prices": { - "usd": "0.29", - "usd_foil": "16.25", + "usd": "0.31", + "usd_foil": "15.64", "usd_etched": null, - "eur": "0.29", - "eur_foil": "12.69", + "eur": "0.19", + "eur_foil": "11.09", "tix": null }, "related_uris": { "gatherer": "https://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid=74257&printed=false", - "tcgplayer_infinite_articles": "https://partner.tcgplayer.com/c/4931599/1830156/21018?subId1=api&trafcat=infinite&u=https%3A%2F%2Finfinite.tcgplayer.com%2Fsearch%3FcontentMode%3Darticle%26game%3Dmagic%26q%3DLittle%2BGirl", - "tcgplayer_infinite_decks": "https://partner.tcgplayer.com/c/4931599/1830156/21018?subId1=api&trafcat=infinite&u=https%3A%2F%2Finfinite.tcgplayer.com%2Fsearch%3FcontentMode%3Ddeck%26game%3Dmagic%26q%3DLittle%2BGirl", + "tcgplayer_infinite_articles": "https://partner.tcgplayer.com/c/4931599/1830156/21018?subId1=api&trafcat=tcgplayer.com%2Fsearch%2Farticles&u=https%3A%2F%2Fwww.tcgplayer.com%2Fsearch%2Farticles%3FproductLineName%3Dmagic%26q%3DLittle%2BGirl", + "tcgplayer_infinite_decks": "https://partner.tcgplayer.com/c/4931599/1830156/21018?subId1=api&trafcat=tcgplayer.com%2Fsearch%2Fdecks&u=https%3A%2F%2Fwww.tcgplayer.com%2Fsearch%2Fdecks%3FproductLineName%3Dmagic%26q%3DLittle%2BGirl", "edhrec": "https://edhrec.com/route/?cc=Little+Girl" }, "purchase_uris": { "tcgplayer": "https://partner.tcgplayer.com/c/4931599/1830156/21018?subId1=api&u=https%3A%2F%2Fwww.tcgplayer.com%2Fproduct%2F37883%3Fpage%3D1", - "cardmarket": "https://www.cardmarket.com/en/Magic/Products/Singles/Unhinged/Little-Girl?referrer=scryfall&utm_campaign=card_prices&utm_medium=text&utm_source=scryfall", + "cardmarket": "https://www.cardmarket.com/en/Magic/Products?idProduct=14779&referrer=scryfall&utm_campaign=card_prices&utm_medium=text&utm_source=scryfall", "cardhoarder": "https://www.cardhoarder.com/cards?affiliate_id=scryfall&data%5Bsearch%5D=Little+Girl&ref=card-profile&utm_campaign=affiliate&utm_medium=card&utm_source=scryfall" } } - diff --git a/scryfall_deser/test_files/nissa.json b/scryfall_deser/test_files/nissa.json index 2a40d8a..fd57731 100644 --- a/scryfall_deser/test_files/nissa.json +++ b/scryfall_deser/test_files/nissa.json @@ -1,28 +1,29 @@ { "object": "card", - "id": "7b3f0e26-7784-452d-acc8-9f7181e0f7d5", + "id": "248c76d3-b5cb-4582-be17-7cd1d0cb0f58", "oracle_id": "c1fc5923-c3cd-448a-98d1-c154661c2812", "multiverse_ids": [ - 615951 + 615415 ], - "mtgo_id": 109062, - "tcgplayer_id": 495791, - "cardmarket_id": 710527, + "mtgo_id": 109166, + "arena_id": 85078, + "tcgplayer_id": 495610, + "cardmarket_id": 710196, "name": "Nissa, Resurgent Animist", "lang": "en", "released_at": "2023-05-12", - "uri": "https://api.scryfall.com/cards/7b3f0e26-7784-452d-acc8-9f7181e0f7d5", - "scryfall_uri": "https://scryfall.com/card/mat/162/nissa-resurgent-animist?utm_source=api", + "uri": "https://api.scryfall.com/cards/248c76d3-b5cb-4582-be17-7cd1d0cb0f58", + "scryfall_uri": "https://scryfall.com/card/mat/22/nissa-resurgent-animist?utm_source=api", "layout": "normal", "highres_image": true, "image_status": "highres_scan", "image_uris": { - "small": "https://cards.scryfall.io/small/front/7/b/7b3f0e26-7784-452d-acc8-9f7181e0f7d5.jpg?1684341884", - "normal": "https://cards.scryfall.io/normal/front/7/b/7b3f0e26-7784-452d-acc8-9f7181e0f7d5.jpg?1684341884", - "large": "https://cards.scryfall.io/large/front/7/b/7b3f0e26-7784-452d-acc8-9f7181e0f7d5.jpg?1684341884", - "png": "https://cards.scryfall.io/png/front/7/b/7b3f0e26-7784-452d-acc8-9f7181e0f7d5.png?1684341884", - "art_crop": "https://cards.scryfall.io/art_crop/front/7/b/7b3f0e26-7784-452d-acc8-9f7181e0f7d5.jpg?1684341884", - "border_crop": "https://cards.scryfall.io/border_crop/front/7/b/7b3f0e26-7784-452d-acc8-9f7181e0f7d5.jpg?1684341884" + "small": "https://cards.scryfall.io/small/front/2/4/248c76d3-b5cb-4582-be17-7cd1d0cb0f58.jpg?1684340632", + "normal": "https://cards.scryfall.io/normal/front/2/4/248c76d3-b5cb-4582-be17-7cd1d0cb0f58.jpg?1684340632", + "large": "https://cards.scryfall.io/large/front/2/4/248c76d3-b5cb-4582-be17-7cd1d0cb0f58.jpg?1684340632", + "png": "https://cards.scryfall.io/png/front/2/4/248c76d3-b5cb-4582-be17-7cd1d0cb0f58.png?1684340632", + "art_crop": "https://cards.scryfall.io/art_crop/front/2/4/248c76d3-b5cb-4582-be17-7cd1d0cb0f58.jpg?1684340632", + "border_crop": "https://cards.scryfall.io/border_crop/front/2/4/248c76d3-b5cb-4582-be17-7cd1d0cb0f58.jpg?1684340632" }, "mana_cost": "{2}{G}", "cmc": 3, @@ -47,13 +48,12 @@ "W" ], "legalities": { - "standard": "legal", - "future": "legal", + "standard": "not_legal", + "future": "not_legal", "historic": "legal", "timeless": "legal", "gladiator": "legal", "pioneer": "legal", - "explorer": "legal", "modern": "legal", "legacy": "legal", "pauper": "not_legal", @@ -61,7 +61,7 @@ "penny": "not_legal", "commander": "legal", "oathbreaker": "legal", - "standardbrawl": "legal", + "standardbrawl": "not_legal", "brawl": "legal", "alchemy": "not_legal", "paupercommander": "not_legal", @@ -76,6 +76,7 @@ "mtgo" ], "reserved": false, + "game_changer": false, "foil": true, "nonfoil": true, "finishes": [ @@ -93,9 +94,9 @@ "set_uri": "https://api.scryfall.com/sets/6727e43d-31b6-45b0-ae05-7a811ba72f70", "set_search_uri": "https://api.scryfall.com/cards/search?order=set&q=e%3Amat&unique=prints", "scryfall_set_uri": "https://scryfall.com/sets/mat?utm_source=api", - "rulings_uri": "https://api.scryfall.com/cards/7b3f0e26-7784-452d-acc8-9f7181e0f7d5/rulings", + "rulings_uri": "https://api.scryfall.com/cards/248c76d3-b5cb-4582-be17-7cd1d0cb0f58/rulings", "prints_search_uri": "https://api.scryfall.com/cards/search?order=released&q=oracleid%3Ac1fc5923-c3cd-448a-98d1-c154661c2812&unique=prints", - "collector_number": "162", + "collector_number": "22", "digital": false, "rarity": "mythic", "watermark": "desparked", @@ -108,35 +109,31 @@ "border_color": "black", "frame": "2015", "frame_effects": [ - "legendary", - "extendedart" + "legendary" ], "security_stamp": "oval", "full_art": false, "textless": false, - "booster": false, + "booster": true, "story_spotlight": false, - "promo_types": [ - "boosterfun" - ], - "edhrec_rank": 2163, + "edhrec_rank": 2064, "prices": { - "usd": "24.96", - "usd_foil": "32.13", + "usd": "16.18", + "usd_foil": "16.73", "usd_etched": null, - "eur": "27.94", - "eur_foil": "35.15", - "tix": "0.99" + "eur": "22.93", + "eur_foil": "22.72", + "tix": "0.17" }, "related_uris": { - "gatherer": "https://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid=615951&printed=false", - "tcgplayer_infinite_articles": "https://partner.tcgplayer.com/c/4931599/1830156/21018?subId1=api&trafcat=infinite&u=https%3A%2F%2Finfinite.tcgplayer.com%2Fsearch%3FcontentMode%3Darticle%26game%3Dmagic%26q%3DNissa%252C%2BResurgent%2BAnimist", - "tcgplayer_infinite_decks": "https://partner.tcgplayer.com/c/4931599/1830156/21018?subId1=api&trafcat=infinite&u=https%3A%2F%2Finfinite.tcgplayer.com%2Fsearch%3FcontentMode%3Ddeck%26game%3Dmagic%26q%3DNissa%252C%2BResurgent%2BAnimist", + "gatherer": "https://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid=615415&printed=false", + "tcgplayer_infinite_articles": "https://partner.tcgplayer.com/c/4931599/1830156/21018?subId1=api&trafcat=tcgplayer.com%2Fsearch%2Farticles&u=https%3A%2F%2Fwww.tcgplayer.com%2Fsearch%2Farticles%3FproductLineName%3Dmagic%26q%3DNissa%252C%2BResurgent%2BAnimist", + "tcgplayer_infinite_decks": "https://partner.tcgplayer.com/c/4931599/1830156/21018?subId1=api&trafcat=tcgplayer.com%2Fsearch%2Fdecks&u=https%3A%2F%2Fwww.tcgplayer.com%2Fsearch%2Fdecks%3FproductLineName%3Dmagic%26q%3DNissa%252C%2BResurgent%2BAnimist", "edhrec": "https://edhrec.com/route/?cc=Nissa%2C+Resurgent+Animist" }, "purchase_uris": { - "tcgplayer": "https://partner.tcgplayer.com/c/4931599/1830156/21018?subId1=api&u=https%3A%2F%2Fwww.tcgplayer.com%2Fproduct%2F495791%3Fpage%3D1", - "cardmarket": "https://www.cardmarket.com/en/Magic/Products/Singles/MoM-TA-E/Nissa-Resurgent-Animist-V3?referrer=scryfall&utm_campaign=card_prices&utm_medium=text&utm_source=scryfall", - "cardhoarder": "https://www.cardhoarder.com/cards/109062?affiliate_id=scryfall&ref=card-profile&utm_campaign=affiliate&utm_medium=card&utm_source=scryfall" + "tcgplayer": "https://partner.tcgplayer.com/c/4931599/1830156/21018?subId1=api&u=https%3A%2F%2Fwww.tcgplayer.com%2Fproduct%2F495610%3Fpage%3D1", + "cardmarket": "https://www.cardmarket.com/en/Magic/Products?idProduct=710196&referrer=scryfall&utm_campaign=card_prices&utm_medium=text&utm_source=scryfall", + "cardhoarder": "https://www.cardhoarder.com/cards/109166?affiliate_id=scryfall&ref=card-profile&utm_campaign=affiliate&utm_medium=card&utm_source=scryfall" } }