// Storage init browser.runtime.onInstalled.addListener(function() { browser.storage.sync.set({ url: "https://invidious.snopyta.org" }); }); // Url format function getVideoToken(url) { // https://regexr.com/531i0 var rx = /(?:\/|%3D|v=|vi=)([0-9A-z-_]{11})(?:[%#?&]|$)/g; var arr = rx.exec(url); return arr[1]; } function cleanToken(token) { let t = token; // https://regexr.com/531i0 t = t.replace(/^(vi=|v=)/,""); t = t.replace(/^(\/)/,""); t = t.replace(/^(%3D)/,""); t = t.replace(/(&|%)$/,""); return t; } // Links click event handling browser.runtime.onMessage.addListener(function(message) { let url = message.youtubeUrl; const name = message.targetName; browser.storage.sync.get("url").then(function(item) { const subst = item.url + `/watch?v=`; let token = getVideoToken(url) const cleanedToken = cleanToken(token) url = url.replace(/.*\/watch\?v=/gm, subst); if (name != "_self") { browser.tabs.create( {active: true, url: url} ); } else { browser.tabs.update( {url: url, loadReplace: true} ) } console.log('Youtube to invidious is redirecting you to invidious') }) });