diff --git a/backend/app.js b/backend/app.js index 30e19b4..0f6db8c 100644 --- a/backend/app.js +++ b/backend/app.js @@ -1509,6 +1509,10 @@ async function generateArgs(url, type, options) { } } + + // filter out incompatible args + downloadConfig = filterArgs(downloadConfig, is_audio); + logger.verbose(`youtube-dl args being used: ${downloadConfig.join(',')}`); return downloadConfig; } @@ -1539,6 +1543,13 @@ async function getVideoInfoByURL(url, args = [], download = null) { }); } +function filterArgs(args, isAudio) { + const video_only_args = ['--add-metadata', '--embed-subs', '--xattrs']; + const audio_only_args = ['-x', '--extract-audio', '--embed-thumbnail']; + const args_to_remove = isAudio ? video_only_args : audio_only_args; + return args.filter(x => !args_to_remove.includes(x)); +} + // currently only works for single urls async function getUrlInfos(urls) { let startDate = Date.now(); diff --git a/chrome-extension/background.js b/chrome-extension/background.js deleted file mode 100644 index 4785a23..0000000 --- a/chrome-extension/background.js +++ /dev/null @@ -1,20 +0,0 @@ -// background.js - -// Called when the user clicks on the browser action. -chrome.browserAction.onClicked.addListener(function(tab) { - // get the frontend_url - chrome.storage.sync.get({ - frontend_url: 'http://localhost', - audio_only: false - }, function(items) { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - var activeTab = tabs[0]; - var url = activeTab.url; - if (url.includes('youtube.com')) { - var new_url = items.frontend_url + '/#/home;url=' + encodeURIComponent(url) + ';audioOnly=' + items.audio_only; - chrome.tabs.create({ url: new_url }); - } - }); - }); - -}); \ No newline at end of file diff --git a/chrome-extension/manifest.json b/chrome-extension/manifest.json index 1ecf992..bf13650 100644 --- a/chrome-extension/manifest.json +++ b/chrome-extension/manifest.json @@ -1,17 +1,17 @@ { "manifest_version": 2, "name": "YoutubeDL-Material", - "version": "0.3", + "version": "0.4", "description": "The Official Firefox & Chrome Extension of YoutubeDL-Material, an open-source and self-hosted YouTube downloader.", - "background": { - "scripts": ["background.js"] - }, "browser_action": { - "default_icon": "favicon.png" + "default_icon": "favicon.png", + "default_popup": "popup.html", + "default_title": "YoutubeDL-Material" }, "permissions": [ "tabs", - "storage" + "storage", + "contextMenus" ], "options_ui": { "page": "options.html", diff --git a/chrome-extension/popup.html b/chrome-extension/popup.html new file mode 100644 index 0000000..467925c --- /dev/null +++ b/chrome-extension/popup.html @@ -0,0 +1,35 @@ + + + + + + + + + + + + + +
+
+
+ +
+ +
+ +
+ +
+
+
+
+ + + + + \ No newline at end of file diff --git a/chrome-extension/popup.js b/chrome-extension/popup.js new file mode 100644 index 0000000..9e48758 --- /dev/null +++ b/chrome-extension/popup.js @@ -0,0 +1,50 @@ +function audioOnlyClicked() { + console.log('audio only clicked'); + var audio_only = document.getElementById("audio_only").checked; + + // save state + + chrome.storage.sync.set({ + audio_only: audio_only + }, function() {}); +} + +function downloadVideo() { + var input_url = document.getElementById("url_input").value + // get the frontend_url + chrome.storage.sync.get({ + frontend_url: 'http://localhost', + audio_only: false + }, function(items) { + var download_url = items.frontend_url + '/#/home;url=' + encodeURIComponent(input_url) + ';audioOnly=' + items.audio_only; + chrome.tabs.create({ url: download_url }); + }); +} + +function loadInputs() { + // load audio-only input + chrome.storage.sync.get({ + frontend_url: 'http://localhost', + audio_only: false + }, function(items) { + document.getElementById("audio_only").checked = items.audio_only; + }); + + // load url input + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + var activeTab = tabs[0]; + var current_url = activeTab.url; + console.log(current_url); + if (current_url && current_url.includes('youtube.com')) { + document.getElementById("url_input").value = current_url; + } + }); +} + +document.getElementById('download').addEventListener('click', + downloadVideo); + +document.getElementById('audio_only').addEventListener('click', + audioOnlyClicked); + +document.addEventListener('DOMContentLoaded', loadInputs); diff --git a/chrome-extension/youtubedl-material-chrome-extension.zip b/chrome-extension/youtubedl-material-chrome-extension.zip index 87bb073..5cbca64 100644 Binary files a/chrome-extension/youtubedl-material-chrome-extension.zip and b/chrome-extension/youtubedl-material-chrome-extension.zip differ diff --git a/chrome-extension/youtubedl-material-firefox-extension.zip b/chrome-extension/youtubedl-material-firefox-extension.zip index ebf34b8..2ff4a9e 100644 Binary files a/chrome-extension/youtubedl-material-firefox-extension.zip and b/chrome-extension/youtubedl-material-firefox-extension.zip differ