diff --git a/public/index.js b/public/index.js index a8289a5..b87f3db 100644 --- a/public/index.js +++ b/public/index.js @@ -80,19 +80,19 @@ socket.on('download-count', async (data) => { downloadCount = data.num; }); -socket.on('download-done', async(data) => { - completedDownloads++; - +socket.on('download-done', async(data) => { downloads[data.video] = {title: data.title, percent: 'Complete!'}; renderDownloads(); - if (completedDownloads == downloadCount) { - completedDownloads = 0; downloadCount = 0; - isDownloading = false; - downloads = []; - } }); socket.on('download-progress', async (data) => { downloads[data.video] = data; renderDownloads(); }); + +socket.on('queue-concluded', async (data) => { + completedDownloads = 0; downloadCount = 0; + isDownloading = false; + downloads = []; + document.getElementById('VideoBox').innerHTML += "Queue Concluded..."; +}); diff --git a/src/youtubehelper.js b/src/youtubehelper.js index 8f702c3..5728cb4 100644 --- a/src/youtubehelper.js +++ b/src/youtubehelper.js @@ -60,22 +60,21 @@ module.exports.setupDownloadQueue = async (arr, socket, options) => { videos: { } } - for (const [key, value] of Object.entries(arr)) { - if (ytdl.validateURL(key)) { - - numOfDownloads++; + for (const [key, value] of Object.entries(arr)) + if (ytdl.validateURL(key)) socket.emit('download-progress', {video: key, percent: "Queued", title: value.title}); - } - } - - socket.emit('download-count', {num: numOfDownloads}); - for (const [key, value] of Object.entries(arr)) { - if (ytdl.validateURL(key)) { - await runQueueAsync(socket.id); - await download(key, value.title, socket, options.audioOnly); + await new Promise(async (resolve, reject) => { + for (const [key, value] of Object.entries(arr)) { + if (ytdl.validateURL(key)) { + await runQueueAsync(socket.id); + await download(key, value.title, socket, options.audioOnly); + } + // if (arr.indexOf(key) == arr.length) {resolve();} } - } + resolve(); + }); + socket.emit('queue-concluded'); } async function runQueueAsync(socketID) {