From 46fd45bbaadac397dd85bab4f8b87c9a8e857f19 Mon Sep 17 00:00:00 2001 From: Raphael Mutschler Date: Fri, 22 Mar 2024 17:35:45 +0100 Subject: [PATCH 1/6] new: options to use folder or file-prefix by video hostname --- src/background.js | 30 ++++++++++++++++++++---------- src/options.html | 6 ++++++ src/options.js | 20 +++++++++++++++++++- 3 files changed, 45 insertions(+), 11 deletions(-) diff --git a/src/background.js b/src/background.js index cb4156e..2294da2 100644 --- a/src/background.js +++ b/src/background.js @@ -13,7 +13,7 @@ chrome.runtime.onInstalled.addListener(function () { }); }); -function sendVideoUrlToMetube(videoUrl, metubeUrl, format, callback) { +function sendVideoUrlToMetube(videoUrl, metubeUrl, format, advancedSettings, callback) { console.log("Sending videoUrl=" + videoUrl + " to metubeUrl=" + metubeUrl); if (typeof callback !== 'function') { @@ -21,17 +21,27 @@ function sendVideoUrlToMetube(videoUrl, metubeUrl, format, callback) { }; } + let {hostname} = new URL(videoUrl) + + let postData = { + "quality": "best", + "format": format, + "url": videoUrl + } + + Object.keys(advancedSettings).forEach((key) => { + if (advancedSettings[key]) { + postData[key] = hostname.startsWith('www.') ? hostname.replace('www.', '') : hostname + } + }) + fetch(metubeUrl + "/add", { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, - body: JSON.stringify({ - "quality": "best", - "format": format, - "url": videoUrl - }) + body: JSON.stringify(postData) }) .then(response => response.json()) .then(function (response) { @@ -43,7 +53,7 @@ function sendVideoUrlToMetube(videoUrl, metubeUrl, format, callback) { } chrome.contextMenus.onClicked.addListener(function (item, tab) { - chrome.storage.sync.get(['metube', 'contextMenuClickBehavior', 'defaultFormat'], function (data) { + chrome.storage.sync.get(['metube', 'contextMenuClickBehavior', 'defaultFormat', 'advancedSettings'], function (data) { if (data === undefined || !data.hasOwnProperty('metube') || data.metube === "") { openTab(chrome.runtime.getURL('options.html'), tab); return @@ -51,7 +61,7 @@ chrome.contextMenus.onClicked.addListener(function (item, tab) { let needToSwitch = (data.contextMenuClickBehavior === 'context-menu-send-current-url-and-switch'); - sendVideoUrlToMetube(item.linkUrl, data.metube, data.defaultFormat, function () { + sendVideoUrlToMetube(item.linkUrl, data.metube, data.defaultFormat, data.advancedSettings, function () { if (needToSwitch) { openTab(data.metube, tab); } @@ -60,7 +70,7 @@ chrome.contextMenus.onClicked.addListener(function (item, tab) { }); chrome.action.onClicked.addListener(function (tab) { - chrome.storage.sync.get(['metube', 'clickBehavior', 'defaultFormat'], function (data) { + chrome.storage.sync.get(['metube', 'clickBehavior', 'defaultFormat', 'advancedSettings'], function (data) { if (data === undefined || !data.hasOwnProperty('metube') || data.metube === "") { openTab(chrome.runtime.getURL('options.html'), tab); return @@ -79,7 +89,7 @@ chrome.action.onClicked.addListener(function (tab) { }, function (tabs) { // use this tab to get the youtube video URL let videoUrl = tabs[0].url; - sendVideoUrlToMetube(videoUrl, data.metube, data.defaultFormat, function () { + sendVideoUrlToMetube(videoUrl, data.metube, data.defaultFormat, data.advancedSettings, function () { if (!needToSwitch) { openTab(data.metube, tab); } diff --git a/src/options.html b/src/options.html index 5a2e70d..f8759f4 100644 --- a/src/options.html +++ b/src/options.html @@ -54,6 +54,12 @@

+

Advanced Settings:

+
+
+
+
+

Additional sites

Youtube-dl support many another sites except youtube. You can add mask url's of this sites in textfield bellow but it can affect performance and we have not tested them support