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);
})
})
});