// ==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( '
' + '' + '' + '' + '

'); 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); })();