You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
1.7 KiB
JavaScript

2 years ago
const CONTEXT_MENU_ID = "STAMMTV_ADD_URL_TO_PLAYLIST";
const YOUTUBE_URL_REGEX = /^(?:https?:\/\/(?:www\.)?youtu(?:\.be\/|be\.com\/watch\?v=|be\.com\/shorts\/)){1}([^#&?]*)(?:[?&]t=\d+)?.*/;
let WEBSOCKET_URL = "";
let websocket;
chrome.storage.local.get('wssURL', function (result) {
WEBSOCKET_URL = result.wssURL;
});
chrome.contextMenus.create({
title: "Zu StammTV Playlist hinzufügen...",
contexts: ["link"],
id: CONTEXT_MENU_ID
});
chrome.contextMenus.onClicked.addListener(addToStammTV);
function parseYoutubeURL(url) {
let match = url.match(YOUTUBE_URL_REGEX);
return (match && match[1].length === 11) ? match[1] : false;
}
function addToStammTV(info, tab) {
if (info.menuItemId === CONTEXT_MENU_ID) { //if OUR menu item was clicked
let videoId = parseYoutubeURL(info.linkUrl)
if (videoId) {
const playerReady = {"type":"playerReady"};
const setVideo = {
type: "setVideo",
video: videoId,
};
console.log(websocket);
if (websocket === undefined
|| websocket.readyState !== WebSocket.OPEN) {
websocket = new WebSocket(WEBSOCKET_URL);
console.log('websocket created');
}
websocket.onopen = function () {
console.log('websocket ready');
websocket.send(JSON.stringify(playerReady));
websocket.send(JSON.stringify(setVideo));
console.log(setVideo);
};
setTimeout(function () {
websocket.close();
console.log('websocket closed');
}, 1000);
} else {
console.error('o(一︿一+)o not a valid videoId');
}
}
}