Steamgifts Giveaway Helper

Automatically apply settings when creating giveaways

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey, Greasemonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да инсталирате разширение, като например Tampermonkey .

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Userscripts.

За да инсталирате скрипта, трябва да инсталирате разширение като Tampermonkey.

За да инсталирате този скрипт, трябва да имате инсталиран скриптов мениджър.

(Вече имам скриптов мениджър, искам да го инсталирам!)

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

(Вече имам инсталиран мениджър на стиловете, искам да го инсталирам!)

// ==UserScript==
// @name         Steamgifts Giveaway Helper
// @namespace    http://tampermonkey.net/
// @version      2.0.1
// @description  Automatically apply settings when creating giveaways
// @icon         https://cdn.steamgifts.com/img/favicon.ico
// @author       Bisumaruko
// @match        https://www.steamgifts.com/giveaways/new
// @grant        none
// ==/UserScript==

const eol = "\n";
const settings = {
    type: 'key', // gift, key
    copies: 1, // The number of copies of the game you're looking to give away.
    start: 0, // GA starts in x hours, 0 = now
    end: 1, // GA ends in x hours after start, min 1 hour after start
    region: 'None', // None, China, Europe, Hong Kong, North America, RU + CIS, Saudi Arabia, SE Asia, South America
    who: 'everyone', // everyone, invite_only, groups
    level: 1, // 0 ~ 10
    description: 'Good luck!' // description
};
const atReview = !!$('form.disable-form-onclick').length;

if (!atReview) {
    // giveaway type
    $(`.form__row--giveaway-type [data-checkbox-value=${settings.type}]`).click();

    // giveaway keys
    if (settings.type === 'key') {
        const $keys = $('textarea[name=key_string]');
        const regKey = /([A-Za-z0-9]{5}-){2,4}[A-Za-z0-9]{5}/g;

        $keys.blur(() => {
            $keys.val((i, value) => value.match(regKey).join(eol));
        });
    } else {
        $('.form__row--giveaway-copies input[name=copies]').val(settings.copies);
    }

    // giveaway time
    const now = Date.now();
    const start = parseInt(settings.start, 10) || 0;
    const end = (parseInt(settings.end, 10) || 1) + start;
    const toFormat = (duration = 0) => {
        const dateObj = new Date(now + duration * 60 * 60 * 1000);
        const date = dateObj.toLocaleString('en-US', {
            year: 'numeric',
            month: 'short',
            day: 'numeric'
        });
        const time = dateObj.toLocaleString('en-GB', {
            hour12: true,
            hour: 'numeric',
            minute: '2-digit'
        });

        return `${date} ${time}`;
    };

    $('input[name=start_time]').val(toFormat(start));
    $('input[name=end_time]').val(toFormat(end));

    // giveaway region restricted
    if (settings.region === 'None') {
        $('input[name=region_restricted] ~ [data-checkbox-value=0]').click();
    } else {
        $('input[name=region_restricted] ~ [data-checkbox-value=1]').click();

        if (settings.region === 'China') {
            $('input[placeholder^=Search]').val('China').keyup();
            $('.form_list_item_summary_name:contains("China")').click();
        } else {
            $(`option:contains("${settings.region}")`).prop('selected', 'selected');
        }
    }

    // giveaway who can enter
    $(`.form__row--who-can-enter [data-checkbox-value=${settings.who}]`).click();

    // giveaway contributor level
    if (settings.level > 0) {
        const s = $('.form__slider--level');

        s.slider('value', settings.level);
        s.slider('option', 'slide').call(s, null, { value: settings.level });
    }

    // giveaway description
    if (settings.description.length > 0) {
        $('textarea[name=description]').val(settings.description);
    }
}