Created
August 30, 2017 15:32
-
-
Save makazeu/86b38a981a817877eb95f49bbe6b3ce1 to your computer and use it in GitHub Desktop.
Revisions
-
makazeu created this gist
Aug 30, 2017 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,195 @@ // ==UserScript== // @name SteamRedeemKeysOld // @namespace https://gist.github.com/zyfworks/ccb12bd87f09cf49d0a3465d167bece9 // @version 1.3 // @description Steam网页激活 —— 批量激活 // @author Makazeu // @match https://store.steampowered.com/account/registerkey // @grant GM_addStyle // ==/UserScript== (function() { 'use strict'; var keyCount = 0; var failureDetail = { 14: '无效激活码', 15: '重复激活', 53: '次数上限', 13: '地区限制', 9: '已拥有', 24: '缺少主游戏', 36: '需要PS3?', 50: '这是充值码', }; var myTexts = { fail: '失败', success: '成功', network: '网络错误或超时', line: '——', nothing: '', others: '其他错误', unknown: '未知错误', redeeming: '激活中', }; 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, myTexts.fail, myTexts.network, 0, myTexts.nothing); return; }, success: function(data) { console.log(data); if (data.success == 1) { tableUpdateKey(key, myTexts.success, myTexts.line, data.purchase_receipt_info.line_items[0].packageid, data.purchase_receipt_info.line_items[0].line_item_description); return; } else if (data.purchase_result_details !== undefined && data.purchase_receipt_info) { if (!data.purchase_receipt_info.line_items[0]) { tableUpdateKey(key, myTexts.fail, failureDetail[data.purchase_result_details] ? failureDetail[data.purchase_result_details] : myTexts.unknown, 0, myTexts.nothing); } else { tableUpdateKey(key, myTexts.fail, failureDetail[data.purchase_result_details] ? failureDetail[data.purchase_result_details] : myTexts.unknown, data.purchase_receipt_info.line_items[0].packageid, data.purchase_receipt_info.line_items[0].line_item_description); } return; } tableUpdateKey(key, myTexts.fail, myTexts.others, 0, myTexts.nothing); } }); } function tableInsertKey(key) { keyCount++; var row = jQuery('<tr></tr>'); // number row.append('<td class="nobr">' + keyCount + '</td>'); //key row.append('<td class="nobr"><code>' + key + '</code></td>'); //waiting... row.append('<td colspan="3">' + myTexts.redeeming + '...</td>'); 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.indexOf(key) !== -1 && rowObject.children()[2].innerHTML.indexOf(myTexts.redeeming) !== -1) { rowObject.children()[2].remove(); // result if (result == myTexts.fail) rowObject.append('<td class="nobr" style="color:red">' + result + '</td>'); else rowObject.append('<td class="nobr" style="color:green">' + result + '</td>'); // detail rowObject.append('<td class="nobr">' + detail + '</td>'); // sub if (subId === 0) { rowObject.append('<td>——</td>'); } else { rowObject.append('<td><code>' + subId + '</code> <a href="https://steamdb.info/sub/' + subId + '/" target="_blank">' + subName + '</a></td>'); } 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( '<div class="table-responsive table-condensed">' + '<table class="table table-hover" style="display: none">' + '<caption><h2>激活记录</h2></caption><thead><th>No.</th><th>Key</th>' + '<th>结果</th><th>详情</th><th>Sub</th></thead><tbody></tbody>' + '</table></div><br>'); jQuery('.registerkey_input_box_text').parent().append('<textarea class="form-control" rows="3"' + ' id="inputKey" placeholder="支持批量激活,可以把整个网页文字复制过来' + '一次激活的数量不要超过9个,若超过则请多次激活并每次间隔半分钟"' + ' style="margin: 3px 0px 0px; width: 525px; height: 102px;"></textarea><br>'); 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('<button class="btnv6_blue_hoverfade btn_medium" id="buttonRedeem">激活!</button>'); jQuery('#register_btn').parent().append('<a tabindex="300" class="btnv6_blue_hoverfade btn_medium"' + ' id="buttonRedeem"><span>激活!</span></a>'); 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); })();