From 7b3280c12bb9338409ac43a041adf55404743c20 Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Sat, 4 Mar 2023 15:17:54 +0200 Subject: [PATCH] add `skip existing files` option --- plugins/downloader/back.js | 36 ++++++++++++++++++++++-------------- plugins/downloader/menu.js | 9 +++++++++ 2 files changed, 31 insertions(+), 14 deletions(-) diff --git a/plugins/downloader/back.js b/plugins/downloader/back.js index 09aa0e06..b6a16f48 100644 --- a/plugins/downloader/back.js +++ b/plugins/downloader/back.js @@ -77,6 +77,22 @@ async function downloadSong(url, playlistFolder = undefined, trackId = undefined if (metadata.album === 'N/A') metadata.album = ''; metadata.trackId = trackId; + const dir = playlistFolder || options.downloadFolder || app.getPath("downloads"); + const name = `${metadata.artist ? `${metadata.artist} - ` : ""}${metadata.title}`; + + const extension = presets[options.preset]?.extension || 'mp3'; + + const filename = filenamify(`${name}.${extension}`, { + replacement: "_", + maxLength: 255, + }); + const filePath = join(dir, filename); + + if (options.skipExisting && existsSync(filePath)) { + sendFeedback(null, -1); + return; + } + const download_options = { type: 'audio', // audio, video or video+audio quality: 'best', // best, bestefficiency, 144p, 240p, 480p, 720p and so on. @@ -90,17 +106,6 @@ async function downloadSong(url, playlistFolder = undefined, trackId = undefined const iterableStream = Utils.streamToIterable(stream); - const dir = playlistFolder || options.downloadFolder || app.getPath("downloads"); - const name = `${metadata.artist ? `${metadata.artist} - ` : ""}${metadata.title}`; - - const extension = presets[options.preset]?.extension || 'mp3'; - - const filename = filenamify(`${name}.${extension}`, { - replacement: "_", - maxLength: 255, - }); - const filePath = join(dir, filename); - if (!existsSync(dir)) { mkdirSync(dir); } @@ -311,10 +316,13 @@ async function downloadPlaylist(givenUrl) { const folder = getFolder(options.downloadFolder); const playlistFolder = join(folder, safePlaylistTitle); if (existsSync(playlistFolder)) { - sendError(new Error(`The folder ${playlistFolder} already exists`)); - return; + if (!options.skipExisting) { + sendError(new Error(`The folder ${playlistFolder} already exists`)); + return; + } + } else { + mkdirSync(playlistFolder, { recursive: true }); } - mkdirSync(playlistFolder, { recursive: true }); dialog.showMessageBox({ type: "info", diff --git a/plugins/downloader/menu.js b/plugins/downloader/menu.js index 439a5b6e..e7b72586 100644 --- a/plugins/downloader/menu.js +++ b/plugins/downloader/menu.js @@ -37,5 +37,14 @@ module.exports = (win, options) => { checked: options.preset === preset, })), }, + { + label: "Skip existing files", + type: "checkbox", + checked: options.skipExisting, + click: () => { + options.skipExisting = !options.skipExisting; + setMenuOptions("downloader", options); + } + } ]; };