From c8f62f6d19e5d6035bf3c7cf9b15152dd540a730 Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Thu, 20 Jan 2022 23:45:57 +0200 Subject: [PATCH 01/25] fix window position save spam (and also window position being forgotten on maximizing) --- index.js | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/index.js b/index.js index 07801d58..999b7e8a 100644 --- a/index.js +++ b/index.js @@ -142,22 +142,44 @@ function createMainWindow() { win.on("closed", onClosed); win.on("move", () => { + if (win.isMaximized()) return; let position = win.getPosition(); - config.set("window-position", { x: position[0], y: position[1] }); + lateSave("window-position", { x: position[0], y: position[1] }); }); + let winWasMaximized; + win.on("resize", () => { const windowSize = win.getSize(); - config.set("window-maximized", win.isMaximized()); - if (!win.isMaximized()) { - config.set("window-size", { + const isMaximized = win.isMaximized(); + if (winWasMaximized !== isMaximized) { + winWasMaximized = isMaximized; + config.set("window-maximized", isMaximized); + console.log('set window-maximized to ', isMaximized) // DELETE + } + if (!isMaximized) { + lateSave("window-size", { width: windowSize[0], height: windowSize[1], }); } }); + let savedTimeout = { + "window-position": null, + "window-siza": null + } + function lateSave(key, value) { + if (savedTimeout[key]) clearTimeout(savedTimeout[key]); + + savedTimeout[key] = setTimeout(() => { + config.set(key, value); + console.log('saving ', key, value); // DELETE + savedTimeout[key] = null; + }, 1000) + } + win.webContents.on("render-process-gone", (event, webContents, details) => { showUnresponsiveDialog(win, details); }); From a744a2ebde426e1c2ef430d08505b6c8bcfc62f3 Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Fri, 21 Jan 2022 00:01:14 +0200 Subject: [PATCH 02/25] fix window position save spam --- index.js | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/index.js b/index.js index 07801d58..51fa1b33 100644 --- a/index.js +++ b/index.js @@ -143,21 +143,37 @@ function createMainWindow() { win.on("move", () => { let position = win.getPosition(); - config.set("window-position", { x: position[0], y: position[1] }); + lateSave("window-position", { x: position[0], y: position[1] }); }); + let winWasMaximized; + win.on("resize", () => { const windowSize = win.getSize(); - config.set("window-maximized", win.isMaximized()); - if (!win.isMaximized()) { - config.set("window-size", { + const isMaximized = win.isMaximized(); + if (winWasMaximized !== isMaximized) { + winWasMaximized = isMaximized; + config.set("window-maximized", isMaximized); + } + if (!isMaximized) { + lateSave("window-size", { width: windowSize[0], height: windowSize[1], }); } }); + let savedTimeouts = {}; + function lateSave(key, value) { + if (savedTimeouts[key]) clearTimeout(savedTimeouts[key]); + + savedTimeouts[key] = setTimeout(() => { + config.set(key, value); + savedTimeouts[key] = undefined; + }, 1000) + } + win.webContents.on("render-process-gone", (event, webContents, details) => { showUnresponsiveDialog(win, details); }); From 28b6d9959933b86e59e9095c967c1b2ec4a524f5 Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Fri, 21 Jan 2022 00:05:05 +0200 Subject: [PATCH 03/25] lint --- index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/index.js b/index.js index 6e67fc6d..632839d9 100644 --- a/index.js +++ b/index.js @@ -172,7 +172,6 @@ function createMainWindow() { savedTimeouts[key] = setTimeout(() => { config.set(key, value); savedTimeouts[key] = undefined; - }, 1000) } From 315048722f750af11438128f4445ae278550955f Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Sat, 22 Jan 2022 18:07:47 +0200 Subject: [PATCH 04/25] update electron to 16.0.7 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index f6bfebb6..ea3e8c04 100644 --- a/package.json +++ b/package.json @@ -99,7 +99,7 @@ "ytpl": "^2.2.3" }, "devDependencies": { - "electron": "^16.0.5", + "electron": "^16.0.7", "electron-builder": "^22.10.5", "electron-devtools-installer": "^3.1.1", "electron-icon-maker": "0.0.5", diff --git a/yarn.lock b/yarn.lock index 257c24dd..30a2445a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3144,10 +3144,10 @@ electron-updater@^4.6.3: lodash.isequal "^4.5.0" semver "^7.3.5" -electron@^16.0.5: - version "16.0.5" - resolved "https://registry.yarnpkg.com/electron/-/electron-16.0.5.tgz#16394c196e42215a82da1f4f39a3f757caf33cb1" - integrity sha512-TgQXWmEGQ3uH2P2JDq5GyJDEu/fimRgqp1iNisARtGreU1k3630PqWlR+4SPnSEHN9NuSv92ng6NWxtefeFzxg== +electron@^16.0.7: + version "16.0.7" + resolved "https://registry.yarnpkg.com/electron/-/electron-16.0.7.tgz#87eaccd05ab61563d3c17dfbad2949bba7ead162" + integrity sha512-/IMwpBf2svhA1X/7Q58RV+Nn0fvUJsHniG4TizaO7q4iKFYSQ6hBvsLz+cylcZ8hRMKmVy5G1XaMNJID2ah23w== dependencies: "@electron/get" "^1.13.0" "@types/node" "^14.6.2" From 74b67c3d338e80782d940e6b02a19ed00a828817 Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Thu, 20 Jan 2022 22:54:19 +0200 Subject: [PATCH 05/25] fix restart app on config change option --- config/index.js | 7 +++++++ config/plugins.js | 11 +++++++++-- index.js | 6 ------ menu.js | 32 ++++++++++++++++---------------- plugins/discord/menu.js | 6 +++--- plugins/downloader/menu.js | 6 +++--- plugins/notifications/utils.js | 4 ++-- plugins/precise-volume/front.js | 4 ++-- plugins/precise-volume/menu.js | 4 ++-- plugins/shortcuts/menu.js | 4 ++-- plugins/video-toggle/menu.js | 4 ++-- providers/app-controls.js | 6 ++++++ 12 files changed, 54 insertions(+), 40 deletions(-) create mode 100644 providers/app-controls.js diff --git a/config/index.js b/config/index.js index c77e4d00..cf33369e 100644 --- a/config/index.js +++ b/config/index.js @@ -1,11 +1,17 @@ const defaultConfig = require("./defaults"); const plugins = require("./plugins"); const store = require("./store"); +const { restart } = require("../providers/app-controls"); const set = (key, value) => { store.set(key, value); }; +function setMenuOption(key, value) { + set(key, value); + if (store.get("options.restartOnConfigChanges")) restart(); +} + const get = (key) => { return store.get(key); }; @@ -14,6 +20,7 @@ module.exports = { defaultConfig, get, set, + setMenuOption, edit: () => store.openInEditor(), watch: (cb) => { store.onDidChange("options", cb); diff --git a/config/plugins.js b/config/plugins.js index 7a73335c..b8c00f83 100644 --- a/config/plugins.js +++ b/config/plugins.js @@ -1,4 +1,5 @@ const store = require("./store"); +const { restart } = require("../providers/app-controls"); function getEnabled() { const plugins = store.get("plugins"); @@ -24,16 +25,21 @@ function setOptions(plugin, options) { }); } +function setMenuOptions(plugin, options) { + setOptions(plugin, options); + if (store.get("options.restartOnConfigChanges")) restart(); +} + function getOptions(plugin) { return store.get("plugins")[plugin]; } function enable(plugin) { - setOptions(plugin, { enabled: true }); + setMenuOptions(plugin, { enabled: true }); } function disable(plugin) { - setOptions(plugin, { enabled: false }); + setMenuOptions(plugin, { enabled: false }); } module.exports = { @@ -42,5 +48,6 @@ module.exports = { enable, disable, setOptions, + setMenuOptions, getOptions, }; diff --git a/index.js b/index.js index 07801d58..f12d6ddc 100644 --- a/index.js +++ b/index.js @@ -307,12 +307,6 @@ app.on("ready", () => { mainWindow = createMainWindow(); setApplicationMenu(mainWindow); - if (config.get("options.restartOnConfigChanges")) { - config.watch(() => { - app.relaunch(); - app.exit(); - }); - } setUpTray(app, mainWindow); // Autostart at login diff --git a/menu.js b/menu.js index 0a62249b..394f05c7 100644 --- a/menu.js +++ b/menu.js @@ -68,7 +68,7 @@ const mainMenuTemplate = (win) => { type: "checkbox", checked: config.get("options.autoUpdates"), click: (item) => { - config.set("options.autoUpdates", item.checked); + config.setMenuOption("options.autoUpdates", item.checked); }, }, { @@ -76,7 +76,7 @@ const mainMenuTemplate = (win) => { type: "checkbox", checked: config.get("options.resumeOnStart"), click: (item) => { - config.set("options.resumeOnStart", item.checked); + config.setMenuOption("options.resumeOnStart", item.checked); }, }, { @@ -84,7 +84,7 @@ const mainMenuTemplate = (win) => { type: "checkbox", checked: config.get("options.removeUpgradeButton"), click: (item) => { - config.set("options.removeUpgradeButton", item.checked); + config.setMenuOption("options.removeUpgradeButton", item.checked); }, }, ...(is.windows() || is.linux() @@ -94,7 +94,7 @@ const mainMenuTemplate = (win) => { type: "checkbox", checked: config.get("options.hideMenu"), click: (item) => { - config.set("options.hideMenu", item.checked); + config.setMenuOption("options.hideMenu", item.checked); if (item.checked && !config.get("options.hideMenuWarned")) { dialog.showMessageBox(win, { type: 'info', title: 'Hide Menu Enabled', @@ -114,7 +114,7 @@ const mainMenuTemplate = (win) => { type: "checkbox", checked: config.get("options.startAtLogin"), click: (item) => { - config.set("options.startAtLogin", item.checked); + config.setMenuOption("options.startAtLogin", item.checked); }, }, ] @@ -127,8 +127,8 @@ const mainMenuTemplate = (win) => { type: "radio", checked: !config.get("options.tray"), click: () => { - config.set("options.tray", false); - config.set("options.appVisible", true); + config.setMenuOption("options.tray", false); + config.setMenuOption("options.appVisible", true); }, }, { @@ -137,8 +137,8 @@ const mainMenuTemplate = (win) => { checked: config.get("options.tray") && config.get("options.appVisible"), click: () => { - config.set("options.tray", true); - config.set("options.appVisible", true); + config.setMenuOption("options.tray", true); + config.setMenuOption("options.appVisible", true); }, }, { @@ -147,8 +147,8 @@ const mainMenuTemplate = (win) => { checked: config.get("options.tray") && !config.get("options.appVisible"), click: () => { - config.set("options.tray", true); - config.set("options.appVisible", false); + config.setMenuOption("options.tray", true); + config.setMenuOption("options.appVisible", false); }, }, { type: "separator" }, @@ -157,7 +157,7 @@ const mainMenuTemplate = (win) => { type: "checkbox", checked: config.get("options.trayClickPlayPause"), click: (item) => { - config.set("options.trayClickPlayPause", item.checked); + config.setMenuOption("options.trayClickPlayPause", item.checked); }, }, ], @@ -179,7 +179,7 @@ const mainMenuTemplate = (win) => { type: "checkbox", checked: config.get("options.disableHardwareAcceleration"), click: (item) => { - config.set("options.disableHardwareAcceleration", item.checked); + config.setMenuOption("options.disableHardwareAcceleration", item.checked); }, }, { @@ -187,7 +187,7 @@ const mainMenuTemplate = (win) => { type: "checkbox", checked: config.get("options.restartOnConfigChanges"), click: (item) => { - config.set("options.restartOnConfigChanges", item.checked); + config.setMenuOption("options.restartOnConfigChanges", item.checked); }, }, { @@ -195,7 +195,7 @@ const mainMenuTemplate = (win) => { type: "checkbox", checked: config.get("options.autoResetAppCache"), click: (item) => { - config.set("options.autoResetAppCache", item.checked); + config.setMenuOption("options.autoResetAppCache", item.checked); }, }, { type: "separator" }, @@ -316,7 +316,7 @@ async function setProxy(item, win) { }, win); if (typeof output === "string") { - config.set("options.proxy", output); + config.setMenuOption("options.proxy", output); item.checked = output !== ""; } else { //user pressed cancel item.checked = !item.checked; //reset checkbox diff --git a/plugins/discord/menu.js b/plugins/discord/menu.js index 49a087d6..5bdf1f59 100644 --- a/plugins/discord/menu.js +++ b/plugins/discord/menu.js @@ -1,4 +1,4 @@ -const { setOptions } = require("../../config/plugins"); +const { setMenuOptions } = require("../../config/plugins"); const { edit } = require("../../config"); const { clear, connect, registerRefresh, isConnected } = require("./back"); @@ -26,7 +26,7 @@ module.exports = (win, options, refreshMenu) => { checked: options.activityTimoutEnabled, click: (item) => { options.activityTimoutEnabled = item.checked; - setOptions('discord', options); + setMenuOptions('discord', options); }, }, { @@ -35,7 +35,7 @@ module.exports = (win, options, refreshMenu) => { checked: options.listenAlong, click: (item) => { options.listenAlong = item.checked; - setOptions('discord', options); + setMenuOptions('discord', options); }, }, { diff --git a/plugins/downloader/menu.js b/plugins/downloader/menu.js index 2f2df421..893283c6 100644 --- a/plugins/downloader/menu.js +++ b/plugins/downloader/menu.js @@ -6,7 +6,7 @@ const is = require("electron-is"); const ytpl = require("ytpl"); const chokidar = require('chokidar'); -const { setOptions } = require("../../config/plugins"); +const { setMenuOptions } = require("../../config/plugins"); const { sendError } = require("./back"); const { defaultMenuDownloadLabel, getFolder, presets, setBadge } = require("./utils"); @@ -48,7 +48,7 @@ module.exports = (win, options) => { }); if (result) { options.downloadFolder = result[0]; - setOptions("downloader", options); + setMenuOptions("downloader", options); } // else = user pressed cancel }, }, @@ -59,7 +59,7 @@ module.exports = (win, options) => { type: "radio", click: () => { options.preset = preset; - setOptions("downloader", options); + setMenuOptions("downloader", options); }, checked: options.preset === preset || presets[preset] === undefined, })), diff --git a/plugins/notifications/utils.js b/plugins/notifications/utils.js index 34c73a77..7cb9e61e 100644 --- a/plugins/notifications/utils.js +++ b/plugins/notifications/utils.js @@ -1,4 +1,4 @@ -const { setOptions } = require("../../config/plugins"); +const { setMenuOptions } = require("../../config/plugins"); const path = require("path"); const { app } = require("electron"); const fs = require("fs"); @@ -15,7 +15,7 @@ module.exports.icons = { module.exports.setOption = (options, option, value) => { options[option] = value; - setOptions("notifications", options) + setMenuOptions("notifications", options) } module.exports.urgencyLevels = [ diff --git a/plugins/precise-volume/front.js b/plugins/precise-volume/front.js index 33c9e8c1..a21e0234 100644 --- a/plugins/precise-volume/front.js +++ b/plugins/precise-volume/front.js @@ -1,7 +1,7 @@ const { ipcRenderer } = require("electron"); const { globalShortcut } = require('@electron/remote'); -const { setOptions } = require("../../config/plugins"); +const { setOptions, setMenuOptions } = require("../../config/plugins"); function $(selector) { return document.querySelector(selector); } let api; @@ -41,7 +41,7 @@ function firstRun(options) { for (option in newOptions) { options[option] = newOptions[option]; } - setOptions("precise-volume", options); + setMenuOptions("precise-volume", options); }); } diff --git a/plugins/precise-volume/menu.js b/plugins/precise-volume/menu.js index c3d56f8f..74f7b14a 100644 --- a/plugins/precise-volume/menu.js +++ b/plugins/precise-volume/menu.js @@ -1,5 +1,5 @@ const { enabled } = require("./back"); -const { setOptions } = require("../../config/plugins"); +const { setMenuOptions } = require("../../config/plugins"); const prompt = require("custom-electron-prompt"); const promptOptions = require("../../providers/prompt-options"); @@ -11,7 +11,7 @@ function changeOptions(changedOptions, options, win) { if (enabled()) { win.webContents.send("setOptions", changedOptions); } else { // Fallback to usual method if disabled - setOptions("precise-volume", options); + setMenuOptions("precise-volume", options); } } diff --git a/plugins/shortcuts/menu.js b/plugins/shortcuts/menu.js index 20f21233..df9db161 100644 --- a/plugins/shortcuts/menu.js +++ b/plugins/shortcuts/menu.js @@ -1,4 +1,4 @@ -const { setOptions } = require("../../config/plugins"); +const { setMenuOptions } = require("../../config/plugins"); const prompt = require("custom-electron-prompt"); const promptOptions = require("../../providers/prompt-options"); @@ -20,7 +20,7 @@ function setOption(options, key = null, newValue = null) { options[key] = newValue; } - setOptions("shortcuts", options); + setMenuOptions("shortcuts", options); } // Helper function for keybind prompt diff --git a/plugins/video-toggle/menu.js b/plugins/video-toggle/menu.js index a73407ca..fb539405 100644 --- a/plugins/video-toggle/menu.js +++ b/plugins/video-toggle/menu.js @@ -1,4 +1,4 @@ -const { setOptions } = require("../../config/plugins"); +const { setMenuOptions } = require("../../config/plugins"); module.exports = (win, options) => [ { @@ -7,7 +7,7 @@ module.exports = (win, options) => [ checked: options.forceHide, click: item => { options.forceHide = item.checked; - setOptions("video-toggle", options); + setMenuOptions("video-toggle", options); } } ]; diff --git a/providers/app-controls.js b/providers/app-controls.js new file mode 100644 index 00000000..9faded69 --- /dev/null +++ b/providers/app-controls.js @@ -0,0 +1,6 @@ +const app = require("electron").app || require('@electron/remote').app; + +module.exports.restart = () => { + app.relaunch(); + app.exit(); +}; From 766bd378fd9cd1c333e49d6cdb111b1af2da94ff Mon Sep 17 00:00:00 2001 From: Diab Neiroukh Date: Wed, 26 Jan 2022 15:58:50 +0000 Subject: [PATCH 06/25] Use `center` alignment for lyrics text This seems to be the case for most music applications [that I've used] and also provides the benefit of "fixing" how lyrics appear in RTL languages (such as Arabic). --- plugins/lyrics-genius/style.css | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/lyrics-genius/style.css b/plugins/lyrics-genius/style.css index 1966b67b..3b02cafb 100644 --- a/plugins/lyrics-genius/style.css +++ b/plugins/lyrics-genius/style.css @@ -9,4 +9,5 @@ #contents.genius-lyrics { font-size: 1vw; opacity: 0.9; + text-align: center; } From 1248f1c8ec96a48402905b40713fcf5735d7821f Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Thu, 27 Jan 2022 09:58:50 +0200 Subject: [PATCH 07/25] add single instance lock option --- index.js | 20 ++++++++++++++++---- menu.js | 29 +++++++++++++++++++++-------- 2 files changed, 37 insertions(+), 12 deletions(-) diff --git a/index.js b/index.js index 8360f147..c8022891 100644 --- a/index.js +++ b/index.js @@ -26,6 +26,22 @@ unhandled({ process.env.NODE_OPTIONS = ""; const app = electron.app; +// Prevent window being garbage collected +let mainWindow; +autoUpdater.autoDownload = false; + +if(config.get("options.singleInstanceLock")){ + const gotTheLock = app.requestSingleInstanceLock(); + if (!gotTheLock) app.quit(); + + app.on('second-instance', () => { + if (!mainWindow) return; + if (mainWindow.isMinimized()) mainWindow.restore(); + if (!mainWindow.isVisible()) mainWindow.show(); + mainWindow.focus(); + }); +} + app.commandLine.appendSwitch( "js-flags", // WebAssembly flags @@ -54,10 +70,6 @@ require("electron-debug")({ showDevTools: false //disable automatic devTools on new window }); -// Prevent window being garbage collected -let mainWindow; -autoUpdater.autoDownload = false; - let icon = "assets/youtube-music.png"; if (process.platform == "win32") { icon = "assets/generated/icon.ico"; diff --git a/menu.js b/menu.js index 0a62249b..0344a2bb 100644 --- a/menu.js +++ b/menu.js @@ -87,6 +87,19 @@ const mainMenuTemplate = (win) => { config.set("options.removeUpgradeButton", item.checked); }, }, + { + label: "Single instance lock", + type: "checkbox", + checked: config.get("options.singleInstanceLock"), + click: (item) => { + config.set("options.singleInstanceLock", item.checked); + if (item.checked && !app.hasSingleInstanceLock()) { + app.requestSingleInstanceLock(); + } else if (!item.checked && app.hasSingleInstanceLock()) { + app.releaseSingleInstanceLock(); + } + }, + }, ...(is.windows() || is.linux() ? [ { @@ -166,14 +179,14 @@ const mainMenuTemplate = (win) => { { label: "Advanced options", submenu: [ - { - label: "Proxy", - type: "checkbox", - checked: !!config.get("options.proxy"), - click: (item) => { - setProxy(item, win); - }, - }, + { + label: "Proxy", + type: "checkbox", + checked: !!config.get("options.proxy"), + click: (item) => { + setProxy(item, win); + }, + }, { label: "Disable hardware acceleration", type: "checkbox", From 03e27519db83161db1dbf539b8554e144d085299 Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Thu, 27 Jan 2022 22:16:25 +0200 Subject: [PATCH 08/25] discord set inactivity timeout prompt --- package.json | 2 +- plugins/discord/menu.js | 25 +++++++++++++++++++++---- yarn.lock | 8 ++++---- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 15be4d6e..ea3e3515 100644 --- a/package.json +++ b/package.json @@ -89,7 +89,7 @@ "async-mutex": "^0.3.2", "browser-id3-writer": "^4.4.0", "chokidar": "^3.5.2", - "custom-electron-prompt": "^1.4.0", + "custom-electron-prompt": "^1.4.1", "custom-electron-titlebar": "^3.2.10", "discord-rpc": "^3.2.0", "electron-better-web-request": "^1.0.1", diff --git a/plugins/discord/menu.js b/plugins/discord/menu.js index 49a087d6..812fc704 100644 --- a/plugins/discord/menu.js +++ b/plugins/discord/menu.js @@ -1,5 +1,6 @@ const { setOptions } = require("../../config/plugins"); -const { edit } = require("../../config"); +const prompt = require("custom-electron-prompt"); +const promptOptions = require("../../providers/prompt-options"); const { clear, connect, registerRefresh, isConnected } = require("./back"); let hasRegisterred = false; @@ -39,9 +40,25 @@ module.exports = (win, options, refreshMenu) => { }, }, { - label: "Set timeout time in config", - // open config.json - click: edit, + label: "Set inactivity timeout", + click: () => setInactivityTimeout(win, options), }, ]; }; + +async function setInactivityTimeout(win, options) { + let output = await prompt({ + title: 'Set Inactivity Timeout', + label: 'Enter inactivity timeout in seconds:', + value: Math.round((options.activityTimoutTime ?? 0) / 1e3), + type: "counter", + counterOptions: { minimum: 0, multiFire: true }, + width: 450, + ...promptOptions() + }, win) + + if (output) { + options.activityTimoutTime = Math.round(output * 1e3); + setOptions("discord", options); + } +} diff --git a/yarn.lock b/yarn.lock index 8a13251d..f9c869d2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2686,10 +2686,10 @@ cssstyle@^2.3.0: dependencies: cssom "~0.3.6" -custom-electron-prompt@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/custom-electron-prompt/-/custom-electron-prompt-1.4.0.tgz#04d261372807b87ec07ed12e990306d5debd5667" - integrity sha512-tqDa3yDILVI3xxwNRW1m2fyQgdMYtFcnl1d3uMx8Tt6sQ9zG+Y4n/ie4VbttQaq7dJvFCu9K3JX65K8hfaSf1g== +custom-electron-prompt@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/custom-electron-prompt/-/custom-electron-prompt-1.4.1.tgz#79adc3d5cd9a372e5dfe43b21de70f0fe7d1c2f7" + integrity sha512-bR6JhEusBxKnooXfFFlIIUhDbF23eaDhaYwvqcw3ZTcdEzzJew63+ilwhIwD7flRAO+sCroaLwP495VBexHg/A== custom-electron-titlebar@^3.2.10: version "3.2.10" From 02081d82724019a31ba923c19df2b37e0027cbea Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Sun, 23 Jan 2022 01:05:22 +0200 Subject: [PATCH 09/25] fix precise-volume hud positioning --- plugins/precise-volume/front.js | 19 ++++++++++++++++++- plugins/video-toggle/front.js | 13 ++++--------- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/plugins/precise-volume/front.js b/plugins/precise-volume/front.js index 33c9e8c1..a5356dec 100644 --- a/plugins/precise-volume/front.js +++ b/plugins/precise-volume/front.js @@ -1,7 +1,7 @@ const { ipcRenderer } = require("electron"); const { globalShortcut } = require('@electron/remote'); -const { setOptions } = require("../../config/plugins"); +const { setOptions, isEnabled } = require("../../config/plugins"); function $(selector) { return document.querySelector(selector); } let api; @@ -13,6 +13,8 @@ module.exports = (options) => { }, { once: true, passive: true }) }; +module.exports.moveVolumeHud = moveVolumeHud; + /** Restore saved volume and setup tooltip */ function firstRun(options) { if (typeof options.savedVolume === "number") { @@ -34,6 +36,11 @@ function firstRun(options) { injectVolumeHud(noVid); if (!noVid) { setupVideoPlayerOnwheel(options); + if (!isEnabled('video-toggle')) { + //video-toggle handles hud positioning on its own + const videoMode = () => api.getPlayerResponse().videoDetails?.musicVideoType !== 'MUSIC_VIDEO_TYPE_ATV'; + $("video").addEventListener("srcChanged", () => moveVolumeHud(videoMode())); + } } // Change options from renderer to keep sync @@ -61,6 +68,16 @@ function injectVolumeHud(noVid) { } } +let hudMoveTimeout; +function moveVolumeHud(showVideo) { + clearTimeout(hudMoveTimeout); + const volumeHud = $('#volumeHud'); + if (!volumeHud) return; + hudMoveTimeout = setTimeout(() => { + volumeHud.style.top = showVideo ? `${($('ytmusic-player').clientHeight - $('video').clientHeight) / 2}px` : 0; + }, 250) +} + let hudFadeTimeout; function showVolumeHud(volume) { diff --git a/plugins/video-toggle/front.js b/plugins/video-toggle/front.js index 1c35ce4a..1226f640 100644 --- a/plugins/video-toggle/front.js +++ b/plugins/video-toggle/front.js @@ -1,6 +1,8 @@ const { ElementFromFile, templatePath } = require("../utils"); -const { setOptions } = require("../../config/plugins"); +const { setOptions, isEnabled } = require("../../config/plugins"); + +const moveVolumeHud = isEnabled("precise-volume") ? require("../precise-volume/front").moveVolumeHud : ()=>{}; function $(selector) { return document.querySelector(selector); } @@ -39,7 +41,7 @@ function setup(e) { changeDisplay(e.target.checked); setOptions("video-toggle", options); }) - + video.addEventListener('srcChanged', videoStarted); observeThumbnail(); @@ -89,13 +91,6 @@ function forcePlaybackMode() { playbackModeObserver.observe(player, { attributeFilter: ["playback-mode"] }); } -// if precise volume plugin is enabled, move its hud to be on top of the video -function moveVolumeHud(showVideo) { - const volumeHud = $('#volumeHud'); - if (volumeHud) - volumeHud.style.top = showVideo ? `${(player.clientHeight - video.clientHeight) / 2}px` : 0; -} - function observeThumbnail() { const playbackModeObserver = new MutationObserver(mutations => { if (!player.videoMode_) return; From ea191a300505c3978cfd9f445c6a51b825c6054e Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Sat, 29 Jan 2022 09:37:02 +0200 Subject: [PATCH 10/25] load adblocker sooner --- plugins/adblocker/{front.js => preload.js} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename plugins/adblocker/{front.js => preload.js} (100%) diff --git a/plugins/adblocker/front.js b/plugins/adblocker/preload.js similarity index 100% rename from plugins/adblocker/front.js rename to plugins/adblocker/preload.js From babc50099c75956f84061eb156031fc36cdd18cf Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Sat, 29 Jan 2022 11:13:53 +0200 Subject: [PATCH 11/25] fix lyrics css styling --- plugins/lyrics-genius/style.css | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/plugins/lyrics-genius/style.css b/plugins/lyrics-genius/style.css index 1966b67b..9c5f74de 100644 --- a/plugins/lyrics-genius/style.css +++ b/plugins/lyrics-genius/style.css @@ -6,7 +6,10 @@ text-decoration: none; } -#contents.genius-lyrics { - font-size: 1vw; - opacity: 0.9; +#contents.genius-lyrics, .description { + font-size: 1.1vw !important; + text-align: center !important; + line-height: 1.4; + font-family: Roboto,Noto Naskh Arabic UI,Arial,sans-serif; + font-weight: 400; } From 900c44d9c0f2dd251e4369667ab8bae67b46935b Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Sat, 29 Jan 2022 11:14:03 +0200 Subject: [PATCH 12/25] fix disabled lyrics tab --- plugins/lyrics-genius/front.js | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/plugins/lyrics-genius/front.js b/plugins/lyrics-genius/front.js index 48227e1d..14813c7c 100644 --- a/plugins/lyrics-genius/front.js +++ b/plugins/lyrics-genius/front.js @@ -3,10 +3,15 @@ const is = require("electron-is"); module.exports = () => { ipcRenderer.on("update-song-info", (_, extractedSongInfo) => { - const lyricsTab = document.querySelector('tp-yt-paper-tab[tabindex="-1"]'); + const tabList = document.querySelectorAll("tp-yt-paper-tab"); + const tabs = { + upNext: tabList[0], + lyrics: tabList[1], + discover: tabList[2], + } // Check if disabled - if (!lyricsTab || !lyricsTab.hasAttribute("disabled")) { + if (!tabs.lyrics || !tabs.lyrics.hasAttribute("disabled")) { return; } @@ -35,26 +40,31 @@ module.exports = () => { return; } - lyricsTab.removeAttribute("disabled"); - lyricsTab.removeAttribute("aria-disabled"); - document.querySelector("tp-yt-paper-tab").onclick = () => { - lyricsTab.removeAttribute("disabled"); - lyricsTab.removeAttribute("aria-disabled"); - }; + tabs.lyrics.removeAttribute("disabled"); + tabs.lyrics.removeAttribute("aria-disabled"); - lyricsTab.onclick = () => { + for (tab of [tabs.upNext, tabs.discover]){ + tab.onclick = () => { + tabs.lyrics.removeAttribute("disabled"); + tabs.lyrics.removeAttribute("aria-disabled"); + }; + } + + tabs.lyrics.onclick = () => { const tabContainer = document.querySelector("ytmusic-tab-renderer"); const observer = new MutationObserver((_, observer) => { const lyricsContainer = document.querySelector( '[page-type="MUSIC_PAGE_TYPE_TRACK_LYRICS"] > ytmusic-message-renderer' ); if (lyricsContainer) { + observer.disconnect(); lyricsContainer.innerHTML = `
${lyrics} Source : Genius
`; - observer.disconnect(); + tabs.lyrics.removeAttribute("disabled"); + tabs.lyrics.removeAttribute("aria-disabled"); } }); observer.observe(tabContainer, { From 60bb5b861dc5b248be31120e03b0a091bee0b0d7 Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Sat, 29 Jan 2022 11:35:18 +0200 Subject: [PATCH 13/25] change to new lyrics even if lyrics tab was already selected --- plugins/lyrics-genius/front.js | 36 +++++++++++++++++++++------------ plugins/lyrics-genius/style.css | 3 --- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/plugins/lyrics-genius/front.js b/plugins/lyrics-genius/front.js index 14813c7c..9e9d9216 100644 --- a/plugins/lyrics-genius/front.js +++ b/plugins/lyrics-genius/front.js @@ -50,22 +50,12 @@ module.exports = () => { }; } + checkLyricsContainer(); + tabs.lyrics.onclick = () => { const tabContainer = document.querySelector("ytmusic-tab-renderer"); const observer = new MutationObserver((_, observer) => { - const lyricsContainer = document.querySelector( - '[page-type="MUSIC_PAGE_TYPE_TRACK_LYRICS"] > ytmusic-message-renderer' - ); - if (lyricsContainer) { - observer.disconnect(); - lyricsContainer.innerHTML = `
- ${lyrics} - - Source : Genius -
`; - tabs.lyrics.removeAttribute("disabled"); - tabs.lyrics.removeAttribute("aria-disabled"); - } + checkLyricsContainer(() => observer.disconnect()); }); observer.observe(tabContainer, { attributes: true, @@ -73,5 +63,25 @@ module.exports = () => { subtree: true, }); }; + + function checkLyricsContainer(callback = () => {}) { + const lyricsContainer = document.querySelector( + '[page-type="MUSIC_PAGE_TYPE_TRACK_LYRICS"] > ytmusic-message-renderer' + ); + if (lyricsContainer) { + callback(); + setLyrics(lyricsContainer) + } + } + + function setLyrics(lyricsContainer){ + lyricsContainer.innerHTML = `
+ ${lyrics} + + Source : Genius +
`; + tabs.lyrics.removeAttribute("disabled"); + tabs.lyrics.removeAttribute("aria-disabled"); + } }); }; diff --git a/plugins/lyrics-genius/style.css b/plugins/lyrics-genius/style.css index 9c5f74de..27128072 100644 --- a/plugins/lyrics-genius/style.css +++ b/plugins/lyrics-genius/style.css @@ -9,7 +9,4 @@ #contents.genius-lyrics, .description { font-size: 1.1vw !important; text-align: center !important; - line-height: 1.4; - font-family: Roboto,Noto Naskh Arabic UI,Arial,sans-serif; - font-weight: 400; } From 41b9ab48158fbb91145e7fa820749db837cfccfc Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Sat, 29 Jan 2022 11:46:34 +0200 Subject: [PATCH 14/25] lint --- plugins/lyrics-genius/front.js | 20 +++++++++++--------- plugins/lyrics-genius/style.css | 4 ++-- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/plugins/lyrics-genius/front.js b/plugins/lyrics-genius/front.js index 9e9d9216..e708964a 100644 --- a/plugins/lyrics-genius/front.js +++ b/plugins/lyrics-genius/front.js @@ -11,7 +11,7 @@ module.exports = () => { } // Check if disabled - if (!tabs.lyrics || !tabs.lyrics.hasAttribute("disabled")) { + if (!tabs.lyrics?.hasAttribute("disabled")) { return; } @@ -40,14 +40,12 @@ module.exports = () => { return; } - tabs.lyrics.removeAttribute("disabled"); - tabs.lyrics.removeAttribute("aria-disabled"); + enableLyricsTab(); - for (tab of [tabs.upNext, tabs.discover]){ - tab.onclick = () => { - tabs.lyrics.removeAttribute("disabled"); - tabs.lyrics.removeAttribute("aria-disabled"); - }; + for (tab of [tabs.upNext, tabs.discover]) { + if (tab) { + tab.onclick = enableLyricsTab; + } } checkLyricsContainer(); @@ -74,12 +72,16 @@ module.exports = () => { } } - function setLyrics(lyricsContainer){ + function setLyrics(lyricsContainer) { lyricsContainer.innerHTML = `
${lyrics} Source : Genius
`; + enableLyricsTab() + } + + function enableLyricsTab() { tabs.lyrics.removeAttribute("disabled"); tabs.lyrics.removeAttribute("aria-disabled"); } diff --git a/plugins/lyrics-genius/style.css b/plugins/lyrics-genius/style.css index 27128072..26100bab 100644 --- a/plugins/lyrics-genius/style.css +++ b/plugins/lyrics-genius/style.css @@ -6,7 +6,7 @@ text-decoration: none; } -#contents.genius-lyrics, .description { - font-size: 1.1vw !important; +.description { + font-size: 1.1vw !important; text-align: center !important; } From 909036108f5039b6d1a3269e2f3c58091bf9006f Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Sat, 29 Jan 2022 16:56:55 +0200 Subject: [PATCH 15/25] reenable lyrics footer --- plugins/lyrics-genius/front.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/plugins/lyrics-genius/front.js b/plugins/lyrics-genius/front.js index e708964a..8a1802e4 100644 --- a/plugins/lyrics-genius/front.js +++ b/plugins/lyrics-genius/front.js @@ -76,9 +76,10 @@ module.exports = () => { lyricsContainer.innerHTML = `
${lyrics} - Source : Genius +
`; - enableLyricsTab() + lyricsContainer.querySelector('.footer').textContent = 'Source: Genius'; + enableLyricsTab(); } function enableLyricsTab() { From 366c90f71d194d4d0b82ccd1de08f070147fbb2b Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Sat, 29 Jan 2022 17:10:47 +0200 Subject: [PATCH 16/25] fix showing old lyrics if new lyrics couldn't be resolved --- plugins/lyrics-genius/front.js | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/plugins/lyrics-genius/front.js b/plugins/lyrics-genius/front.js index 8a1802e4..e7d288e0 100644 --- a/plugins/lyrics-genius/front.js +++ b/plugins/lyrics-genius/front.js @@ -15,13 +15,22 @@ module.exports = () => { return; } + let hasLyrics = true; + const html = ipcRenderer.sendSync( "search-genius-lyrics", extractedSongInfo ); if (!html) { + // Delete previous lyrics if tab is open and couldn't get new lyrics + checkLyricsContainer(() => { + hasLyrics = false; + setTabsOnclick(undefined); + }); return; - } else if (is.dev()) { + } + + if (is.dev()) { console.log("Fetched lyrics from Genius"); } @@ -42,11 +51,7 @@ module.exports = () => { enableLyricsTab(); - for (tab of [tabs.upNext, tabs.discover]) { - if (tab) { - tab.onclick = enableLyricsTab; - } - } + setTabsOnclick(enableLyricsTab); checkLyricsContainer(); @@ -74,12 +79,22 @@ module.exports = () => { function setLyrics(lyricsContainer) { lyricsContainer.innerHTML = `
- ${lyrics} + ${hasLyrics ? lyrics : 'Subtitles could not be retrieved'}
`; - lyricsContainer.querySelector('.footer').textContent = 'Source: Genius'; - enableLyricsTab(); + if (hasLyrics) { + lyricsContainer.querySelector('.footer').textContent = 'Source: Genius'; + enableLyricsTab(); + } + } + + function setTabsOnclick(callback) { + for (tab of [tabs.upNext, tabs.discover]) { + if (tab) { + tab.onclick = callback; + } + } } function enableLyricsTab() { From eff0995d7891cee7a8c27353ad99a2a88a0ab17c Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Sat, 29 Jan 2022 17:10:47 +0200 Subject: [PATCH 17/25] fix showing old lyrics if new lyrics couldn't be resolved --- plugins/lyrics-genius/front.js | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/plugins/lyrics-genius/front.js b/plugins/lyrics-genius/front.js index 8a1802e4..3a257265 100644 --- a/plugins/lyrics-genius/front.js +++ b/plugins/lyrics-genius/front.js @@ -15,13 +15,22 @@ module.exports = () => { return; } + let hasLyrics = true; + const html = ipcRenderer.sendSync( "search-genius-lyrics", extractedSongInfo ); if (!html) { + // Delete previous lyrics if tab is open and couldn't get new lyrics + checkLyricsContainer(() => { + hasLyrics = false; + setTabsOnclick(undefined); + }); return; - } else if (is.dev()) { + } + + if (is.dev()) { console.log("Fetched lyrics from Genius"); } @@ -42,11 +51,7 @@ module.exports = () => { enableLyricsTab(); - for (tab of [tabs.upNext, tabs.discover]) { - if (tab) { - tab.onclick = enableLyricsTab; - } - } + setTabsOnclick(enableLyricsTab); checkLyricsContainer(); @@ -74,12 +79,22 @@ module.exports = () => { function setLyrics(lyricsContainer) { lyricsContainer.innerHTML = `
- ${lyrics} + ${hasLyrics ? lyrics : 'Could not retrieve lyrics from genius'}
`; - lyricsContainer.querySelector('.footer').textContent = 'Source: Genius'; - enableLyricsTab(); + if (hasLyrics) { + lyricsContainer.querySelector('.footer').textContent = 'Source: Genius'; + enableLyricsTab(); + } + } + + function setTabsOnclick(callback) { + for (tab of [tabs.upNext, tabs.discover]) { + if (tab) { + tab.onclick = callback; + } + } } function enableLyricsTab() { From b042d0a8ca412717e35e03a6589908738fbc1787 Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Sat, 29 Jan 2022 17:57:39 +0200 Subject: [PATCH 18/25] use regex on cleanupName() --- providers/song-info.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/providers/song-info.js b/providers/song-info.js index c4028355..88f757a3 100644 --- a/providers/song-info.js +++ b/providers/song-info.js @@ -112,13 +112,12 @@ const suffixesToRemove = [ " - topic", "vevo", " (performance video)", - " (official music video)", - " (official video)", " (clip officiel)", ]; function cleanupName(name) { if (!name) return name; + name = name.replace(/\((?:official)?[ ]?(?:music)?[ ]?(?:lyric[s]?)?[ ]?(?:video)?\)$/i, '') const lowCaseName = name.toLowerCase(); for (const suffix of suffixesToRemove) { if (lowCaseName.endsWith(suffix)) { From fc111e251364b320b8b11adffe3e765827324c4c Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Sat, 29 Jan 2022 18:05:55 +0200 Subject: [PATCH 19/25] keep footer out of contents div --- plugins/lyrics-genius/front.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/lyrics-genius/front.js b/plugins/lyrics-genius/front.js index f3ac4487..b8e78c1c 100644 --- a/plugins/lyrics-genius/front.js +++ b/plugins/lyrics-genius/front.js @@ -82,8 +82,8 @@ module.exports = () => { `
${hasLyrics ? lyrics : 'Could not retrieve lyrics from genius'} - -
`; + + `; if (hasLyrics) { lyricsContainer.querySelector('.footer').textContent = 'Source: Genius'; enableLyricsTab(); From 24f694737a9133678c509e11885d1b885bf4bd6d Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Sat, 29 Jan 2022 21:50:12 +0200 Subject: [PATCH 20/25] add new plugins to readme --- readme.md | 60 ++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 44 insertions(+), 16 deletions(-) diff --git a/readme.md b/readme.md index 5986d705..2700d9f8 100644 --- a/readme.md +++ b/readme.md @@ -34,25 +34,53 @@ You can check out the [latest release](https://github.com/th-ch/youtube-music/re Install the `youtube-music-bin` package from the AUR. For AUR installation instructions, take a look at this [wiki page](https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages). ## Available plugins: -- **Ad Blocker**: block all ads and tracking out of the box -- **Audio compressor**: apply compression to audio (lowers the volume of the loudest parts of the signal and raises the volume of the softest parts) -- **Blur navigation bar**: makes navigation bar transparent and blurry -- **Disable autoplay**: makes every song start in "paused" mode -- [**Discord**](https://discord.com/): show your friends what you listen to with [Rich Presence](https://user-images.githubusercontent.com/28219076/104362104-a7a0b980-5513-11eb-9744-bb89eabe0016.png) + +- **Ad Blocker**: Block all ads and tracking out of the box + +- **Audio Compressor**: Apply compression to audio (lowers the volume of the loudest parts of the signal and raises the volume of the softest parts) + +- **Blur Nav Bar**: makes navigation bar transparent and blurry + +- **Disable Autoplay**: Makes every song start in "paused" mode + +- [**Discord**](https://discord.com/): Show your friends what you listen to with [Rich Presence](https://user-images.githubusercontent.com/28219076/104362104-a7a0b980-5513-11eb-9744-bb89eabe0016.png) + - **Downloader**: downloads MP3 [directly from the interface](https://user-images.githubusercontent.com/61631665/129977677-83a7d067-c192-45e1-98ae-b5a4927393be.png) [(youtube-dl)](https://github.com/ytdl-org/youtube-dl) -- **In-app menu**: [gives bars a fancy, dark look](https://user-images.githubusercontent.com/78568641/112215894-923dbf00-8c29-11eb-95c3-3ce15db27eca.png) + +- **Exponential Volume**: Makes the volume slider [exponential](https://greasyfork.org/en/scripts/397686-youtube-music-fix-volume-ratio/) so it's easier to select lower volumes. + +- **In-App Menu**: [gives bars a fancy, dark look](https://user-images.githubusercontent.com/78568641/112215894-923dbf00-8c29-11eb-95c3-3ce15db27eca.png) + > (see [this post](https://github.com/th-ch/youtube-music/issues/410#issuecomment-952060709) if you have problem accessing the menu after enabling this plugin and hide-menu option) -- [**Last.fm**](https://www.last.fm/): scrobbles support -- **Navigation**: next/back navigation arrows directly integrated in the interface, like in your favorite browser -- **No Google Login**: remove Google login buttons and links from the interface -- **Notifications**: display a notification when a song starts playing ([interactive notifications](https://user-images.githubusercontent.com/78568641/114102651-63ce0e00-98d0-11eb-9dfe-c5a02bb54f9c.png) are available on windows) -- **Playback speed**: listen fast, listen slow! [Adds a slider that controls song speed](https://user-images.githubusercontent.com/61631665/129976003-e55db5ba-bf42-448c-a059-26a009775e68.png) -- **Precise volume**: customizable volume steps for more comfort, allows controlling the volume precisely using mousewheel -- **Quality changer**: Allows changing the video quality with a [button](https://user-images.githubusercontent.com/78568641/138574366-70324a5e-2d64-4f6a-acdd-dc2a2b9cecc5.png) on the video overlay + +- [**Last.fm**](https://www.last.fm/): Scrobbles support + +- **Lyrics Genius**: Adds lyrics support for most songs + +- **Navigation**: Next/Back navigation arrows directly integrated in the interface, like in your favorite browser + +- **No Google Login**: Remove Google login buttons and links from the interface + +- **Notifications**: Display a notification when a song starts playing ([interactive notifications](https://user-images.githubusercontent.com/78568641/114102651-63ce0e00-98d0-11eb-9dfe-c5a02bb54f9c.png) are available on windows) + +- **Playback Speed**: Listen fast, listen slow! [Adds a slider that controls song speed](https://user-images.githubusercontent.com/61631665/129976003-e55db5ba-bf42-448c-a059-26a009775e68.png) + +- **Precise Volume**: Control the volume precisely using mousewheel/hotkeys, with a custom hud and customizable volume steps + +- **Quality Changer**: Allows changing the video quality with a [button](https://user-images.githubusercontent.com/78568641/138574366-70324a5e-2d64-4f6a-acdd-dc2a2b9cecc5.png) on the video overlay + - **Shortcuts**: Allows setting global hotkeys for playback (play/pause/next/previous) + disable [media osd](https://user-images.githubusercontent.com/84923831/128601225-afa38c1f-dea8-4209-9f72-0f84c1dd8b54.png) by overriding media keys + enable Ctrl/CMD + F to search + enable linux mpris support for mediakeys + [custom hotkeys](https://github.com/Araxeus/youtube-music/blob/1e591d6a3df98449bcda6e63baab249b28026148/providers/song-controls.js#L13-L50) for [advanced users](https://github.com/th-ch/youtube-music/issues/106#issuecomment-952156902) -- [**SponsorBlock**](https://github.com/ajayyy/SponsorBlock): skips non-music parts -- **Taskbar media control**: control playback from your [Windows taskbar](https://user-images.githubusercontent.com/78568641/111916130-24a35e80-8a82-11eb-80c8-5021c1aa27f4.png) -- **Touchbar**: custom TouchBar layout for macOS + +- **Skip-Silences** - Automatically skip silenced sections + +- [**SponsorBlock**](https://github.com/ajayyy/SponsorBlock): Automatically Skips non-music parts like intro/outro or parts of music videos where the song isn't playing + +- **Taskbar Media Control**: Control playback from your [Windows taskbar](https://user-images.githubusercontent.com/78568641/111916130-24a35e80-8a82-11eb-80c8-5021c1aa27f4.png) + +- **Touchbar**: Custom TouchBar layout for macOS + +- **Tuna-OBS**: Integration with [OBS](https://obsproject.com/)'s plugin [Tuna](https://obsproject.com/forum/resources/tuna.843/) + - **Video Toggle**: Adds a button to switch between Video/Song mode. can also optionally remove the whole video tab --- From 9b8d9c490598ec8c0775c4382d712a0b45534143 Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Sun, 30 Jan 2022 20:43:05 +0200 Subject: [PATCH 21/25] get album name from DOM --- providers/song-info-front.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/providers/song-info-front.js b/providers/song-info-front.js index 368d3958..e8bb8bcf 100644 --- a/providers/song-info-front.js +++ b/providers/song-info-front.js @@ -6,7 +6,8 @@ const config = require("../config"); global.songInfo = {}; -function $(selector) { return document.querySelector(selector); } +const $ = s => document.querySelector(s); +const $$ = s => Array.from(document.querySelectorAll(s)); ipcRenderer.on("update-song-info", async (_, extractedSongInfo) => { global.songInfo = JSON.parse(extractedSongInfo); @@ -43,7 +44,11 @@ module.exports = () => { function sendSongInfo() { const data = apiEvent.detail.getPlayerResponse(); - data.videoDetails.album = $('ytmusic-player-page')?.__data?.playerPageWatchMetadata?.albumName?.runs[0].text + + data.videoDetails.album = $$( + ".byline.ytmusic-player-bar > .yt-simple-endpoint" + ).find(e => e.href?.includes("browse"))?.textContent; + data.videoDetails.elapsedSeconds = Math.floor(video.currentTime); data.videoDetails.isPaused = false; ipcRenderer.send("video-src-changed", JSON.stringify(data)); From 721f733dc44ab3ead16a2fb0d801785bb8245ace Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Mon, 31 Jan 2022 23:50:38 +0200 Subject: [PATCH 22/25] update electron to 16.0.8 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index ea3e8c04..a5a0df47 100644 --- a/package.json +++ b/package.json @@ -99,7 +99,7 @@ "ytpl": "^2.2.3" }, "devDependencies": { - "electron": "^16.0.7", + "electron": "^16.0.8", "electron-builder": "^22.10.5", "electron-devtools-installer": "^3.1.1", "electron-icon-maker": "0.0.5", diff --git a/yarn.lock b/yarn.lock index 30a2445a..06fcaf25 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3144,10 +3144,10 @@ electron-updater@^4.6.3: lodash.isequal "^4.5.0" semver "^7.3.5" -electron@^16.0.7: - version "16.0.7" - resolved "https://registry.yarnpkg.com/electron/-/electron-16.0.7.tgz#87eaccd05ab61563d3c17dfbad2949bba7ead162" - integrity sha512-/IMwpBf2svhA1X/7Q58RV+Nn0fvUJsHniG4TizaO7q4iKFYSQ6hBvsLz+cylcZ8hRMKmVy5G1XaMNJID2ah23w== +electron@^16.0.8: + version "16.0.8" + resolved "https://registry.yarnpkg.com/electron/-/electron-16.0.8.tgz#7ebd3e23c4883c239f53d8b7af1100f455ac8a02" + integrity sha512-znTVkl8LaGcPNdfc6SRr+6LYg2GtSCKXln/nW/PC+urBfAFnOYIuDock8QyGVFfzr5PuAa+g8YQQAboHV77D7g== dependencies: "@electron/get" "^1.13.0" "@types/node" "^14.6.2" From 8be07bcb7ad8b727d97c36aa0760aed4e2fc481f Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Tue, 1 Feb 2022 01:37:25 +0200 Subject: [PATCH 23/25] update dependencies --- package.json | 12 ++--- yarn.lock | 143 +++++++++++++++++++++++++++------------------------ 2 files changed, 81 insertions(+), 74 deletions(-) diff --git a/package.json b/package.json index a5a0df47..6b25969e 100644 --- a/package.json +++ b/package.json @@ -72,10 +72,10 @@ "npm": "Please use yarn and not npm" }, "dependencies": { - "@cliqz/adblocker-electron": "^1.23.1", - "@electron/remote": "^2.0.1", + "@cliqz/adblocker-electron": "^1.23.4", + "@electron/remote": "^2.0.4", "@ffmpeg/core": "^0.10.0", - "@ffmpeg/ffmpeg": "^0.10.0", + "@ffmpeg/ffmpeg": "^0.10.1", "async-mutex": "^0.3.2", "browser-id3-writer": "^4.4.0", "chokidar": "^3.5.2", @@ -86,15 +86,15 @@ "electron-debug": "^3.2.0", "electron-is": "^3.0.0", "electron-localshortcut": "^3.2.1", - "electron-store": "^7.0.3", + "electron-store": "^8.0.1", "electron-unhandled": "^3.0.2", "electron-updater": "^4.6.3", "filenamify": "^4.3.0", "hark": "^1.2.3", "md5": "^2.3.0", "mpris-service": "^2.1.2", - "node-fetch": "^2.6.6", - "node-notifier": "^9.0.1", + "node-fetch": "^2.6.7", + "node-notifier": "^10.0.1", "ytdl-core": "^4.10.0", "ytpl": "^2.2.3" }, diff --git a/yarn.lock b/yarn.lock index 06fcaf25..7740e908 100644 --- a/yarn.lock +++ b/yarn.lock @@ -650,45 +650,45 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@cliqz/adblocker-content@^1.23.2": - version "1.23.2" - resolved "https://registry.yarnpkg.com/@cliqz/adblocker-content/-/adblocker-content-1.23.2.tgz#f4fa9eedf55a47e0a6d09396b3f344855f7b5460" - integrity sha512-J2jRtd1l3O/bDlXLBFgzC8Z/M84k2SL1pzqpoLRxYrJ3VbDv2ZgrIjUkTBR8hExKZ1DHnGYOrZD014N0YRQvVw== +"@cliqz/adblocker-content@^1.23.4": + version "1.23.4" + resolved "https://registry.yarnpkg.com/@cliqz/adblocker-content/-/adblocker-content-1.23.4.tgz#d7803ab5f3c998247100b3b29b89ce5b3442314e" + integrity sha512-Ib8c8E8rnrDygUfO02hAkwD9qUmW+t0cq1MuKg9iEVGOJVZwZU27SpJDoWhHz9bninzcxthzJYlLGgBZzcqq0Q== dependencies: - "@cliqz/adblocker-extended-selectors" "^1.23.2" + "@cliqz/adblocker-extended-selectors" "^1.23.4" -"@cliqz/adblocker-electron-preload@^1.23.2": - version "1.23.2" - resolved "https://registry.yarnpkg.com/@cliqz/adblocker-electron-preload/-/adblocker-electron-preload-1.23.2.tgz#14e16af43972e4203d6d8589d51e9069ccb3c5eb" - integrity sha512-AIQ56sTNfoHJmWMLxufoBg2iDHn7wGoClc5R9nv+qFoakvGRud2A13DSW2f+ZqXHDKgz4RO9igpel/6+ULBWSw== +"@cliqz/adblocker-electron-preload@^1.23.4": + version "1.23.4" + resolved "https://registry.yarnpkg.com/@cliqz/adblocker-electron-preload/-/adblocker-electron-preload-1.23.4.tgz#41946642c52e1a51d0514cf5513dd9a11a020fae" + integrity sha512-i1NMv5EeAB7T393zhBVwo+74qd082pCIIySRGDLrOqm8BAosCjXzXifq6p+14d68k1K+C8nDahHm/XvpgWMTCw== dependencies: - "@cliqz/adblocker-content" "^1.23.2" + "@cliqz/adblocker-content" "^1.23.4" -"@cliqz/adblocker-electron@^1.23.1": - version "1.23.2" - resolved "https://registry.yarnpkg.com/@cliqz/adblocker-electron/-/adblocker-electron-1.23.2.tgz#e072003f1569d69e00910f1f93bec047fe020236" - integrity sha512-EEsTfW503gvecU3sVlrQ6jdyJn2FF53uIwLIi3H83/dJWhECLzp8FuDV9CAZNe4MaW3plTbmc3g241Q7xVffhw== +"@cliqz/adblocker-electron@^1.23.4": + version "1.23.4" + resolved "https://registry.yarnpkg.com/@cliqz/adblocker-electron/-/adblocker-electron-1.23.4.tgz#6144199209aa9f1f73de5ee9d8b73c61deaf5945" + integrity sha512-ld/2jdf8rIzNEHAG/ZFfapDISityA++Kxql1DqfsIUi0xcRlQdz6ijWQ0+xVOW4ZhTifGjlUvaq60MVn+R3OUQ== dependencies: - "@cliqz/adblocker" "^1.23.2" - "@cliqz/adblocker-electron-preload" "^1.23.2" + "@cliqz/adblocker" "^1.23.4" + "@cliqz/adblocker-electron-preload" "^1.23.4" tldts-experimental "^5.6.21" -"@cliqz/adblocker-extended-selectors@^1.23.2": - version "1.23.2" - resolved "https://registry.yarnpkg.com/@cliqz/adblocker-extended-selectors/-/adblocker-extended-selectors-1.23.2.tgz#f49519c7639ecdebc09a459fffe876a97ef96a69" - integrity sha512-JokCWTcw0XjBxAv7WGzfVfdGjz6OsND4eEhEQUDXxzkzbv4qOe8T+fi42lphfshlt89svAIl18zKp0Ibx9H9Vw== +"@cliqz/adblocker-extended-selectors@^1.23.4": + version "1.23.4" + resolved "https://registry.yarnpkg.com/@cliqz/adblocker-extended-selectors/-/adblocker-extended-selectors-1.23.4.tgz#76e310ff6598ec76eacf402bd4733e7b8ab0ee98" + integrity sha512-qDfeOwe1UK4fGQFFafQMftdPy7uLm5JwKiM8zcGiYzJqRxTvnquRTGzYLkQLri9L1Q4R9Tvtg1wZtWMIrQnO6Q== -"@cliqz/adblocker@^1.23.2": - version "1.23.2" - resolved "https://registry.yarnpkg.com/@cliqz/adblocker/-/adblocker-1.23.2.tgz#49f2f493c8e41cdc213505e02559a7797c8521df" - integrity sha512-u4u/iunhMoCQanfzvruBjNSqP9lu+y8tub3zhPZwtyrmmkXFcEark09/3qvq4jBCzqZQjdDjHlWaX6k1PjnUmg== +"@cliqz/adblocker@^1.23.4": + version "1.23.4" + resolved "https://registry.yarnpkg.com/@cliqz/adblocker/-/adblocker-1.23.4.tgz#dbf2282e223ca1bf963bc34d9a5d2b7f506513b5" + integrity sha512-IVP6L2on4SFCAk13hhH87MDbfXxvWv86LScKPoD7rOg+5f51HWp4meW+yFtv/VbLdpkKgORWXNA1KttVW0IuKA== dependencies: - "@cliqz/adblocker-content" "^1.23.2" - "@cliqz/adblocker-extended-selectors" "^1.23.2" + "@cliqz/adblocker-content" "^1.23.4" + "@cliqz/adblocker-extended-selectors" "^1.23.4" "@remusao/guess-url-type" "^1.1.2" "@remusao/small" "^1.1.2" "@remusao/smaz" "^1.7.1" - "@types/chrome" "^0.0.164" + "@types/chrome" "^0.0.176" "@types/firefox-webext-browser" "^94.0.0" tldts-experimental "^5.6.21" @@ -721,10 +721,10 @@ resolved "https://registry.yarnpkg.com/@electron/remote/-/remote-1.2.2.tgz#4c390a2e669df47af973c09eec106162a296c323" integrity sha512-PfnXpQGWh4vpX866NNucJRnNOzDRZcsLcLaT32fUth9k0hccsohfxprqEDYLzRg+ZK2xRrtyUN5wYYoHimMCJg== -"@electron/remote@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@electron/remote/-/remote-2.0.1.tgz#810cbc595a21f0f94641eb2d7e8264063a3f84de" - integrity sha512-bGX4/yB2bPZwXm1DsxgoABgH0Cz7oFtXJgkerB8VrStYdTyvhGAULzNLRn9rVmeAuC3VUDXaXpZIlZAZHpsLIA== +"@electron/remote@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@electron/remote/-/remote-2.0.4.tgz#c3dae436aed79d1b8adcefc5a4963c06750ad5d8" + integrity sha512-8m2P/d2RH986PmMW5lKygbPEjEYJ7RgCe37Y8DQ1wujKMH6VjmLIB+Y+DP2SA611svCZc58TRSd8FraGvcfGZw== "@electron/universal@1.0.5": version "1.0.5" @@ -772,7 +772,7 @@ resolved "https://registry.yarnpkg.com/@ffmpeg/core/-/core-0.10.0.tgz#f6a58361b22d7c23c6f7071b9fff6d572bc3f499" integrity sha512-qunWJl5PezpXEm31tb8Qu5z37B5KVA1VYZCpXchMhuAb3X9T7PuE3SlhOwphEoRhzaOa3lpofDfzihAUMFaVPQ== -"@ffmpeg/ffmpeg@^0.10.0": +"@ffmpeg/ffmpeg@^0.10.1": version "0.10.1" resolved "https://registry.yarnpkg.com/@ffmpeg/ffmpeg/-/ffmpeg-0.10.1.tgz#3dacf3985de9c83a95fbf79fe709920cc009b00a" integrity sha512-ChQkH7Rh57hmVo1LhfQFibWX/xqneolJKSwItwZdKPcLZuKigtYAYDIvB55pDfP17VtR1R77SxgkB2/UApB+Og== @@ -1424,10 +1424,10 @@ dependencies: "@babel/types" "^7.3.0" -"@types/chrome@^0.0.164": - version "0.0.164" - resolved "https://registry.yarnpkg.com/@types/chrome/-/chrome-0.0.164.tgz#0a7669cf7225df0c472c69f73ef4b7b1d2d94013" - integrity sha512-/EvjbfcowiA+f8Fwv5PSzxHhnAgjIx50Bjy1zQQYYwxlbJ+rI07CXMhrxwz4jUZlxLjnn/kugNQBjZIN58pKyg== +"@types/chrome@^0.0.176": + version "0.0.176" + resolved "https://registry.yarnpkg.com/@types/chrome/-/chrome-0.0.176.tgz#617fcbe41ea1d9c5d50c9e7fb8ebfe2d9aef853a" + integrity sha512-LOveFOMIUhMJjvRzZv5whGBpncP/gdJ4hcxeAqg94wGi6CyKaCmLgFSofgItf85GuLTl/0BQ6J/Y1e8BqZWfEg== dependencies: "@types/filesystem" "*" "@types/har-format" "*" @@ -1718,6 +1718,13 @@ agent-base@6, agent-base@^6.0.2: dependencies: debug "4" +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + ajv-keywords@^3.4.1: version "3.5.2" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" @@ -1733,10 +1740,10 @@ ajv@^6.10.0, ajv@^6.12.0, ajv@^6.12.3, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^7.0.3: - version "7.0.4" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.0.4.tgz#827e5f5ae32f5e5c1637db61f253a112229b5e2f" - integrity sha512-xzzzaqgEQfmuhbhAoqjJ8T/1okb6gAzXn/eQRNpAN1AEUoHJTNF9xCDRTtf/s3SKldtZfa+RJeTs+BQq+eZ/sw== +ajv@^8.0.0, ajv@^8.6.3: + version "8.9.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.9.0.tgz#738019146638824dea25edcf299dcba1b0e7eb18" + integrity sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" @@ -2579,21 +2586,21 @@ concat-stream@^1.6.2: readable-stream "^2.2.2" typedarray "^0.0.6" -conf@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/conf/-/conf-9.0.1.tgz#ac4808521490b791136e2a771e2b53caf7c49df8" - integrity sha512-Ef+z0hdK0ZqcUdmijaVA1kYW0OXJDBfBWPzBWsPYQn/72PQyiq04jcuRbs7l8R/4v3MKGBIcYVxsIllCEFlXrw== +conf@^10.0.3: + version "10.1.1" + resolved "https://registry.yarnpkg.com/conf/-/conf-10.1.1.tgz#ff08046d5aeeee0eaff55d57f5b4319193c3dfda" + integrity sha512-z2civwq/k8TMYtcn3SVP0Peso4otIWnHtcTuHhQ0zDZDdP4NTxqEc8owfkz4zBsdMYdn/LFcE+ZhbCeqkhtq3Q== dependencies: - ajv "^7.0.3" + ajv "^8.6.3" + ajv-formats "^2.1.1" atomically "^1.7.0" debounce-fn "^4.0.0" dot-prop "^6.0.1" - env-paths "^2.2.0" + env-paths "^2.2.1" json-schema-typed "^7.0.3" - make-dir "^3.1.0" onetime "^5.1.2" pkg-up "^3.1.0" - semver "^7.3.4" + semver "^7.3.5" config-chain@^1.1.11: version "1.1.12" @@ -3102,13 +3109,13 @@ electron-publish@22.11.7: lazy-val "^1.0.5" mime "^2.5.2" -electron-store@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/electron-store/-/electron-store-7.0.3.tgz#56d78284454018ed50ffc7645da49f828ae5ff19" - integrity sha512-wIbw4GHt4djs4dVrlRLCD/SpdpDUiRsQc212jagGA6zJ8xt1iwx3KZIzXY8gmwvgVCOcVxi3iyCXZoBBWwBXpQ== +electron-store@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/electron-store/-/electron-store-8.0.1.tgz#9b598c1d2edeffebee9d8c1cd957ad368c528925" + integrity sha512-ZyLvNywiqSpbwC/pp89O/AycVWY/UJIkmtyzF2Bd0Nm/rLmcFc0NTGuLdg6+LE8mS8qsiK5JMoe4PnrecLHH5w== dependencies: - conf "^9.0.0" - type-fest "^0.20.2" + conf "^10.0.3" + type-fest "^1.0.2" electron-to-chromium@^1.3.723: version "1.3.740" @@ -3213,7 +3220,7 @@ env-editor@^0.4.1: resolved "https://registry.yarnpkg.com/env-editor/-/env-editor-0.4.2.tgz#4e76568d0bd8f5c2b6d314a9412c8fe9aa3ae861" integrity sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA== -env-paths@^2.2.0: +env-paths@^2.2.0, env-paths@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== @@ -5794,7 +5801,7 @@ m3u8stream@^0.8.4: miniget "^4.0.0" sax "^1.2.4" -make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: +make-dir@^3.0.0, make-dir@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -6034,10 +6041,10 @@ node-fetch@^2.6.1: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== -node-fetch@^2.6.6: - version "2.6.6" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.6.tgz#1751a7c01834e8e1697758732e9efb6eeadfaf89" - integrity sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA== +node-fetch@^2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== dependencies: whatwg-url "^5.0.0" @@ -6051,16 +6058,16 @@ node-modules-regexp@^1.0.0: resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= -node-notifier@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-9.0.1.tgz#cea837f4c5e733936c7b9005e6545cea825d1af4" - integrity sha512-fPNFIp2hF/Dq7qLDzSg4vZ0J4e9v60gJR+Qx7RbjbWqzPDdEqeVpEx5CFeDAELIl+A/woaaNn1fQ5nEVerMxJg== +node-notifier@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-10.0.1.tgz#0e82014a15a8456c4cfcdb25858750399ae5f1c7" + integrity sha512-YX7TSyDukOZ0g+gmzjB6abKu+hTGvO8+8+gIFDsRCU2t8fLV/P2unmt+LGFaIa4y64aX98Qksa97rgz4vMNeLQ== dependencies: growly "^1.3.0" is-wsl "^2.2.0" - semver "^7.3.2" + semver "^7.3.5" shellwords "^0.1.1" - uuid "^8.3.0" + uuid "^8.3.2" which "^2.0.2" node-releases@^1.1.71: @@ -7821,7 +7828,7 @@ type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -type-fest@^1.0.1, type-fest@^1.2.1, type-fest@^1.2.2: +type-fest@^1.0.1, type-fest@^1.0.2, type-fest@^1.2.1, type-fest@^1.2.2: version "1.4.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== @@ -7947,7 +7954,7 @@ uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -uuid@^8.3.0: +uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== From fef711549fa9862f8ea23301edde747c5802e352 Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Sat, 5 Feb 2022 15:20:14 +0200 Subject: [PATCH 24/25] update electron to v17.0.0 --- package.json | 10 +-- yarn.lock | 240 +++++++++++++++++++++++++++++++++------------------ 2 files changed, 162 insertions(+), 88 deletions(-) diff --git a/package.json b/package.json index 67a85942..32bbcd90 100644 --- a/package.json +++ b/package.json @@ -88,10 +88,10 @@ "@ffmpeg/ffmpeg": "^0.10.1", "async-mutex": "^0.3.2", "browser-id3-writer": "^4.4.0", - "chokidar": "^3.5.2", + "chokidar": "^3.5.3", "custom-electron-prompt": "^1.4.0", "custom-electron-titlebar": "^3.2.10", - "discord-rpc": "^3.2.0", + "discord-rpc": "^4.0.1", "electron-better-web-request": "^1.0.1", "electron-debug": "^3.2.0", "electron-is": "^3.0.0", @@ -105,12 +105,12 @@ "mpris-service": "^2.1.2", "node-fetch": "^2.6.7", "node-notifier": "^10.0.1", - "ytdl-core": "^4.10.0", + "ytdl-core": "^4.10.1", "ytpl": "^2.2.3" }, "devDependencies": { - "electron": "^16.0.8", - "electron-builder": "^22.10.5", + "electron": "^17.0.0", + "electron-builder": "^22.14.5", "electron-devtools-installer": "^3.1.1", "electron-icon-maker": "0.0.5", "jest": "^27.3.1", diff --git a/yarn.lock b/yarn.lock index 7740e908..a6317352 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1432,10 +1432,12 @@ "@types/filesystem" "*" "@types/har-format" "*" -"@types/debug@^4.1.5": - version "4.1.5" - resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.5.tgz#b14efa8852b7768d898906613c23f688713e02cd" - integrity sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ== +"@types/debug@^4.1.6": + version "4.1.7" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82" + integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg== + dependencies: + "@types/ms" "*" "@types/eslint@^7.2.13": version "7.28.2" @@ -1538,6 +1540,11 @@ resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== +"@types/ms@*": + version "0.7.31" + resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" + integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== + "@types/node@*", "@types/node@^14.6.2": version "14.14.44" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.44.tgz#df7503e6002847b834371c004b372529f3f85215" @@ -1586,13 +1593,20 @@ resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9" integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA== -"@types/yargs@^16.0.0", "@types/yargs@^16.0.2": +"@types/yargs@^16.0.0": version "16.0.4" resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== dependencies: "@types/yargs-parser" "*" +"@types/yargs@^17.0.1": + version "17.0.8" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.8.tgz#d23a3476fd3da8a0ea44b5494ca7fa677b9dad4c" + integrity sha512-wDeUwiUmem9FzsyysEwRukaEdDNcwbROvQ9QGRKaLI6t+IltNzbn4/i4asmB10auvZGQCzSQ6t0GSczEThlUXw== + dependencies: + "@types/yargs-parser" "*" + "@types/yauzl@^2.9.1": version "2.9.1" resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.1.tgz#d10f69f9f522eef3cf98e30afb684a1e1ec923af" @@ -1849,15 +1863,15 @@ anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -app-builder-bin@3.5.13: - version "3.5.13" - resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-3.5.13.tgz#6dd7f4de34a4e408806f99b8c7d6ef1601305b7e" - integrity sha512-ighVe9G+bT1ENGdp9ecO1P+94vv/f+FUwaI+XkNzeg9bYF8Oi3BQ+mJuxS00UgyHs8luuOzjzC+qnAtdb43Mpg== +app-builder-bin@3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-3.7.1.tgz#cb0825c5e12efc85b196ac3ed9c89f076c61040e" + integrity sha512-ql93vEUq6WsstGXD+SBLSIQw6SNnhbDEM0swzgugytMxLp3rT24Ag/jcC80ZHxiPRTdew1niuR7P3/FCrDqIjw== -app-builder-lib@22.11.7: - version "22.11.7" - resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-22.11.7.tgz#c0ad1119ebfbf4189a8280ad693625f5e684dca6" - integrity sha512-pS9/cR4/TnNZVAHZECiSvvwTBzbwblj7KBBZkMKDG57nibq0I1XY8zAaYeHFdlYTyrRcz9JUXbAqJKezya7UFQ== +app-builder-lib@22.14.5: + version "22.14.5" + resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-22.14.5.tgz#a61a50b132b858e98fdc70b6b88994ae99b4f96d" + integrity sha512-k3VwKP4kpsnUaXoUkm1s4zaSHPHIMFnN4kPMU9yXaKmE1LfHHqBaEah5bXeTAX5V/BC41wFdg8CF5vOjvgy8Rg== dependencies: "7zip-bin" "~5.1.1" "@develar/schema-utils" "~2.6.5" @@ -1865,12 +1879,14 @@ app-builder-lib@22.11.7: "@malept/flatpak-bundler" "^0.4.0" async-exit-hook "^2.0.1" bluebird-lst "^1.0.9" - builder-util "22.11.7" - builder-util-runtime "8.7.7" + builder-util "22.14.5" + builder-util-runtime "8.9.1" chromium-pickle-js "^0.2.0" debug "^4.3.2" ejs "^3.1.6" - electron-publish "22.11.7" + electron-osx-sign "^0.5.0" + electron-publish "22.14.5" + form-data "^4.0.0" fs-extra "^10.0.0" hosted-git-info "^4.0.2" is-ci "^3.0.0" @@ -2117,7 +2133,7 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -bindings@^1.2.1: +bindings@^1.2.1, bindings@^1.3.0: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== @@ -2131,7 +2147,7 @@ bluebird-lst@^1.0.9: dependencies: bluebird "^3.5.5" -bluebird@^3.5.5: +bluebird@^3.5.0, bluebird@^3.5.5: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== @@ -2214,6 +2230,19 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + buffer-crc32@~0.2.3: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" @@ -2229,6 +2258,11 @@ buffer-equal@1.0.0: resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74= +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= + buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -2242,18 +2276,10 @@ buffer@^5.1.0, buffer@^5.2.0: base64-js "^1.3.1" ieee754 "^1.1.13" -builder-util-runtime@8.7.6: - version "8.7.6" - resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.7.6.tgz#4b43c96db2bd494ced7694bcd7674934655e8324" - integrity sha512-rj9AIY7CzLSuTOXpToiaQkruYh6UEQ+kYnd5UET22ch8MGClEtIZKXHG14qEiXEr2x4EOKDMxkcTa+9TYaE+ug== - dependencies: - debug "^4.3.2" - sax "^1.2.4" - -builder-util-runtime@8.7.7: - version "8.7.7" - resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.7.7.tgz#6c83cc3abe7a7a5c8b4ec8878f68adc828c07f0d" - integrity sha512-RUfoXzVrmFFI0K/Oft0CtP1LpTIOlBeLJatt5DePTI0KlxE156am4SGUpqtbbdqZNm++LkV9mX4olBDcXyGPow== +builder-util-runtime@8.9.1: + version "8.9.1" + resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.9.1.tgz#25f066b3fbc20b3e6236a9b956b1ebb0e33ff66a" + integrity sha512-c8a8J3wK6BIVLW7ls+7TRK9igspTbzWmUqxFbgK0m40Ggm6efUbxtWVCGIjc+dtchyr5qAMAUL6iEGRdS/6vwg== dependencies: debug "^4.3.2" sax "^1.2.4" @@ -2266,18 +2292,19 @@ builder-util-runtime@8.9.2: debug "^4.3.2" sax "^1.2.4" -builder-util@22.11.7: - version "22.11.7" - resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-22.11.7.tgz#ae9707afa6a31feafa13c274ac83b4fe28ef1467" - integrity sha512-ihqUe5ey82LM9qqQe0/oIcaSm9w+B9UjcsWJZxJliTBsbU+sErOpDFpHW+sim0veiTF/EIcGUh9HoduWw+l9FA== +builder-util@22.14.5: + version "22.14.5" + resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-22.14.5.tgz#42a18608d2a566c0846e91266464776c8bfb0cc9" + integrity sha512-zqIHDFJwmA7jV7SC9aI+33MWwT2mWoijH+Ol9IntNAwuuRXoS+7XeJwnhLBXOhcDBzXT4kDzHnRk4JKeaygEYA== dependencies: "7zip-bin" "~5.1.1" - "@types/debug" "^4.1.5" + "@types/debug" "^4.1.6" "@types/fs-extra" "^9.0.11" - app-builder-bin "3.5.13" + app-builder-bin "3.7.1" bluebird-lst "^1.0.9" - builder-util-runtime "8.7.7" + builder-util-runtime "8.9.1" chalk "^4.1.1" + cross-spawn "^7.0.3" debug "^4.3.2" fs-extra "^10.0.0" is-ci "^3.0.0" @@ -2408,10 +2435,10 @@ charenc@0.0.2: resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc= -chokidar@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" - integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== +chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: anymatch "~3.1.2" braces "~3.0.2" @@ -2571,6 +2598,11 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= +compare-version@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/compare-version/-/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080" + integrity sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA= + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -2750,7 +2782,7 @@ debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: dependencies: ms "2.1.2" -debug@^2.6.9: +debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -2899,22 +2931,24 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" -discord-rpc@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/discord-rpc/-/discord-rpc-3.2.0.tgz#8da4e01654fce38e959d70b58708c46ae1d6c8fa" - integrity sha512-KJv0EVbGMlr04HoG6f5b3wD7X9kSHzQ2Ed2qfHSDvYJ1MkE8RbCQmMcQQrSvAxpfsqZgUjB/bsfi/mjyicCH+A== +discord-rpc@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/discord-rpc/-/discord-rpc-4.0.1.tgz#a89aa04a048aa83ad4f347d53fa0162501eae0d8" + integrity sha512-HOvHpbq5STRZJjQIBzwoKnQ0jHplbEWFWlPDwXXKm/bILh4nzjcg7mNqll0UY7RsjFoaXA7e/oYb/4lvpda2zA== dependencies: node-fetch "^2.6.1" ws "^7.3.1" + optionalDependencies: + register-scheme "github:devsnek/node-register-scheme" -dmg-builder@22.11.7: - version "22.11.7" - resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-22.11.7.tgz#5956008c18d40ee72c0ea01ffea9590dbf51df89" - integrity sha512-+I+XfP2DODHB6PwFANgpH/WMzzCA5r5XoMvbFCIYjQjJpXlO0XnqQaamzFl2vh/Wz/Qt0d0lJMgRy8gKR3MGdQ== +dmg-builder@22.14.5: + version "22.14.5" + resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-22.14.5.tgz#137c0b55e639badcc0b119eb060e6fa4ed61d948" + integrity sha512-1GvFGQE332bvPamcMwZDqWqfWfJTyyDLOsHMcGi0zs+Jh7JOn6/zuBkHJIWHdsj2QJbhzLVyd2/ZqttOKv7I8w== dependencies: - app-builder-lib "22.11.7" - builder-util "22.11.7" - builder-util-runtime "8.7.6" + app-builder-lib "22.14.5" + builder-util "22.14.5" + builder-util-runtime "8.9.1" fs-extra "^10.0.0" iconv-lite "^0.6.2" js-yaml "^4.1.0" @@ -3019,17 +3053,17 @@ electron-better-web-request@^1.0.1: url-match-patterns "^0.2.0" uuid "^3.3.2" -electron-builder@^22.10.5: - version "22.11.7" - resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-22.11.7.tgz#cd97a0d9f6e6d388112e66b4376de431cca4d596" - integrity sha512-yQExSLt7Hbz/P8lLkZDdE/OnJJ7NCX+uiQcV+XIH0TeEZcD87ZnSqBBzGUN5akySU4BXXlrVZKeUsXACWrm5Kw== +electron-builder@^22.14.5: + version "22.14.5" + resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-22.14.5.tgz#3a25547bd4fe3728d4704da80956a794c5c31496" + integrity sha512-N73hSbXFz6Mz5Z6h6C5ly6CB+dUN6k1LuCDJjI8VF47bMXv/QE0HE+Kkb0GPKqTqM7Hsk/yIYX+kHCfSkR5FGg== dependencies: - "@types/yargs" "^16.0.2" - app-builder-lib "22.11.7" - builder-util "22.11.7" - builder-util-runtime "8.7.7" + "@types/yargs" "^17.0.1" + app-builder-lib "22.14.5" + builder-util "22.14.5" + builder-util-runtime "8.9.1" chalk "^4.1.1" - dmg-builder "22.11.7" + dmg-builder "22.14.5" fs-extra "^10.0.0" is-ci "^3.0.0" lazy-val "^1.0.5" @@ -3096,14 +3130,26 @@ electron-localshortcut@^3.1.0, electron-localshortcut@^3.2.1: keyboardevent-from-electron-accelerator "^2.0.0" keyboardevents-areequal "^0.2.1" -electron-publish@22.11.7: - version "22.11.7" - resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-22.11.7.tgz#4126cbb08ccf082a2aa7fef89ee629b3a4b8ae9a" - integrity sha512-A4EhRRNBVz4SPzUlBrPO6BmuyDeI0pyprggPAV9rQ+SDVSnSB/WKPot9JwWMyArkGj3AUUTMNVT6hwZhMvhfqw== +electron-osx-sign@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/electron-osx-sign/-/electron-osx-sign-0.5.0.tgz#fc258c5e896859904bbe3d01da06902c04b51c3a" + integrity sha512-icoRLHzFz/qxzDh/N4Pi2z4yVHurlsCAYQvsCSG7fCedJ4UJXBS6PoQyGH71IfcqKupcKeK7HX/NkyfG+v6vlQ== + dependencies: + bluebird "^3.5.0" + compare-version "^0.1.2" + debug "^2.6.8" + isbinaryfile "^3.0.2" + minimist "^1.2.0" + plist "^3.0.1" + +electron-publish@22.14.5: + version "22.14.5" + resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-22.14.5.tgz#34bcdce671f0e651330db20040d6919c77c94bd6" + integrity sha512-h+NANRdaA0PqGF15GKvorseWPzh1PXa/zx4I37//PIokW8eKIov8ky23foUSb55ZFWUHGpxQJux7y2NCfBtQeg== dependencies: "@types/fs-extra" "^9.0.11" - builder-util "22.11.7" - builder-util-runtime "8.7.7" + builder-util "22.14.5" + builder-util-runtime "8.9.1" chalk "^4.1.1" fs-extra "^10.0.0" lazy-val "^1.0.5" @@ -3151,10 +3197,10 @@ electron-updater@^4.6.3: lodash.isequal "^4.5.0" semver "^7.3.5" -electron@^16.0.8: - version "16.0.8" - resolved "https://registry.yarnpkg.com/electron/-/electron-16.0.8.tgz#7ebd3e23c4883c239f53d8b7af1100f455ac8a02" - integrity sha512-znTVkl8LaGcPNdfc6SRr+6LYg2GtSCKXln/nW/PC+urBfAFnOYIuDock8QyGVFfzr5PuAa+g8YQQAboHV77D7g== +electron@^17.0.0: + version "17.0.0" + resolved "https://registry.yarnpkg.com/electron/-/electron-17.0.0.tgz#60f00f3e3c657020e807a519700213943468b4d1" + integrity sha512-3UXcBQMwbMWdPvGHaSdPMluHrd+/bc+K143MyvE5zVZ+S1XCHt4sau7dj6svJHns5llN0YG/c6h/vRfadIp8Zg== dependencies: "@electron/get" "^1.13.0" "@types/node" "^14.6.2" @@ -3930,6 +3976,15 @@ form-data@^3.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" @@ -4892,6 +4947,13 @@ isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= +isbinaryfile@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80" + integrity sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw== + dependencies: + buffer-alloc "^1.2.0" + isbinaryfile@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.8.tgz#5d34b94865bd4946633ecc78a026fc76c5b11fcf" @@ -5793,12 +5855,12 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -m3u8stream@^0.8.4: - version "0.8.4" - resolved "https://registry.yarnpkg.com/m3u8stream/-/m3u8stream-0.8.4.tgz#15b49d0c2b510755ea43c1e53f85d7aaa4dc65c2" - integrity sha512-sco80Db+30RvcaIOndenX6E6oQNgTiBKeJbFPc+yDXwPQIkryfboEbCvXPlBRq3mQTCVPQO93TDVlfRwqpD35w== +m3u8stream@^0.8.6: + version "0.8.6" + resolved "https://registry.yarnpkg.com/m3u8stream/-/m3u8stream-0.8.6.tgz#0d6de4ce8ee69731734e6b616e7b05dd9d9a55b1" + integrity sha512-LZj8kIVf9KCphiHmH7sbFQTVe4tOemb202fWwvJwR9W5ENW/1hxJN6ksAWGhQgSBSa3jyWhnjKU1Fw1GaOdbyA== dependencies: - miniget "^4.0.0" + miniget "^4.2.2" sax "^1.2.4" make-dir@^3.0.0, make-dir@^3.0.2: @@ -5964,6 +6026,11 @@ miniget@^4.2.1: resolved "https://registry.yarnpkg.com/miniget/-/miniget-4.2.1.tgz#11a1c24817a059e292378eb9cff4328d9240c665" integrity sha512-O/DduzDR6f+oDtVype9S/Qu5hhnx73EDYGyZKwU/qN82lehFZdfhoa4DT51SpsO+8epYrB3gcRmws56ROfTIoQ== +miniget@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/miniget/-/miniget-4.2.2.tgz#db20320f265efdc4c1826a0be431d56753074475" + integrity sha512-a7voNL1N5lDMxvTMExOkg+Fq89jM2vY8pAi9ZEWzZtfNmdfP6RXkvUtFnCAXoCv2T9k1v/fUJVaAEuepGcvLYA== + minimatch@3.0.4, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -6031,7 +6098,7 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -node-addon-api@^1.6.3: +node-addon-api@^1.3.0, node-addon-api@^1.6.3: version "1.7.2" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.7.2.tgz#3df30b95720b53c24e59948b49532b662444f54d" integrity sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg== @@ -6913,6 +6980,13 @@ regexpp@^3.0.0, regexpp@^3.1.0: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== +"register-scheme@github:devsnek/node-register-scheme": + version "0.0.2" + resolved "https://codeload.github.com/devsnek/node-register-scheme/tar.gz/e7cc9a63a1f512565da44cb57316d9fb10750e17" + dependencies: + bindings "^1.3.0" + node-addon-api "^1.3.0" + registry-auth-token@^4.0.0: version "4.2.1" resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" @@ -8362,12 +8436,12 @@ yocto-queue@^1.0.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== -ytdl-core@^4.10.0: - version "4.10.0" - resolved "https://registry.yarnpkg.com/ytdl-core/-/ytdl-core-4.10.0.tgz#0835cb411677684539fac2bcc10553f6f58db3e1" - integrity sha512-RCCoSVTmMeBPH5NFR1fh3nkDU9okvWM0ZdN6plw6I5+vBBZVUEpOt8vjbSgprLRMmGUsmrQZJhvG1CHOat4mLA== +ytdl-core@^4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/ytdl-core/-/ytdl-core-4.10.1.tgz#6648d65faca787919181b2cee1be470b2ef9fdcb" + integrity sha512-idBhW+e7HCzs5fR5cqp7Ci+mJhEch41YAaWabYlneQFCL6IGf6Hycv99yVx01Zl1Ci0t/70faOelMSrXaQTE/A== dependencies: - m3u8stream "^0.8.4" + m3u8stream "^0.8.6" miniget "^4.0.0" sax "^1.1.3" From 4d890c4941c8844c40b1221009a2527875784ad5 Mon Sep 17 00:00:00 2001 From: TC Date: Thu, 10 Feb 2022 00:08:40 +0100 Subject: [PATCH 25/25] Fix warnings in genius plugin --- plugins/lyrics-genius/front.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/lyrics-genius/front.js b/plugins/lyrics-genius/front.js index b8e78c1c..4fcb3153 100644 --- a/plugins/lyrics-genius/front.js +++ b/plugins/lyrics-genius/front.js @@ -78,7 +78,7 @@ module.exports = () => { } function setLyrics(lyricsContainer) { - lyricsContainer.innerHTML = + lyricsContainer.innerHTML = `
${hasLyrics ? lyrics : 'Could not retrieve lyrics from genius'} @@ -91,7 +91,7 @@ module.exports = () => { } function setTabsOnclick(callback) { - for (tab of [tabs.upNext, tabs.discover]) { + for (const tab of [tabs.upNext, tabs.discover]) { if (tab) { tab.onclick = callback; }