Corgi's Card Thing

Small little script that pulls and render each set code that an MTG card is in.

by unitedbypaste

HTML

<!DOCTYPE html>
<html>
<head>
    <title>Print Codes</title>

    <!--script src="http://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script-->
    <script src="/script.js"></script>
    <link type="text/css" rel="stylesheet" href="/style.css" />
</head>
<body>

    <h2>INPUT HERE</h2>
    <textarea id="input"></textarea> <br />

    <button id="search">Find Sets</button>

    <h2>OUTPUT HERE</h2>
    <textarea id="output" readonly></textarea>

</body>
</html>

CSS

textarea {
    width: 100%;
    height: 10rem;
}

JavaScript

$(document).ready(function() {
    var base_query = "https://api.scryfall.com/cards/search?unique=prints&order=released&dir=asc&q="

    $('#search').click(function() {
        let cards = $('#input').val().split('\n');
        let printArray = {};
        cards.forEach((card, index) => {
            let query = base_query + encodeURI(card)
            cards[index] = query;
        })

        $('#search').html('Loading...')
        $('#search').prop("disabled", true)

        Promise.all(cards.map(url => 
            fetch(url).then(resp => resp.json())
        )).then(response => {
            response.forEach(card => {
                card.data.forEach( printing => {
                    if (!(printing.name in printArray)) {
                        printArray[printing.name] = [];
                    }
                    printArray[printing.name].push(printing.set)
                })
            })
            let outputString = '';
            for (var [key, value] of Object.entries(printArray)) {
                outputString += key + ' - ' + value.join(', ') + '\n';
            }
            $('#search').html('Find Sets')
            $('#search').prop("disabled", false)
            $('#output').val(outputString);
        })
    })
  });