youtube-to-invidious/background.js

49 lines
1.2 KiB
JavaScript
Raw Normal View History

2022-07-15 13:46:52 +00:00
// 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;
2022-07-15 13:46:52 +00:00
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);
2022-07-15 13:46:52 +00:00
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')
2022-07-15 13:46:52 +00:00
})
});