75fed20b17
Now, there will be no more "false positives". The click listener will only be on youtube links.
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.url;
|
|
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: false}
|
|
)
|
|
}
|
|
console.log('Youtube to invidious is redirecting you to invidious')
|
|
})
|
|
}); |