Use metadata URL in downloader (fallback to current URL)

This commit is contained in:
TC
2021-03-29 22:00:49 +02:00
parent ebe8755613
commit 640f146373
2 changed files with 69 additions and 56 deletions

View File

@ -35,7 +35,7 @@ const reinit = () => {
// contextBridge.exposeInMainWorld("downloader", {
// download: () => {
global.download = () => {
const videoUrl = window.location.href;
const videoUrl = global.songInfo.url || window.location.href;
downloadVideoToMP3(
videoUrl,

View File

@ -7,16 +7,28 @@ const is = require("electron-is");
const ytpl = require("ytpl");
const { setOptions } = require("../../config/plugins");
const getSongInfo = require("../../providers/song-info");
const { sendError } = require("./back");
const { defaultMenuDownloadLabel, getFolder } = require("./utils");
let downloadLabel = defaultMenuDownloadLabel;
let metadataURL = undefined;
let callbackIsRegistered = false;
module.exports = (win, options, refreshMenu) => [
module.exports = (win, options, refreshMenu) => {
if (!callbackIsRegistered) {
const registerCallback = getSongInfo(win);
registerCallback((info) => {
metadataURL = info.url;
});
callbackIsRegistered = true;
}
return [
{
label: downloadLabel,
click: async () => {
const currentURL = win.webContents.getURL();
const currentURL = metadataURL || win.webContents.getURL();
const playlistID = new URL(currentURL).searchParams.get("list");
if (!playlistID) {
sendError(win, new Error("No playlist ID found"));
@ -74,4 +86,5 @@ module.exports = (win, options, refreshMenu) => [
} // else = user pressed cancel
},
},
];
];
};