JSFiddle - React, Tailwind, and code Playground
Papa Parse Scryfall Card Prices
by skibulk
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.2.0/papaparse.min.js"></script>
<input id="browse" type="file"/><br>
JavaScript
// Browse Button
var browse = document.getElementById("browse");
var results = [];
var results2 = [];
var excludeSets = ["por", "p02", "ptk", "ppod"];
// Handle file selection
browse.onchange = function(event) {
console.clear();
var file, fr, i, j;
file = browse.files[0];
fr = new FileReader();
fr.onload = receivedText;
fr.readAsText(file);
function receivedText(e) {
let lines = e.target.result;
var cards = JSON.parse(lines);
console.log(cards);
for(i=0; i<cards.length; i++){
// Skip Foreign
if(cards[i].lang != "en") continue;
// Skip Commons
if(cards[i].rarity == "common") continue;
// Skip Old Cards
if(cards[i].released_at.slice(0,4) < 1995) continue;
// Skip special sets
if(excludeSets.includes(cards[i].set.toLowerCase())) continue;
// Skip Promos
if(cards[i].promo == true) continue;
// Skip Tokens
if(cards[i].type_line.indexOf("Token") == 0) continue;
// Skip gold borders
if(cards[i].border_color != "black") continue;
// Skip Extended Art
if(cards[i].frame_effects && cards[i].frame_effects.includes("extendedart")) continue;
var card_name = cards[i].name;
if(!results[card_name]){
results[card_name] = [];
}
results[card_name].push([
cards[i].set,
cards[i].prices.usd,
cards[i],
]);
}
console.log(results);
for(var name in results){
// Skip Cards with only one printing (after 1995)
if(results[name].length == 1) continue;
sortNestedDesc(results[name], 1);
var low = Infinity;
var high=0;
for(i=0; i<results[name].length; i++){
var card = results[name][i];
if(card[1] > 0){
...