Skip to content

Instantly share code, notes, and snippets.

@FaustVX
Last active July 10, 2024 20:45
Show Gist options
  • Save FaustVX/480c9fb00d71d50bb2faff16524e2d31 to your computer and use it in GitHub Desktop.
Save FaustVX/480c9fb00d71d50bb2faff16524e2d31 to your computer and use it in GitHub Desktop.
// ==UserScript==
// @name Amazon Gog Redeemer
// @namespace FaustVXAmazonGog
// @version 1.0
// @description Provide a link to Gog.com from Amazon Prime Games
// @author FaustVX
// @match https://gaming.amazon.com/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=gaming.amazon.com
// @grant none
// @contributionURL https://www.paypal.com/donate/?cmd=_donations&business=oria.jonathan@gmail.com&item_name=TamperMonkey+Amazon+Gog+Redeemer
// @license MIT
// @updateURL https://gist.githubusercontent.com/FaustVX/480c9fb00d71d50bb2faff16524e2d31/raw/AmazonGogRedeemer.js
// @downloadURL https://gist.githubusercontent.com/FaustVX/480c9fb00d71d50bb2faff16524e2d31/raw/AmazonGogRedeemer.js
// @installURL https://gist.githubusercontent.com/FaustVX/480c9fb00d71d50bb2faff16524e2d31/raw/AmazonGogRedeemer.js
// @supportURL https://gist.github.com/FaustVX/480c9fb00d71d50bb2faff16524e2d31#comments
// ==/UserScript==
function run() {
'use strict';
const urlSplit = window.location.href.split('/');
const domainName = urlSplit[2].split('.');
function changeHref(query) {
return function (a) {
const urlParams = new URLSearchParams(a.search);
const url = urlParams.get(query);
a.href = decodeURIComponent(url);
}
}
function changeTag(node, tag) {
const clone = createElement(tag)
for (const attr of node.attributes) {
clone.setAttributeNS(null, attr.name, attr.value)
}
while (node.firstChild) {
clone.appendChild(node.firstChild)
}
node.replaceWith(clone)
return clone
}
function createElement(tag) {
return document.createElementNS(tag === 'svg' ? 'http://www.w3.org/2000/svg' : 'http://www.w3.org/1999/xhtml', tag)
}
function execute(i, url, selectorAll, foreach) {
if (domainName[i] === url) {
document.querySelectorAll(selectorAll).forEach(foreach);
return true;
}
return false;
}
execute(1, "amazon", 'button[data-a-target="copy-code"] span[data-a-target="tw-button-text"]:not(:has(a))', function(s) {
const href = "https://www.gog.com/redeem/" + s.parentNode.parentNode.parentNode.parentNode.previousSibling.lastChild.lastChild.attributes.value.textContent;
const a = createElement('a');
a.href = href;
a.innerHTML = "Redeem on Gog";
a.style="color:white";
a.target="_blank";
s.replaceWith(a)
})
};
function runWhenReady(callback) {
const tryNow = function() {
try {
callback();
} catch { }
setTimeout(tryNow, 250);
};
tryNow();
}
runWhenReady(run);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment