Gwent Tracker to Gwentify Collection

Transfer your collection to Gwentify

目前為 2017-06-17 提交的版本,檢視 最新版本

// ==UserScript==
// @name         Gwent Tracker to Gwentify Collection
// @version      0.2
// @description  Transfer your collection to Gwentify
// @author       spokomaciek
// @match        http://www.gwent-tracker.com/*
// @match        http://gwentify.com/collection-manager/
// @grant   GM_getValue
// @grant   GM_setValue
// @require http://code.jquery.com/jquery-1.12.4.min.js
// @require https://greasyfork.org/scripts/2199-waitforkeyelements/code/waitForKeyElements.js?version=6349
// @namespace https://greasyfork.org/users/133522
// ==/UserScript==

(function() {
    'use strict';
    function addslashes( str ) {
        return (str + '').replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0');
    }
    function addCollection() {
        if (GM_getValue('transfer') == 'true') {
            console.log('Adding to collection');
            var cards = JSON.parse(GM_getValue('cards', '{}'));
            GM_setValue('transfer', 'false');
            var cardsD = {};
            cards.forEach(function(val) {
                if (cardsD[val] === undefined) {
                    cardsD[val] = 1;
                }
                else {
                    cardsD[val] += 1;
                }
            });
            console.log(JSON.stringify(cardsD));
            for (var key in cardsD) {
                var card = $("div[data-name=\'" + addslashes(key)  + "\' i]");
                if (card.attr('data-ownership') === 'owned') {
                    var amnt = Number($("div[data-name=\'" + addslashes(key)  + "\' i][data-ownership='owned'] .cm-card-ct").text());
                    if (amnt <= cardsD[key]) {
                        for (var i = 0; i < cardsD[key] - amnt; ++i) {
                            card.click();
                        }
                    }
                    else {
                        for (var i = 0; i < amnt - cardsD[key]; ++i) {
                            var element = document.querySelector("div[data-name=\'" + addslashes(key)  + "\']");
                            element.dispatchEvent(new CustomEvent('contextmenu'));
                        }
                    }
                }
                else {
                    for (var i = 0; i < cardsD[key]; ++i) {
                        card.click();
                    }
                }
            }
        }
    }
    function transfer() {
        console.log("Bookmarklet starting");
        var cards = $(".name").text().split('\n').map(function(u) {return u.trim().toUpperCase();}).filter(function(u) {return u !== "";});
        GM_setValue('transfer', 'true');
        GM_setValue('cards', JSON.stringify(cards));
        window.location.assign("http://gwentify.com/collection-manager/");
    }

    if (location.href.match(/gwent-tracker/)) {
        $('body').append('<input type="button" value="Transfer collection" id="transferBtn">');
        $("#transferBtn").css("position", "fixed").css("top", 0).css("left", 0);
        $('#transferBtn').click(function() {
            transfer();
        });
    }
    else {
        waitForKeyElements(".db-card", addCollection);
    }
})();