From 174743a211807e2568fd7ca5f4a858ae3cfab69c Mon Sep 17 00:00:00 2001 From: Roly Fentanes Date: Tue, 15 Oct 2013 00:26:00 -0400 Subject: [PATCH] fix reading download state --- lib/youtube-dl.js | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/lib/youtube-dl.js b/lib/youtube-dl.js index 5cb34f7..6a2fae4 100644 --- a/lib/youtube-dl.js +++ b/lib/youtube-dl.js @@ -21,7 +21,7 @@ fs.exists(file, function(exists) { }); }); -var progressRegex = /(\d+\.\d)% of (\d+\.\d+\w+) at\s+([^\s]+) ETA ((\d|-)+:(\d|-)+)/; +var progressRegex = /(\d+(?:\.\d)?)% of (\d+\.\d+\w+) at\s+([^\s]+) ETA ((\d|-)+:(\d|-)+)/; /** @@ -60,29 +60,31 @@ exports.download = function(urladdr, dest, args) { youtubedl.stdout.setEncoding('utf8'); youtubedl.stdout.pipe(line); line.on('data', function(data) { - var pos, result; + var pos; // Check if video is uploading so script can start // calling the download progress function. - if (state === 'download' && (result = progressRegex.exec(data))) { - - // If this is the first progress display, grab file size. - if (!size) { - emitter.emit(state, { - filename : filename - , size : size = result[2] + if (state === 'download') { + var result; + if (result = progressRegex.exec(data)) { + // If this is the first progress display, grab file size. + if (!size) { + emitter.emit(state, { + filename : filename + , size : size = result[2] + }); + } + + if (result[3] !== '---b/s') { + speed.push(util.toBytes(result[3].substring(0, result[3].length - 2))); + } + emitter.emit('progress', { + percent : result[1] + , speed : result[3] + , eta : result[4] }); } - if (result[3] !== '---b/s') { - speed.push(util.toBytes(result[3].substring(0, result[3].length - 2))); - } - emitter.emit('progress', { - percent : result[1] - , speed : result[3] - , eta : result[4] - }); - // About to start downloading video. } else if ((pos = data.indexOf('[download] ')) === 0) { state = 'download';