🏠 Home 

Steamgifts GA creator

Allows creation of multiple GAs at the same time


Install this script?
// ==UserScript==
// @name         Steamgifts GA creator
// @namespace    http://akhanubis.com/
// @version      0.1.2
// @description  Allows creation of multiple GAs at the same time
// @author       Pablo Bianciotto
// @match        http://www.steamgifts.com/giveaways/new
// @grant        none
// ==/UserScript==
/* jshint -W097 */
'use strict';
var form = $('.form__submit-button.js__submit-form').closest('form');
if ($('input[name="next_step"][value="2"]').length) console.log("Steamgifts GA creator initializing"); else return;
if (!form.find('#games_textarea').length) {
var not_found = [];
var game;
var games = [];
var next = function(last_not_found) {
if (last_not_found) not_found.push(game.name)
game = games.shift();
if (game) {
if (game.gift) {
form.find('[data-checkbox-value="gift"]').click();
form.find('input[name="copies"]').val(game.gift);
}
else {
form.find('[data-checkbox-value="key"]').click();
form.find('textarea[name="key_string"]').val(game.key).trigger('keyup');
}
form.find('.js__autocomplete-name').val(game.name).trigger('keyup');
}
else {
if (not_found.length) alert("Games not found: " + not_found); else alert('All games found');
}
};
var reverse_regex = function() {
return form.find('#reverse_regex').hasClass('is-selected');
};
var grouped_games = function() {
return form.find('#group_games').hasClass('is-selected');
};
var group_games = function() {
var grouped = {};
$.each(games, function(i, e) {
var group_key = e.name + '__' + e.gift;
if (grouped[group_key]) {
grouped[group_key].key = grouped[group_key].key.concat("\n" + e.key);
grouped[group_key].gift += e.gift;
}
else grouped[group_key] = e;
});
games = $.map(grouped, function(o) { return o; });
};
$(document).on('ajaxSuccess.batch', function(e, xhr, settings) {
if (settings.data.match(/do\=autocomplete_game/)) {
var r###lt = JSON.parse(xhr.responseText).html.match('<div data-autocomplete-id=\"(\\d+)\" data-autocomplete-name=\"' + game.name + '\"');
if (r###lt) {
form.find('.js__autocomplete-id').val(r###lt[1]);
form[0].submit();
next();
}
else next(true);
}
});
form.attr('target', '_blank');
form.find('.form__rows').prepend('\
<div class="form__row">\
<div class="form__heading">\
<div class="form__heading__number">0.</div>\
<div class="form__heading__text">Games</div>\
</div>\
<div class="form__row__indent">\
<div class="form__input-description">\
1 game per line. Example:\
<br/>\
QWERT-ASDFG-YUIOP Fallout 4\
<br/>\
ZXCVB-MNBVC-YUIOP Fallout 3\
<br/>\
GIFT Fallout: New Vegas\
</div>\
<textarea value="" id="games_textarea" />\
<div id="group_games" class="form__checkbox ">\
<i class="form__checkbox__default fa fa-circle-o"></i>\
<i class="form__checkbox__hover fa fa-circle"></i>\
<i class="form__checkbox__selected fa fa-check-circle"></i>\
Group GAs for same game\
</div>\
<div id="reverse_regex" class="form__checkbox ">\
<i class="form__checkbox__default fa fa-circle-o"></i>\
<i class="form__checkbox__hover fa fa-circle"></i>\
<i class="form__checkbox__selected fa fa-check-circle"></i>\
%GAME% %KEY% if checked, %KEY% %GAME% if unchecked\
</div>\
<div class="form__submit-button" id="load_games">\
<i class="fa fa-arrow-circle-right"></i>\
Load games\
</div>\
</div>\
</div>');
form.find('#group_games, #reverse_regex').on('click', function() {
$(this).toggleClass('is-selected');
});
form.find('#load_games').on('click', function(e) {
e.preventDefault();
not_found = [];
games = $.map(form.find('#games_textarea').val().split("\n"), function(line) {
var r###lt, o;
line = line.trim();
if (reverse_regex()) {
r###lt = line.match(/^(.+)\s+(\S+)$/);
o = { name: r###lt[1], key: r###lt[2] };
}
else {
r###lt = line.match(/^(\S+)\s+(.+)$/);
o = { name: r###lt[2], key: r###lt[1] };
}
return $.extend(o, { gift: (o.key.match(/^GIFT$/i)) ? 1 : 0 });
});
if (grouped_games()) group_games();
next();
});
console.log("Steamgifts GA creator initialized");
}