I want to play a custom MTG format where the card pool is defined by a Scryfall search and updated twice a year. For example, my search might be f:standard f:penny usd<=1.

How can I export, share, and import the list of legal cards with other people so that we can all check card legality and use a deck builder with the same pool of cards?

  • chgxvjh [he/him, comrade/them]@hexbear.net
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    18 hours ago

    That’s pretty straightforward with Powershell

    $url = 'https://api.scryfall.com/cards/search?q=f%3Astandard f:penny usd<=1'
    $data = @()
    
    DO {
        $response = $(Invoke-WebRequest $url).Content | ConvertFrom-Json
        $data = $data + $response.data
        $url = $response.next_page
    } WHILE ($response.has_more)
    
    
    FOREACH ($card in $data) {
        ECHO $card.name
    }
    

    This gives you a plain list of card names

    • counterspell
      cake
      OP
      link
      fedilink
      English
      arrow-up
      2
      ·
      edit-2
      16 hours ago

      Is there a deckbuilder that allows using just that list to build decks? How would I import it?

      #!/bin/bash
      
      url="https://api.scryfall.com/cards/search?q=f%3Astandard+f%3Apenny+usd<=1"
      data=()
      
      while [ -n "$url" ]; do
          response=$(curl -s "$url")
          data_chunk=$(echo "$response" | jq -c '.data[]')
          while read -r card; do
              data+=("$card")
          done <<< "$data_chunk"
      
          has_more=$(echo "$response" | jq -r '.has_more')
          if [ "$has_more" = "true" ]; then
              url=$(echo "$response" | jq -r '.next_page')
          else
              url=""
          fi
      done
      
      for card_json in "${data[@]}"; do
          echo "$card_json" | jq -r '.name'
      done