// ==UserScript==
// @name SteamRedeemKeys
// @namespace https://gist.github.com/zyfworks/ccb12bd87f09cf49d0a3465d167bece9
// @version 1.2
// @description Steam网页激活 —— 批量激活
// @author Makazeu
// @match https://store.steampowered.com/account/registerkey
// @grant GM_addStyle
// @downloadURL none
// ==/UserScript==
(function() {
'use strict';
var keyCount = 0;
var failureDetail = {
14: '无效激活码',
15: '重复激活',
53: '次数上限',
13: '地区限制',
9: '已拥有',
24: '缺少主游戏',
36: '需要PS3',
50: '这是钱包码',
};
function redeemKey(key) {
jQuery.ajax({
url: 'https://store.steampowered.com/account/ajaxregisterkey/',
data: {
product_key: key,
sessionid: g_sessionID
},
type: 'post',
dataType: 'json',
timeout: 150000,
beforeSend: function(){
if (jQuery('table').is(':hidden')) {
jQuery('table').fadeIn();
}
tableInsertKey(key);
},
complete: function() {
jQuery('#buttonRedeem').fadeIn();
jQuery('#inputKey').removeAttr('disabled');
},
error: function() {
tableUpdateKey(key, '失败', '网络错误或超时', 0, '-');
return;
},
success: function(data) {
console.log(data);
if (data.success == 1) {
tableUpdateKey(key, '成功', '——',
data.purchase_receipt_info.line_items[0].packageid,
data.purchase_receipt_info.line_items[0].line_item_description.substring(0, 47));
return;
} else if (data.purchase_result_details !== undefined && data.purchase_receipt_info) {
if (!data.purchase_receipt_info.line_items[0]) {
tableUpdateKey(key, '失败',
failureDetail[data.purchase_result_details] ? failureDetail[data.purchase_result_details] : '未知错误',
0, '');
} else {
tableUpdateKey(key, '失败',
failureDetail[data.purchase_result_details] ? failureDetail[data.purchase_result_details] : '未知错误',
data.purchase_receipt_info.line_items[0].packageid,
data.purchase_receipt_info.line_items[0].line_item_description.substring(0, 47));
}
return;
}
tableUpdateKey(key, '成功', '其他错误', 0, '-');
}
});
}
function tableInsertKey(key) {
keyCount++;
var row = jQuery('
');
// number
row.append('' + keyCount + ' ');
//key
row.append('' + key + '
');
//waiting...
row.append('\u6FC0\u6D3B\u4E2D\uFF0C\u8BF7\u7A0D\u5019... ');
jQuery('tbody').prepend(row);
}
function tableUpdateKey(key, result, detail, subId, subName) {
var rowObjects = jQuery('tr');
for (var i = 1; i < rowObjects.length; i++) {
var rowElement = rowObjects[i];
var rowObject = jQuery(rowElement);
if (rowObject.children()[1].innerHTML.includes(key) &&
rowObject.children()[2].innerHTML.includes('激活中')) {
rowObject.children()[2].remove();
// result
if (result == '失败') rowObject.append('' + result + ' ');
else rowObject.append('' + result + ' ');
// detail
rowObject.append('' + detail + ' ');
// sub
if (subId === 0) {
rowObject.append('—— ');
} else {
rowObject.append('' + subId + '
' + subName + ' ');
}
break;
}
}
}
function getKeysByRE(text) {
text = text.trim().toUpperCase();
var reg = new RegExp('([0-9,A-Z]{5}-){2,4}[0-9,A-Z]{5}', 'g');
var keys = [];
var result = void 0;
while (result = reg.exec(text)) {
keys.push(result[0]);
}
return keys;
}
function redeemKeys() {
var keys = getKeysByRE(jQuery('#inputKey').val().trim());
if (keys.length <= 0) {
return;
}
jQuery('#buttonRedeem').fadeOut();
jQuery('#inputKey').attr('disabled', 'disabled');
keys.forEach(function (key) {
redeemKey(key);
});
}
jQuery('#registerkey_examples_text').html(
'' +
'
' +
'激活记录 No. Key ' +
'结果 详情 Sub ' +
'
');
jQuery('.registerkey_input_box_text').parent().append(' ');
jQuery('.registerkey_input_box_text').fadeOut();
jQuery('#purchase_confirm_ssa').fadeOut();
//jQuery('#register_btn').removeAttr('href').attr('href', 'javascript:redeemKeys()');
//jQuery('#register_btn').parent().append('激活! ');
jQuery('#register_btn').parent().append('激活! ');
jQuery('#register_btn').remove();
jQuery('#buttonRedeem').click(function() {
redeemKeys();
});
var style = `
table a {
color: pink;
}
td {
white-space: nowrap;
overflow: hidden;
}
code {
padding:2px 4px;
font-size:90%;
color:#c7254e;
background-color:#f9f2f4;
border-radius:3px
}
`;
GM_addStyle(style);
})();