scryr
provides R functions to access Scryfall’s APIs for
catalogs,
sets, and card
search.
Install scryr from Github with devtools
# install.packages("devtools")
library(devtools)
install_github("khailper/scryr")
library(tidyverse)
library(scryr)
Scryfall catalogs contain each unique value of the catalogs content, returned as a vector of strings. So, if you wanted every enchantment subtype:
scry_catalog("enchantment-types")
## [1] "Aura" "Cartouche" "Curse" "Saga" "Shrine"
The list of available catalogs can be found with ?scry_catalog
.
scry_sets
can either return a tibble containing the information for
all sets (the default), or scry_sets("set's three letter")
to get just
the information for that set.
scry_sets("war")
## # A tibble: 1 x 11
## object code mtgo_code name released_at set_type card_count digital
## <chr> <chr> <chr> <chr> <chr> <chr> <int> <lgl>
## 1 set war war War ~ 2019-05-03 expansi~ 311 FALSE
## # ... with 3 more variables: foil_only <lgl>, block_code <chr>,
## # block <chr>
scry_cards()
returns a tibble containing cards matching the seach in
the query
arguement. So, if we instead of wanting the information about
War of the Spark, we wanted all cards in that set:
war_cards <- scry_cards("s:war")
war_cards
## # A tibble: 265 x 56
## object name lang released_at layout highres_image mana_cost cmc
## <chr> <chr> <chr> <chr> <chr> <lgl> <chr> <dbl>
## 1 card Ahn-~ en 2019-05-03 normal TRUE {2}{R} 3
## 2 card Aid ~ en 2019-05-03 normal TRUE {1}{B} 2
## 3 card Ajan~ en 2019-05-03 normal TRUE {1}{W} 2
## 4 card Ajan~ en 2019-05-03 normal TRUE {2}{G}{W} 4
## 5 card Angr~ en 2019-05-03 normal TRUE {2}{B/R}~ 4
## 6 card Angr~ en 2019-05-03 normal TRUE {B}{R} 2
## 7 card Arbo~ en 2019-05-03 normal TRUE {G} 1
## 8 card Arli~ en 2019-05-03 normal TRUE {2}{G} 3
## 9 card Arli~ en 2019-05-03 normal TRUE {4}{G}{G} 6
## 10 card Ashi~ en 2019-05-03 normal TRUE {1}{U/B}~ 3
## # ... with 255 more rows, and 48 more variables: type_line <chr>,
## # oracle_text <chr>, power <chr>, toughness <chr>, colors <list>,
## # color_identity <list>, games <list>, reserved <lgl>, foil <lgl>,
## # nonfoil <lgl>, oversized <lgl>, promo <lgl>, reprint <lgl>,
## # variation <lgl>, set <chr>, set_name <chr>, set_type <chr>,
## # collector_number <chr>, digital <lgl>, rarity <chr>,
## # flavor_text <chr>, artist <chr>, border_color <chr>, frame <chr>,
## # full_art <lgl>, textless <lgl>, booster <lgl>, story_spotlight <lgl>,
## # edhrec_rank <int>, loyalty <chr>, all_parts <list>,
## # frame_effect <chr>, promo_types <list>, legalities.standard <chr>,
## # legalities.future <chr>, legalities.frontier <chr>,
## # legalities.modern <chr>, legalities.legacy <chr>,
## # legalities.pauper <chr>, legalities.vintage <chr>,
## # legalities.penny <chr>, legalities.commander <chr>,
## # legalities.duel <chr>, legalities.oldschool <chr>, prices.usd <chr>,
## # prices.usd_foil <chr>, prices.eur <chr>, prices.tix <chr>
scry_cards
also supports more complex searches (the query syntax is
available at https://scryfall.com/docs/syntax):
# all mono-colored creatures in War of the Spark"
scry_cards("set:war t:'creature' c:1") %>%
# need to unlist colors so it can be a grouping variable for count
mutate(colors = unlist(colors),
colors = fct_relevel(colors, "W", "U", "B", "R", "G")) %>%
# getting each color's mana curve
count(cmc,colors) %>%
ggplot(aes(cmc, n, fill = colors)) +
geom_col() +
facet_wrap(~colors) +
guides(fill = FALSE) +
labs(title = "Mana curve by color in War of the Spark",
subtitle = "mono-colored creatures only",
x = "Converted mana cost",
y = "Number of cards") +
theme(strip.background = element_blank(), strip.text.x = element_blank()) +
scale_fill_manual(values = c("W" = "#ffe7b9",
"U" = "#0e68ab",
"B" = "#150b00",
"R" = "#d3202a",
"G" = "#00733e"))
Note: both scry_sets
and scry_cards
by default drop columns related
containing IDs and URIs. This can be overridden with include_ids =
TRUE
and include_uris = TRUE
, respectively.
scryr is unofficial Fan Content permitted under the Fan Content Policy. Not approved/endorsed by Wizards. Portions of the materials used are property of Wizards of the Coast. ©Wizards of the Coast LLC.
scryr is not endorsed or supported by Scryfall. Any use of scryr is subject to Scryfall’s “Use of Scryfall Data” policy at https://scryfall.com/docs/api.
Please note that the ‘scryr’ project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.