add skip existing files option

This commit is contained in:
Araxeus
2023-03-04 15:17:54 +02:00
parent cd41f093be
commit 7b3280c12b
2 changed files with 31 additions and 14 deletions

View File

@ -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)) {
if (!options.skipExisting) {
sendError(new Error(`The folder ${playlistFolder} already exists`));
return;
}
} else {
mkdirSync(playlistFolder, { recursive: true });
}
dialog.showMessageBox({
type: "info",

View File

@ -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);
}
}
];
};