Greasy Fork is available in English.

SkinsMonkey Enhanced

Make improvements to skinsmonkey.com.

// ==UserScript==
// @name         SkinsMonkey Enhanced
// @namespace    https://github.com/OccultismCat/SkinsMonkey-Enhanced/
// @version      0.0.5
// @description  Make improvements to skinsmonkey.com.
// @author       OccultismCat
// @license      CC-BY-ND-4.0
// @github       https://github.com/OccultismCat/SkinsMonkey-Enhanced/
// @homepage     https://greasyfork.org/en/scripts/472727-skinsmonkey-enhanced
// @supportURL   https://github.com/OccultismCat/SkinsMonkey-Enhanced/issues
// @icon         https://skinsmonkey.com/_nuxt/img/logo-mini.96678c5.svg
// @match        https://skinsmonkey.com/free-csgo-skins
// ==/UserScript==
(function() {
    'use strict';
    const giveaway_join_buttons = [];
    function get_current_time(){
        const current_date = new Date();
        let hours = current_date.getHours() % 12 || 12;
        let minutes = current_date.getMinutes() < 10 ? "0" + current_date.getMinutes() : current_date.getMinutes();
        let seconds = current_date.getSeconds() < 10 ? "0" + current_date.getSeconds() : current_date.getSeconds();
        let am_pm = hours >= 12 ? " PM" : " AM";
        return hours + ':' + minutes + ':' + seconds + am_pm
    }
    function log(text='', element=null){
        const current_time = get_current_time();
        const log_spacer = "_".repeat(current_time.length + 25);
        const log_spacer_bottom = "⎺".repeat(current_time.length + 25);
        const log_text = current_time + ' | [SkinsMonkey-Enhanced]';
        console.log(log_spacer);
        console.log(log_text);
        if (text != '' && text != null && text != undefined){
            console.log(current_time + ' | ' + text);
        }
        if (element != null && element != undefined){
            console.log(element);
        }
        console.log(log_spacer_bottom);
    }
    function log_error(text=''){
        const current_time = get_current_time();
        const log_spacer = "_".repeat(current_time.length + 25);
        const log_spacer_bottom = "⎺".repeat(current_time.length + 25);
        const log_text = current_time + ' | [SkinsMonkey-Enhanced]';
        console.log(log_spacer);
        console.log(log_text);
        if (text != '' && text != null && text != undefined){
            console.error(current_time + ' | ' + text);
        }
        console.log(log_spacer_bottom);
    }
    function locate_element(element){
        if (element != null && element != undefined){
            return true;
        } else {
            return false;
        }
    }
    // { name: '', class: ''},
    const element_classes = [
        { name: 'border', class: 'fa-border'},
        { name: 'bounce', class: 'fa-bounce'},
        { name: 'beat', class: 'fa-beat'},
        { name: 'beat-fade', class: 'fa-beat-fade'},
        { name: 'fade', class: 'fa-fade' },
        { name: 'flip', class: 'fa-flip'},
        { name: 'spin', class: 'fa-spin' },
        { name: 'spin-pulse', class: 'fa-spin-pulse'},
        { name: 'shake', class: 'fa-shake'},
        { name: 'pulse', class: 'fa-pulse'}
    ];
    function get_class(class_name){
        for (const element of element_classes){
            if (element.name === class_name){
                return element.class;
            }
        }
        log_error('[ERROR] | function: get_class() | Unable to find class: "' + class_name + '"')
        return null;
    }
    function create_support_the_developer_title(){
        const free_task_section = document.querySelector("#__layout > div > div.container.free.main > section.free-section.free-tasks");
        if (locate_element(free_task_section) == true){
            var dev_support_title = document.createElement('header');
            dev_support_title.id = 'SkinsMonkey-Enhanced-Dev-Support-Title';
            dev_support_title.style = 'text-align: center; border-color: darkgoldenrod; color: gold; cursor: default; width: 60%; font-family: monospace; font-size: larger; font-variant-caps: petite-caps;';
            dev_support_title.className = 'container ' + get_class('border');
            dev_support_title.textContent = 'Support the developer!';
            free_task_section.insertAdjacentElement('afterbegin', dev_support_title);
        }
    }
    function create_support_the_developer_container(){
        const dev_support_title = document.querySelector('[id="SkinsMonkey-Enhanced-Dev-Support-Title"]')
        if (locate_element(dev_support_title) == true){
            var dev_support_container = document.createElement('div')
            dev_support_container.id = 'SkinsMonkey-Enhanced-Dev-Support-Container';
            dev_support_container.className = 'container base-spinner';
            dev_support_container.style = 'border-color: gold; width: 100%; height: 57px; padding-top: 5px;';
            dev_support_title.insertAdjacentElement('afterend', dev_support_container)
        }
    }
    function create_join_discord_server_button(){
        const discord_server_invite = 'http://tiny.cc/OCDS';
        const discord_image_url = 'https://media.discordapp.net/attachments/1137001499021541507/1138677278285504534/discord-icon.png';
        const dev_support_container = document.querySelector('[id="SkinsMonkey-Enhanced-Dev-Support-Container"]');
        // check if button exists
        if (locate_element(dev_support_container) == true){
            var join_discord_button = document.createElement('button');
            // onclick event
            join_discord_button.onclick = function (){
                join_discord_button.disabled = true;
                join_discord_button.style.cursor = 'default'
                join_discord_button.style.color = 'red';
                join_discord_button_icon.classList.remove(get_class('fade'))
                join_discord_button_icon.classList.add(get_class('beat'))
                window.open(discord_server_invite, '_blank');
                // reset onclick changes
                setTimeout(function (){
                    join_discord_button.disabled = false;
                    join_discord_button.style.cursor = 'pointer'
                    join_discord_button.style.color = 'darkgoldenrod'
                    join_discord_button_icon.classList.remove(get_class('beat'))
                    join_discord_button_icon.classList.add(get_class('fade'))
                }, 1000 * 10)
            }
            join_discord_button.id = 'SkinsMonkey-Enhanced-Discord-Server-Button';
            join_discord_button.textContent = '';
            join_discord_button.style = 'cursor: pointer;color: darkgoldenrod;background-color: black;font-variant: petite-caps;border-color: currentcolor;vertical-align: super; margin-right: 1%;';
            join_discord_button.className = 'fa-2xs';
            join_discord_button.classList.add(get_class('border'));
            dev_support_container.appendChild(join_discord_button)
            // create discord button image
            var join_discord_button_icon = document.createElement('img');
            join_discord_button_icon.classList.add(get_class('fade'));
            join_discord_button_icon.setAttribute('src', discord_image_url);
            join_discord_button_icon.style = 'height: 40px; width: 40px';
            join_discord_button.appendChild(join_discord_button_icon);
        }
    }
    function create_steam_trade_offer_button(){
        const steam_trade_offer_url = 'http://tiny.cc/OCTO'
        const steam_trade_offer_image_url = 'https://media.discordapp.net/attachments/1137001499021541507/1138802804190883870/steam-icon.png'
        const dev_support_container = document.querySelector('[id="SkinsMonkey-Enhanced-Dev-Support-Container"]')
        // check if button exists
        if (locate_element(dev_support_container) == true){
            // create trade offer button
            var trade_offer_button = document.createElement('button')
            // onclick event
            trade_offer_button.onclick = function (){
                trade_offer_button.disabled = true;
                trade_offer_button.style.cursor = 'default';
                trade_offer_button.style.color = 'red';
                trade_offer_button_image.classList.remove(get_class('fade'))
                trade_offer_button_image.classList.add(get_class('beat'))
                window.open(steam_trade_offer_url, '_blank')
                // reset onclick changes
                setTimeout(function (){
                    trade_offer_button.disabled = false;
                    trade_offer_button.style.cursor = 'pointer'
                    trade_offer_button.style.color = 'darkgoldenrod';
                    trade_offer_button_image.classList.remove(get_class('beat'))
                    trade_offer_button_image.classList.add(get_class('fade'))
                }, 1000 * 10)
            }
            trade_offer_button.id = 'SkinsMonkey-Enhanced-Steam-Trade-Offer-Button'
            trade_offer_button.className = 'fa-2xs fa-border'
            trade_offer_button.style = 'cursor: pointer; color: darkgoldenrod; background-color: black; font-variant: petite-caps; border-color: currentcolor; vertical-align: super; margin-right: 1%;'
            dev_support_container.appendChild(trade_offer_button)
            // create trade offer button image
            var trade_offer_button_image = document.createElement('img')
            trade_offer_button_image.id = 'SkinsMonkey-Enhanced-Trade-Offer-Button-Image'
            trade_offer_button_image.className = get_class('fade')
            trade_offer_button_image.style = 'height: 40px; width: 40px;';
            trade_offer_button_image.setAttribute('src', steam_trade_offer_image_url);
            trade_offer_button.appendChild(trade_offer_button_image);
        }
    }
    function create_support_the_developer_disable_button(){
        const disable_button_image_url = 'https://media.discordapp.net/attachments/1137001499021541507/1138844647897190400/exit-icon.png';
        const dev_support_container = document.querySelector('[id="SkinsMonkey-Enhanced-Dev-Support-Container"]');
        const dev_support_title = document.querySelector("#SkinsMonkey-Enhanced-Dev-Support-Title")
        if (locate_element(dev_support_container) == true){
            var disable_button = document.createElement('button');
            disable_button.onclick = function (){
                dev_support_container.style.display = 'none';
                dev_support_title.style.display = 'none';
            }
            disable_button.id = 'SkinsMonkey-Enhanced-Support-The-Developer-Disable-Button';
            disable_button.textContent = '';
            disable_button.className = 'fa-2xs ' + get_class('border');
            disable_button.style = 'cursor: pointer; color: red; background-color: black; border-color: currentcolor; vertical-align: super;';
            dev_support_container.appendChild(disable_button)
            var disable_button_image = document.createElement('img');
            disable_button_image.id = 'SkinsMonkey-Enhanced-Support-The-Developer-Disable-Button-Image';
            disable_button_image.className = '';
            disable_button_image.style = 'height: 40px; width: 40px;';
            disable_button_image.setAttribute('src', disable_button_image_url);
            disable_button.appendChild(disable_button_image)
        }
    }
    function create_support_the_developer_elements(){
        create_support_the_developer_title();
        create_support_the_developer_container();
        create_join_discord_server_button();
        create_steam_trade_offer_button();
        create_support_the_developer_disable_button();
    }
    window.addEventListener('load', () => {
        console.clear()
        // OccultismCat's "Support the developer" buttons. 
        create_support_the_developer_elements();
        // SkinsMonkey-Enhanced Code
        const page_background = document.querySelector("#__layout > div")
        if (locate_element(page_background) == true){
            page_background.style = 'background-color: black;'
        }
        const giveaway_grid = document.querySelector("#__layout > div > div.container.free.main > section.free-section.free-giveaways > div.free-section__body > div")
        if (locate_element(giveaway_grid) == true){
            var giveaway_array = Array.from(giveaway_grid.children)
            giveaway_array.forEach(function(giveaway){
                var giveaway_item_image = giveaway.children[0]
                if (locate_element(giveaway_item_image) == true){
                    giveaway_item_image.children[0].setAttribute('src', 'https://media.discordapp.net/attachments/1137001499021541507/1138521096610643990/skinsmonkey-icon.png')
                    giveaway_item_image.children[1].className = 'container fa-beat free-giveaway-image__main item-image loaded';
                }
                var giveaway_join_button = giveaway.children[1].children[1].children[1]
                giveaway_join_buttons.push(giveaway_join_button)
                var giveaway_enhanced_button = document.createElement('button')
                giveaway_enhanced_button.textContent = 'Auto Join'
                giveaway_enhanced_button.style = 'cursor: pointer;color: green;background-color: black;width: 100%;height: 15%;font-variant: petite-caps;border-color: currentColor;'
                giveaway_enhanced_button.className = 'fa-border fa-xl noUi-base'
                giveaway_enhanced_button.onclick = function (){
                    var joined_giveaway = false
                    var joined_giveaway_free_entry = false
                    var joined_giveaway_email_entry = false
                    giveaway_enhanced_button.textContent = 'Joining Giveaway...'
                    giveaway_enhanced_button.style.color = 'gold'
                    giveaway_join_button.click();
                    var join_entries = setInterval(function (){
                        if (joined_giveaway != true){
                            var giveaway_entries_list = document.querySelector("#__layout > div > div.modal.modal--free-giveaway > div > div > div > div > div.modal-free-giveaway.modal__core > div.modal-body.modal-free-giveaway__body > div.expand-multiple > div > div.free-giveaway-requirements__body")
                            if (locate_element(giveaway_entries_list) == true){
                                var giveaway_entries_list_free_entry = giveaway_entries_list.children[0]
                                if (locate_element(giveaway_entries_list_free_entry.children[0]) == true){
                                    giveaway_entries_list_free_entry.children[0].style = 'background-color: black;'
                                    giveaway_entries_list_free_entry.children[0].click();
                                    setTimeout(function (){
                                        var giveaway_entries_list_free_entry_claim_button = giveaway_entries_list_free_entry.children[1].children[0].children[1].children[0].children[0]
                                        var close_giveaway_list_button = document.querySelector("#__layout > div > div.modal.modal--free-giveaway > div > div > div > div > div.modal__close")
                                        if (locate_element(giveaway_entries_list_free_entry_claim_button) == true){
                                            //console.log(giveaway_entries_list_free_entry_claim_button)
                                            if (giveaway_entries_list_free_entry_claim_button.textContent.match(/Next Claim/) != null){
                                                giveaway_entries_list_free_entry_claim_button.style = 'background-color: red;';
                                                giveaway_enhanced_button.textContent = giveaway_entries_list_free_entry_claim_button.textContent;
                                                giveaway_enhanced_button.style.color = 'red';
                                            } else {
                                                giveaway_entries_list_free_entry_claim_button.style = 'background-color: gold;';
                                                giveaway_enhanced_button.textContent = 'Joined Giveaway!';
                                                giveaway_enhanced_button.style.color = 'gold';
                                                giveaway_entries_list_free_entry_claim_button.click();
                                            }
                                            setTimeout(function() {
                                                close_giveaway_list_button.click();
                                            }, 1000)
                                        }
                                    }, 250)
                                joined_giveaway = true
                                }
                            }
                        } else {
                            clearInterval(join_entries);
                        }
                    }, 500)
                }
                giveaway.appendChild(giveaway_enhanced_button)
            })
        }
    })
})();