browser-extension/extension/script.js

76 lines
1.7 KiB
JavaScript
Raw Normal View History

/*
content script running on youtube.com
*/
let browserType = getBrowser();
// boilerplate to dedect browser type api
function getBrowser() {
if (typeof chrome !== "undefined") {
if (typeof browser !== "undefined") {
console.log("detected firefox");
return browser;
} else {
console.log("detected chrome");
return chrome;
}
} else {
console.log("failed to dedect browser");
throw "browser detection error"
};
}
2022-05-31 08:45:25 +00:00
function detectUrlType(url) {
const videoRe = new RegExp(/^https:\/\/(www\.)?(youtube.com\/watch\?v=|youtu\.be\/)[\w-]{11}/);
2022-05-31 08:45:25 +00:00
if (videoRe.test(url)) {
return "video"
}
const channelRe = new RegExp(/^https:?\/\/www\.?youtube.com\/c|channel|user\/[\w-]+(\/|featured|videos)?$/);
2022-05-31 08:45:25 +00:00
if (channelRe.test(url)) {
return "channel"
}
const playlistRe = new RegExp(/^https:\/\/(www\.)?youtube.com\/playlist\?list=/);
if (playlistRe.test(url)) {
return "playlist"
}
return false
}
function sendUrl() {
2022-05-31 08:45:25 +00:00
let url = document.URL
let urlType = detectUrlType(url);
if (urlType == false) {
console.log("not relevant")
return
}
let payload = {
"youtube": {
2022-05-31 08:45:25 +00:00
"url": url,
"title": document.title,
"type": urlType,
}
}
console.log("youtube link: " + JSON.stringify(payload));
browserType.runtime.sendMessage(payload, function(response) {
console.log(response.farewell);
});
};
document.addEventListener("yt-navigate-finish", function (event) {
setTimeout(function(){
sendUrl();
return false;
}, 2000);
});