(function() { // 'use strict'; function isShareLink(url) { // test if input is a share link, return True or False const regex = /https:\/\/youtu\.be\/[A-Za-z0-9\_-]+\?si=.+/i; const isShareLink = regex.test(url); return(isShareLink) } function cleanUrl(url){ // clean tracker from URL if it is a share link if (isShareLink(url)) { // replace tracker portion with empty string const cleanedUrl = url.replace(/\?si=[^&]+&?/, ""); return(cleanedUrl) } // return original url if it is not a share link return(url) } function sleep(ms) { // sleep for half a second return new Promise(resolve => setTimeout(resolve, ms)); } async function onMouseUp() { // delay clipboard read slightly because of page script nonsense await sleep(500); let clipText = await navigator.clipboard.readText(); let newText = cleanUrl(clipText); if (clipText !== newText) { const newClip = await navigator.clipboard.writeText(newText); console.log("Modified clipboard with cleaned share link: %o", newText); } else { console.log("Share link not detected, clipboard contents unmodified."); } // discard clipboard data clipText = undefined; newText = undefined; } // run whenever MOUSE1 is released document.addEventListener('mouseup', onMouseUp, false); })();