mirror of
https://github.com/th-ch/youtube-music.git
synced 2026-01-11 18:41:47 +00:00
add skip existing files option
This commit is contained in:
@ -77,6 +77,22 @@ async function downloadSong(url, playlistFolder = undefined, trackId = undefined
|
|||||||
if (metadata.album === 'N/A') metadata.album = '';
|
if (metadata.album === 'N/A') metadata.album = '';
|
||||||
metadata.trackId = trackId;
|
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 = {
|
const download_options = {
|
||||||
type: 'audio', // audio, video or video+audio
|
type: 'audio', // audio, video or video+audio
|
||||||
quality: 'best', // best, bestefficiency, 144p, 240p, 480p, 720p and so on.
|
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 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)) {
|
if (!existsSync(dir)) {
|
||||||
mkdirSync(dir);
|
mkdirSync(dir);
|
||||||
}
|
}
|
||||||
@ -311,10 +316,13 @@ async function downloadPlaylist(givenUrl) {
|
|||||||
const folder = getFolder(options.downloadFolder);
|
const folder = getFolder(options.downloadFolder);
|
||||||
const playlistFolder = join(folder, safePlaylistTitle);
|
const playlistFolder = join(folder, safePlaylistTitle);
|
||||||
if (existsSync(playlistFolder)) {
|
if (existsSync(playlistFolder)) {
|
||||||
sendError(new Error(`The folder ${playlistFolder} already exists`));
|
if (!options.skipExisting) {
|
||||||
return;
|
sendError(new Error(`The folder ${playlistFolder} already exists`));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
mkdirSync(playlistFolder, { recursive: true });
|
||||||
}
|
}
|
||||||
mkdirSync(playlistFolder, { recursive: true });
|
|
||||||
|
|
||||||
dialog.showMessageBox({
|
dialog.showMessageBox({
|
||||||
type: "info",
|
type: "info",
|
||||||
|
|||||||
@ -37,5 +37,14 @@ module.exports = (win, options) => {
|
|||||||
checked: options.preset === preset,
|
checked: options.preset === preset,
|
||||||
})),
|
})),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: "Skip existing files",
|
||||||
|
type: "checkbox",
|
||||||
|
checked: options.skipExisting,
|
||||||
|
click: () => {
|
||||||
|
options.skipExisting = !options.skipExisting;
|
||||||
|
setMenuOptions("downloader", options);
|
||||||
|
}
|
||||||
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user