您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
IndieGala Bundle tool kits
// ==UserScript== // @name IndieGala_GetKey&Gift // @namespace http://tampermonkey.net/ // @version 1.12 // @description IndieGala Bundle tool kits // @icon https://www.indiegala.com/favicon.ico // @author lenceliu,TalesYuan // @match https://www.indiegala.com/profile* // @match https://www.indiegala.com/gift* // @match https://www.indiegala.com/game?game_id=* // ==/UserScript== $ = unsafeWindow.jQuery; var ShowGetSteamLink = true; var reg_replace=/,\s*|\|\s*/g; unsafeWindow.getbundle = function (section) { var result = ''; var gametitle = ''; var gamekey = ''; var gamegiftlink = ''; var giftpsw = ''; var giftboughtdate = ''; var giftarray = []; var steamurl = ''; var bundletitle = ''; var bundleid = ''; var count = 0; //clearbox(); if (location.href.indexOf('profile') > - 1) { var bundleroot = document.getElementById('collapseBundles'); if (bundleroot.getAttribute('aria-expanded') == 'true') { //获得Bundle所有分类 bundleslist = document.getElementById('accordion2').children; for (var i = 0; i < bundleslist.length; i++) { //获得Bundle分类名称 var collapse = bundleslist[i].children[0].getElementsByTagName('a') [0].hash.substring(1); //获得当前分类 bundletype = document.getElementById(collapse); //判断当前分类是否展开 if (bundletype.getAttribute('aria-expanded') == 'true') { //获得当前分类下的所有bundle bundles = bundletype.getElementsByClassName('panel-heading'); for (var j = 0; j < bundles.length; j++) { //判断当前bundle是否展开 if (bundles[j].getElementsByTagName('a') [0].getAttribute('aria-expanded') == 'true') { if (collapse == 'collapseGiveaway') { bundletitle = 'Giveaways'; } else { bundletitle = bundles[j].getElementsByTagName('a') [0].innerText; } bundleid = bundles[j].getElementsByTagName('a') [0].hash.substring(1); bundle = document.getElementById(bundleid); if (section == 'key') { var allkeys = bundle.getElementsByClassName('game-key-string'); for (var m = 0; m < allkeys.length; m++) { gametitle = allkeys[m].getElementsByClassName('game-steam-url') [0].innerText.replace(reg_replace,'_'); steamurl = allkeys[m].getElementsByClassName('game-steam-url') [0].href; /*散key有三种状态 1. 未获得key也未生成礼物 class="info_key_text" 2. 已获得key class="input-block-level margin text_align_center keys" .value 3. 已生成礼物但未被claim class="keyfield give-gift-link" .getElementsByTagName('a').href 4. 礼物已被claim class="span-key steam-btn" .innerText */ var class_giftlink = 'keyfield give-gift-link'; var class_giftlink1 = 'keyfield .give-gift-link'; var class_key = 'input-block-level margin text_align_center keys'; var keysection = allkeys[m].getElementsByClassName('span-key steam-btn') [0]; var key = allkeys[m].getElementsByClassName(class_key) [0]; var gift = allkeys[m].getElementsByClassName(class_giftlink) [0]; var gift1 = allkeys[m].getElementsByClassName(class_giftlink1) [0]; if (keysection.children.length === 0) { gamekey = keysection.innerText; } else if (key !== undefined && key.value !== '') { gamekey = key.value; } else if (gift !== undefined) { gamekey = gift.children[0].href; } else if (gift1 !== undefined) { gamekey = gift1.children[0].href; } else { gamekey = '激活码或礼物链接尚未生成'; } //判断是否要导出游戏名称 if (name_switcher.checked) { result = result + gametitle + ', ' + gamekey + '\n'; } else { result = result + gamekey + '\n'; } count++; } } else if (section == 'gift') { var allgifts = bundle.getElementsByClassName('gift-links-box'); { for (var m = 0; m < allgifts.length; m++) { gametitle = allgifts[m].getElementsByClassName('title_gift_in') [0].getElementsByTagName('a') [0].innerText.replace(reg_replace,'_'); gamegiftlink = allgifts[m].getElementsByClassName('title_gift_in') [0].getElementsByTagName('a') [0].href; if (allgifts[m].getElementsByClassName('gift-psw')[0] !== undefined) { giftpsw = allgifts[m].getElementsByClassName('gift-psw')[0].innerText; } else { giftpsw = 'No PASSWORD'; } giftarray[m] = { _bundletitle:bundletitle.trim(), _gametitle: gametitle, _gamegiftlink: gamegiftlink, _giftpsw: giftpsw, //_giftboughtdate: getDate(giftboughtdate) }; count++; } if (name_switcher.checked) { for (var n = 0; n < giftarray.length; n++) { result = result + giftarray[n]._bundletitle + ', ' + giftarray[n]._gamegiftlink + ', ' + '密码:' + giftarray[n]._giftpsw + '\n'; } } else { for (var n = 0; n < giftarray.length; n++) { result = result + giftarray[n]._gamegiftlink + ', ' + '密码:' + giftarray[n]._giftpsw + '\n'; } } } } // break; } else { } } } else { } } } } else if (location.href.indexOf('gift') > - 1) { bundletitle = document.getElementById('indie_gala_2').children[0].children[0].innerText.substring(2); bundle = document.getElementById('steam-key'); var allkeys = bundle.getElementsByClassName('game-key-string'); for (var m = 0; m < allkeys.length; m++) { gametitle = allkeys[m].getElementsByClassName('game-steam-url') [0].innerText.replace(reg_replace,'_'); steamurl = allkeys[m].getElementsByClassName('game-steam-url') [0].href; /*散key有三种状态 1. 未获得key也未生成礼物 class="info_key_text" 2. 已获得key class="input-block-level margin text_align_center keys" .value 3. 已生成礼物但未被claim class="keyfield give-gift-link" .getElementsByTagName('a').href 4. 礼物已被claim class="span-key steam-btn" .innerText */ var class_giftlink = 'keyfield give-gift-link'; var class_giftlink1 = 'keyfield .give-gift-link'; var class_key = 'input-block-level margin text_align_center keys'; var keysection = allkeys[m].getElementsByClassName('span-key steam-btn') [0]; var key = allkeys[m].getElementsByClassName(class_key) [0]; var gift = allkeys[m].getElementsByClassName(class_giftlink) [0]; var gift1 = allkeys[m].getElementsByClassName(class_giftlink1) [0]; if (keysection.children.length === 0) { gamekey = keysection.innerText; } else if (key !== undefined && key.value !== '') { gamekey = key.value; } else if (gift !== undefined) { gamekey = gift.children[0].href; } else if (gift1 !== undefined) { gamekey = gift1.children[0].href; } else { gamekey = '激活码或礼物链接尚未生成'; } //判断是否要导出游戏名称 if (name_switcher.checked) { result = result + gametitle + ', ' + gamekey + '\n'; // result = result + bundletitle + ', ' + gamekey + '\n'; } else { result = result + gamekey + '\n'; } count++; } } if (bundletitle === '') shownote(); giftmessage.value = result; bundletitlebox.innerHTML = '<P><Strong>' + 'Indiegala - ' + bundletitle + '</Strong> </P>'; statusbox.innerHTML = '<P><Strong>' + '提取数量: ' + count + '</Strong> </P>'; }; unsafeWindow.getDate = function (strDate) { var st = strDate; var a = st.split(' '); var b = a[0].split('/'); var c = a[1].split(':'); var date = new Date(b[2], b[0], b[1], c[0], c[1], c[2]); return date; }; unsafeWindow.sortByField = function (x, y) { return x._giftboughtdate - y._giftboughtdate; }; unsafeWindow.clearbox = function clearbox() { giftmessage.value = ''; bundletitle = ''; bundletitlebox.innerHTML = '<P><Strong>' + 'Indiegala - ' + bundletitle + '</Strong> </P>'; statusbox.innerHTML = '<P><Strong>' + '提取数量: ' + '0' + '</Strong> </P>'; $('#giftmessage').show(); }; unsafeWindow.getlink = function () { var result = ''; // var allElements = []; var bundletitle = ''; var bundleid = ''; var gametitle = ''; var gamelink = ''; var count = 0; var bundleroot = document.getElementById('collapseBundles'); if (location.href.indexOf('gift_id') > - 1) { bundletitle = document.getElementById('indie_gala_2').children[0].children[0].innerText.substring(2); bundle = document.getElementById('steam-key'); var allkeys = bundle.getElementsByClassName('game-key-string'); for (var n = 0; n < allkeys.length; n++) { gametitle = allkeys[n].getElementsByClassName('span-title') [0].getElementsByTagName('a') [0].innerText.replace(reg_replace,'_'); gamelink = allkeys[n].getElementsByClassName('span-title') [0].getElementsByTagName('a') [0].href; result = result + '<P>' + (n + 1) + ', ' + '<a target="_blank" class="game-steam-url" href="' + gamelink + '">' + gametitle + '</a>' + ', ' + gamelink + '</P>'; count++; } } else if (bundleroot.getAttribute('aria-expanded') == 'true') { bundleslist = document.getElementById('accordion2').children; for (var i = 0; i < bundleslist.length; i++) { //获得Bundle分类名称 var collapse = bundleslist[i].children[0].getElementsByTagName('a') [0].hash.substring(1); //获得当前分类 bundletype = document.getElementById(collapse); //判断当前分类是否展开 if (bundletype.getAttribute('aria-expanded') == 'true') { //获得当前分类下的所有bundle bundles = bundletype.getElementsByClassName('panel-heading'); for (var j = 0; j < bundles.length; j++) { //判断当前bundle是否展开 if (bundles[j].getElementsByTagName('a') [0].getAttribute('aria-expanded') == 'true') { bundleid = bundles[j].getElementsByTagName('a') [0].hash.substring(1); bundle = document.getElementById(bundleid); var allkeys = bundle.getElementsByClassName('game-key-string'); for (var n = 0; n < allkeys.length; n++) { if (collapse == 'collapseGiveaway') { bundletitle = 'Giveaways'; index = j; } else { bundletitle = bundles[j].getElementsByTagName('a') [0].innerText; index = n; } gametitle = allkeys[n].getElementsByClassName('span-title') [0].getElementsByTagName('a') [0].innerText.replace(reg_replace,'_'); gamelink = allkeys[n].getElementsByClassName('span-title') [0].getElementsByTagName('a') [0].href; result = result + '<P>' + (index + 1) + ', ' + '<a target="_blank" class="game-steam-url" href="' + gamelink + '">' + gametitle + '</a>' + ', ' + gamelink + '</P>'; count++; } } } } else { } } } if (bundletitle === '') shownote(); bundletitlebox.innerHTML = '<P><Strong>' + 'Indiegala - ' + bundletitle + '</Strong> </P>'; statusbox.innerHTML = result; $('#statusbox').append('<P><Strong>' + '提取数量: ' + count + '</Strong> </P>'); }; var flg0=1; var interval=0; var waiting; unsafeWindow.autoConfirm = function () { btn=document.getElementById('autoConfirm'); btn.innerText="CDKEY获取中..."; waiting = setInterval(function () { gekey(); }, 100); }; var num = 0; unsafeWindow.gekey = function() { // var result = ''; // var allElements = []; // var bundletitle = ''; // var bundleid = ''; // var gametitle = ''; // var gamelink = ''; // var count = 0; var bundleroot = document.getElementById('collapseBundles'); if (location.href.indexOf('gift_id') > - 1) { if(flg0) { flg0=0; items=document.getElementsByClassName('span-key steam-btn'); item = items[num].children; try { button=item[5]; button.click(); } catch(e) { flg0=1; //alert(e); } num += 1; if (num >= items.length) { clearInterval(waiting) ; num=0; btn=document.getElementById('autoConfirm'); btn.innerText="自动获取CDKEY";} } } else if (bundleroot.getAttribute('aria-expanded') == 'true') { var bundle_expanded=false; bundleslist = document.getElementById('accordion2').children; for (var i = 0; i < bundleslist.length; i++) { //获得Bundle分类名称 var collapse = bundleslist[i].children[0].getElementsByTagName('a') [0].hash.substring(1); //获得当前分类 bundletype = document.getElementById(collapse); //判断当前分类是否展开 if (bundletype.getAttribute('aria-expanded') == 'true') { //获得当前分类下的所有bundle bundles = bundletype.getElementsByClassName('panel-heading'); for (var j = 0; j < bundles.length; j++) { //判断当前bundle是否展开 if (bundles[j].getElementsByTagName('a') [0].getAttribute('aria-expanded') == 'true') { bundle_expanded=true; bundleid = bundles[j].getElementsByTagName('a') [0].hash.substring(1); bundle = document.getElementById(bundleid); if(flg0) { flg0=0; items = bundle.getElementsByClassName('span-key steam-btn'); item = items[num].children; try { button=item[5]; button.click(); } catch(e) { flg0=1; //alert(e); } num += 1; if (num >= items.length) { clearInterval(waiting); num=0; btn=document.getElementById('autoConfirm'); btn.innerText="自动获取CDKEY"; } } } } } else { } } if (!bundle_expanded) { clearInterval(waiting) ; num=0; btn=document.getElementById('autoConfirm'); btn.innerText="自动获取CDKEY"; shownote(); } } }; unsafeWindow.fn_fetchserial = function (code, steam_url, target) { //function fn_fetchserial(code, steam_url, target){ if (globalAjaxSemaphore == true) { return; } //if (!confirm("Are you sure you want to discover the serial? You won't be able to create a permalink of it or trade it!")) { return; } var gameId = get_game_id_from_steam_url(steam_url); $.ajax({ type: "GET", url: '/myserials/syncget', dataType: "json", data: { code: code, cache: false, productId: gameId, }, beforeSend: function (jqXHR, settings){; $("#permbutton_"+code).hide(); $("#fetchlink_"+code).hide(); $("#info_key_"+code).hide(); $("#fetching_"+code).fadeIn(); start_steam_req(code); }, success: function(data,textStatus){ end_steam_req(code); // alert(data.serial_number); $(target).parent().prev().find('.btn-convert-to-trade').remove(); $("#serial_n_"+code).val(data.serial_number); $("#fetching_"+code).hide(); $("#info_key_"+code).hide(); $("#serial_"+code).fadeIn(); //alert('success'); flg0=1; }, error: function (xhr, ajaxOptions, thrownError){ alert(data); end_steam_req(code); num -= 1; flg0=1; }, }); //} }; unsafeWindow.shownote = function () { if (!$('#note').is(':visible')) { $('#note').css({ display: 'block', top: '-100px' }).animate({ top: '+200' }, 500, function () { setTimeout(out, 3000); }); } }; unsafeWindow.out = function () { $('#note').animate({ top: '0' }, 500, function () { $(this).css({ display: 'none', top: '-100px' }); }); }; $('#header-title').after('<div id="mainbox" class="account-settings" style="margin-top: 10px; mini-height:220px;margin-bottom: 0px;text-align:left;"></div>'); $('#mainbox').append('<div id="buttonbox" style="margin-top: 10px; margin-bottom: 10px;align:left;"></div>'); $('#mainbox').append('<div id="bundletitlebox" style="margin-top: 10px; margin-bottom: 0px;"></div>'); $('#mainbox').append('<div id="keybox" style="margin-top: 10px; margin-bottom: 0px;"></div>'); $('#mainbox').append('<div id="statusbox" style="margin-top: 10px; margin-bottom: 0px;"></div>'); $('#buttonbox').append('<button onclick="getbundle(\'key\')" class="order-button-profile">复制CDKEY</button> '); if (location.href.indexOf('profile') > - 1) { $('#buttonbox').append('<button onclick="getbundle(\'gift\')" class="order-button-profile">复制礼物链接</button>'); } if (ShowGetSteamLink) { $('#buttonbox').append('<button onclick="getlink()" class="order-button-profile">复制Steam链接</button>'); } $('#buttonbox').append('<button id="autoConfirm" onclick="autoConfirm()" class="order-button-profile">自动提取CDKEY</button>'); $('#buttonbox').append('<button onclick="clearbox()" class="order-button-profile">重置</button>'); $('#buttonbox').append('</br><label style="margin-top: 10px;margin-right: 10px;"><input id="name_switcher" type="checkbox" name="checkbox" checked>包含游戏名称</label>'); if (location.href.indexOf('profile') > - 1) { $('#buttonbox').append('<label style="margin-top: 10px;margin-right: 10px;"><input id="date_switcher" style="" type="checkbox" name="checkbox" unchecked>礼物链接按购买时间排序</label>'); } $('#keybox').append('<textarea rows="15" cols="80" name="message" id="giftmessage" style="height:200px;width:100%;");></textarea>'); var internalStyleSheet = document.createElement('style'); internalStyleSheet.setAttribute('type', 'text/css'); internalStyleSheet.textContent = '\n' + '#note{position:absolute;width:200px;padding:20px;background:#2E2E2E;border:1px solid #ccc;left:45%;z-index:9999;display:none;} ' + '\n' + '\n'; document.getElementsByTagName('head') [0].appendChild(internalStyleSheet); var note = document.createElement('div'); note.setAttribute('id', 'note'); note.setAttribute('style', 'color:#999999'); note.innerHTML = '请展开要提取的慈善包'; document.getElementsByTagName('body') [0].appendChild(note); clearbox();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址