diff --git a/base/script.js b/base/script.js index 29c1581..e9e2637 100644 --- a/base/script.js +++ b/base/script.js @@ -18,32 +18,49 @@ const CONTEXT_MENU_ID = "STAMMTV_ADD_URL_TO_PLAYLIST"; chrome.contextMenus.removeAll(function () { chrome.contextMenus.create({ title: "Zu StammTV Playlist hinzufügen...", - contexts: ["link"], + contexts: ["link", "video"], id: CONTEXT_MENU_ID }); }); -function parseYoutubeURL(url) { - const YOUTUBE_URL_REGEX = /^https?:\/\/(?:www\.)?youtu(?:\.be\/|be\.com\/watch\?v=|be\.com\/shorts\/)([^#&?]*)(?:[?&]t=\d+)?.*/; +function addToStammTVHandler(info, tab) { - let match = url.match(YOUTUBE_URL_REGEX); - return (match && match[1].length === 11) ? match[1] : false; -} + const YOUTUBE_URL_REGEX = /^https?:\/\/(?:www\.)?youtu(?:\.be\/|be\.com\/watch\?v=|be\.com\/shorts\/)([^#&?]*)(?:[?&]t=\d+)?.*/; + const INVIDIOUS_API_REGEX = /^https:\/\/inv\.theresno.cloud\/latest_version\?.*id=([a-zA-Z0-9_/-]{11}).*/; + const INVIDIOUS_VIDEO_URL_REGEX = /^https:\/\/inv\.theresno.cloud\/watch\?v=([a-zA-Z0-9_/-]{11}).*/; + function parseYoutubeURL(url) { + let ytMatch = url.match(YOUTUBE_URL_REGEX); + if (ytMatch && ytMatch[1].length === 11) { + return ytMatch[1]; + } + let apiMatch = url.match(INVIDIOUS_API_REGEX); + if (apiMatch && apiMatch[1].length === 11) { + return apiMatch[1]; + } + let invMatch = url.match(INVIDIOUS_VIDEO_URL_REGEX); + if (invMatch && invMatch[1].length === 11) { + return invMatch[1]; + } + return false; + } -function addToStammTVHandler(info, tab) { if (info.menuItemId === CONTEXT_MENU_ID) { //if OUR menu item was clicked console.log('clicked!'); - let videoId = parseYoutubeURL(info.linkUrl); - if (videoId) { + let videoURL = info.linkUrl ? info.linkUrl : info.srcUrl; + if (videoURL) { let websocket; chrome.storage.local.get('wssURL', function (result) { if (result.wssURL) { + if (parseYoutubeURL(videoURL)) { + videoURL = 'https://inv.theresno.cloud/latest_version?id=' + parseYoutubeURL(videoURL) + } + websocket = new WebSocket(result.wssURL); const playerReady = {"type": "playerReady"}; - const setVideo = {type: "setVideo", video: videoId,}; + const setVideo = {type: "setVideo", video: videoURL}; websocket.onopen = function () { console.log('[open] Connection established'); diff --git a/chrome/manifest.json b/chrome/manifest.json index 4b21c51..75e01d2 100644 --- a/chrome/manifest.json +++ b/chrome/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 3, "name": "StammTV Helper", - "version": "1.4", + "version": "1.5", "action": { "default_popup": "popup/popup.html" }, diff --git a/firefox/manifest.json b/firefox/manifest.json index bec14bf..f6b92b7 100644 --- a/firefox/manifest.json +++ b/firefox/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "StammTV Helper", - "version": "1.4", + "version": "1.5", "browser_action": { "default_title": "StammTV Context-Menu", "default_popup": "popup/popup.html"