Last active
November 25, 2023 05:16
-
-
Save cocoastorm/4fd1c9ef950912d9a2deca93e4899239 to your computer and use it in GitHub Desktop.
Elfster Real Wishlist URLs
This file contains 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 characters
// ==UserScript== | |
// @name Replace Wishlist Links - elfster.com | |
// @namespace Violentmonkey Scripts | |
// @match https://www.elfster.com/profile/* | |
// @icon https://www.google.com/s2/favicons?sz=64&domain=elfster.com | |
// @version 0.1 | |
// @description strip elfster wishlist links so it doesn't die with an adblocker :skull: | |
// @author cocoastorm <[email protected]> | |
// @require https://cdn.jsdelivr.net/npm/@violentmonkey/dom@2 | |
// ==/UserScript== | |
(function() { | |
'use strict'; | |
console.log('replacing elfster links userscript is running'); | |
function parseURIComponents(path) { | |
var query = {}; | |
path.split(/[\?&]/).forEach(part => { | |
var match = part.match(/(?<key>\w+)=(?<value>.*)$/); | |
if (match && match.groups) { | |
query[match.groups.key] = match.groups.value; | |
} | |
}); | |
return query; | |
} | |
function getWishlistItems() { | |
var re = /https?:\/\/w+\.elfster.com\/v1\/links\/click\/?/i; | |
var items = document.querySelectorAll('div[idfield="wishId"] a'); | |
for (var i = 0; i < items.length; i++) { | |
var anchor = items[i]; | |
if (!(re.test(anchor.href || ''))) { | |
continue; | |
} | |
var query = parseURIComponents(anchor.href.replace(re, '')); | |
if (query && query.url) { | |
console.log('replacing product URL', anchor); | |
try { | |
var realURL = decodeURIComponent(query.url); | |
anchor.setAttribute('href', realURL); | |
anchor.href = realURL; | |
} catch (e) { | |
console.warn(e); | |
console.warn('failed to strip elfster link for', anchor); | |
} | |
} | |
} | |
if (items && items.length) { | |
return true; | |
} else { | |
console.warn('wishlist not found'); | |
} | |
} | |
VM.observe(document.body, getWishlistItems); | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment