It is currently 14 Sep 2025, 05:55
   
Text Size

Parse new set card data from MTG-Salvation

Moderators: North, BetaSteward, noxx, jeffwadsworth, JayDi, TheElk801, LevelX, CCGHQ Admins

Parse new set card data from MTG-Salvation

Postby LevelX » 09 Aug 2017, 05:20

Retrieving card Data from MTG-Salvation Spoiler

Open Opera/chrome and go to the Spoiler page
Push CRTL + SHIFT + I to open the Opera debugger or the command to open the Chrome console
Go to the console tab and post the script
Change the set name in Line number 5
Push return
mark the output and copy it to the mtg-cards-data.txt file.

Code: Select all
(function(){
    var x = '';
    function printCard(card){
        var text = '';
        text += card.name + '|[ENTER HERE THE SET NAME]|';
        text += (card.number ? card.number : '') + '|';
        text += card.rarity[0].replace('B', 'L') + '|';
        text += ((card.cost.length > 0) ? '{' : '') + card.cost.join('}{') + ((card.cost.length > 0) ? '}|' : '|');
        text += card.type + '|';
        text += (card.pt ? card.pt.split('/').join("|") : '|') + '|';
        text += (card.abilities ? card.abilities.join('$') : '') + '|';
        return text;
    }
    $.each($('table[cellpadding=5]'), function(index, value) {
        var $value = $(value);
        var card = {};
        card.name = $value.find('td[width=220px]:eq(0) a:eq(1)').attr('name');
        card.cost = [];
        $.each($value.find('td[width=80px]:eq(0) img'), function(idx, val) {
            card.cost.push(val.alt.toUpperCase());
        });
        card.type = $value.find('td[width=220px]:eq(1)').text();
        card.rarity = $value.find('td[width=80px]:eq(1) img').attr('alt');
        var findResult = $value.find('td[colspan=2]:eq(0)');
        if(findResult.length > 0){
            var text = findResult.html().replace(/<img src="http:\/\/forums.mtgsalvation.com\/images\/smilies\/[\w\d]+?.gif" alt="/g, '{');
            text = text.replace(/">/g, '}');
            text = text.replace(/{{/g, '{');
            text = text.replace(/}}/g, '}');
            text = text.replace(/(\r\n|\n|\r)/gm,"");
            card.abilities = text.split('<br>');
        }
        findResult = $value.find('tr:last i')
        if(findResult.length > 0){
            card.number = findResult.html().replace('#', '').split('/')[0];
        }
        findResult = $value.find('tr:last td:last')
        if(findResult.length > 0){   
            card.pt = findResult.html();
        }

        if(card.name.indexOf('//') != -1){
            var card1 = {};
            var card2 = {};
            card1.name = card.name.split(' // ')[0];
            card2.name = card.name.split(' // ')[1];
            card1.cost = card.cost;
            card2.cost = [];
            card1.rarity = card.rarity;
            card2.rarity = card.rarity;
            card1.type = card.type.split(' // ')[0];
            card2.type = card.type.split(' // ')[1];
            card1.pt = card.pt.split(' // ')[0];
            card2.pt = card.pt.split(' // ')[1];
            if(card.number){
                card1.number = card.number;
                card2.number = card.number;
            }
            var first = true;
            card1.abilities = [];
            card2.abilities = [];
            for(var i = 0; i < card.abilities.length; i++){
                if(card.abilities[i].indexOf('//') != -1 || card.abilities[i].indexOf('--') != -1){
                    first = false;
                }else if (card.abilities[i].length > 0) {
                    if(first){
                        card1.abilities.push(card.abilities[i]);
                    }else{
                        card2.abilities.push(card.abilities[i]);
                    }
                }
            }
            x += printCard(card1) + '\n';
            x += printCard(card2) + '\n';
        }else{
            x += printCard(card) + '\n';
        }
    });
    console.log(x);
})();
User avatar
LevelX
DEVELOPER
 
Posts: 1677
Joined: 08 Dec 2011, 15:08
Has thanked: 174 times
Been thanked: 374 times

Re: Parse new set card data from MTG-Salvation

Postby victoryearing » 14 Jan 2025, 07:33

Push CRTL + SHIFT + I to open the Opera debugger or the command to open the Chrome console
victoryearing
 
Posts: 2
Joined: 25 Nov 2024, 07:46
Has thanked: 0 time
Been thanked: 0 time

Re: Parse new set card data from MTG-Salvation

Postby selecthave » 06 Aug 2025, 09:01

If you're working with MTG Forge or other tools, check if they support Scryfall/MTGJSON imports.
selecthave
 
Posts: 1
Joined: 06 Aug 2025, 08:58
Has thanked: 0 time
Been thanked: 0 time

Re: Parse new set card data from MTG-Salvation

Postby ryansmith53 » 13 Sep 2025, 07:43

The script itself is pretty handy, especially the way it handles split cards and formats abilities. However, since MTG-Salvation spoilers are no longer maintained, I think it might be better in the long run to switch over to something like Scryfall or MTGJSON, as they provide more reliable and structured data. Still, for historical sets or for people who want to practice parsing HTML directly, this guide is clear and practical.
ryansmith53
 
Posts: 1
Joined: 13 Sep 2025, 07:38
Has thanked: 0 time
Been thanked: 0 time


Return to Developers Talk

Who is online

Users browsing this forum: No registered users and 2 guests

Main Menu

User Menu

Our Partners


Who is online

In total there are 2 users online :: 0 registered, 0 hidden and 2 guests (based on users active over the past 10 minutes)
Most users ever online was 7967 on 09 Sep 2025, 23:08

Users browsing this forum: No registered users and 2 guests

Login Form