49 lines
1.2 KiB
JavaScript
49 lines
1.2 KiB
JavaScript
|
// 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')
|
||
|
})
|
||
|
});
|