您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Retrieve keys from Bundle Stars
当前为
- // ==UserScript==
- // @name Bundle Stars Keys Retrieve
- // @namespace http://tampermonkey.net/
- // @version 1.0
- // @description Retrieve keys from Bundle Stars
- // @icon https://cdn.bundlestars.com/production/brand/apple-touch-icon-180x180.png
- // @author Bisumaruko
- // @include http*://*bundlestars.com/en/orders/*
- // @grant none
- // ==/UserScript==
- (function() {
- 'use strict';
- var anchor = document.querySelector('h2'),
- BSRetrive = document.createElement('div'),
- BSTextarea = document.createElement('textarea'),
- BSBtnContainer = document.createElement('div'),
- BSBtnReveal = document.createElement('button'),
- BSBtnRetrieve = document.createElement('button'),
- BSBtnCopy = document.createElement('button'),
- BSBtnReset = document.createElement('button'),
- BSCheckTitle = document.createElement('label'),
- BSCheckJoin = document.createElement('label'),
- style = document.createElement('style');
- BSRetrive.classList.add('BSRetrive');
- BSTextarea.classList.add('BSTextarea');
- BSBtnContainer.classList.add('BSBtnContainer');
- BSBtnReveal.classList.add('BSBtnReveal');
- BSBtnReveal.textContent = 'Reveal';
- BSBtnRetrieve.classList.add('BSBtnRetrieve');
- BSBtnRetrieve.textContent = 'Retrieve';
- BSBtnCopy.classList.add('BSBtnCopy');
- BSBtnCopy.textContent = 'Copy';
- BSBtnReset.classList.add('BSBtnReset');
- BSBtnReset.textContent = 'Reset';
- BSCheckTitle.innerHTML = '<input type="checkbox" class="BSCheckTitle">Include Game Title';
- BSCheckJoin.innerHTML = '<input type="checkbox" class="BSCheckJoin">Join Keys';
- style.type = 'text/css';
- style.innerHTML = `
- .BSRetrive {
- width: 100%;
- height: 200px;
- display: flex;
- flex-direction: column;
- box-sizing: border-box;
- border: 1px solid #424242;
- color: #999999;
- }
- .BSTextarea {
- width: 100%;
- height: 150px;
- border: none;
- background-color: #303030;
- color: #DDD;
- box-sizing: border-box;
- resize: none;
- }
- .BSBtnContainer {
- width: 100%;
- display: flex;
- padding-top: 5px;
- flex-grow: 1;
- box-sizing: border-box;
- }
- .BSBtnContainer > button {
- height: 34px;
- margin-right: 10px;
- padding: 6px 12px;
- border: 1px solid transparent;
- background-color: #262626;
- color: #dedede;
- box-sizing: border-box;
- outline: none;
- cursor: pointer;
- }
- .BSBtnContainer > button:hover {
- color: #A8A8A8;
- }
- .BSBtnContainer > label {
- margin-right: 10px;
- color: #dedede;
- }
- `;
- BSBtnReveal.addEventListener('click', () => {
- var keys = document.querySelectorAll('a[ng-click^="redeemSerial"]');
- for (let key of keys) {
- if (key.parentNode.classList.contains('ng-hide')) continue;
- if (!key.closest('td').classList.contains('key-container')) continue;
- key.click();
- }
- });
- BSBtnRetrieve.addEventListener('click', () => {
- var keys = [],
- containers = document.querySelectorAll('td.key-container'),
- separator = document.querySelector('.BSCheckJoin').checked ? ',' : "\n";
- for (let container of containers) {
- let title = container.previousElementSibling.textContent.trim(),
- key = container.querySelector('input').value.trim();
- if (document.querySelector('.BSCheckTitle').checked) key = title + ', ' + key;
- keys.push(key);
- }
- BSTextarea.textContent = keys.join(separator);
- });
- BSBtnCopy.addEventListener('click', () => {
- BSTextarea.select();
- document.execCommand('copy');
- });
- BSBtnReset.addEventListener('click', () => {
- BSTextarea.textContent = '';
- });
- document.head.appendChild(style);
- BSBtnContainer.appendChild(BSBtnReveal);
- BSBtnContainer.appendChild(BSBtnRetrieve);
- BSBtnContainer.appendChild(BSBtnCopy);
- BSBtnContainer.appendChild(BSBtnReset);
- BSBtnContainer.appendChild(BSCheckTitle);
- BSBtnContainer.appendChild(BSCheckJoin);
- BSRetrive.appendChild(BSTextarea);
- BSRetrive.appendChild(BSBtnContainer);
- anchor.parentNode.insertBefore(BSRetrive, anchor);
- })();