From c5b059930138fca070c256dad3ddf5c1154916b4 Mon Sep 17 00:00:00 2001 From: ditie193ch Date: Sat, 11 Jul 2020 18:51:08 -0300 Subject: [PATCH] Feature identify, after a restart, if last downloaded file is complete, if it's not the download is restarted --- vimeomaster.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/vimeomaster.js b/vimeomaster.js index 0048067..2d4ef1c 100644 --- a/vimeomaster.js +++ b/vimeomaster.js @@ -64,9 +64,15 @@ function loadVideo(num, cb) { function processFile(type, baseUrl, initData, segments, filename, cb) { const filePath = `./parts/${filename}`; - if (fs.existsSync(filePath)) { + const downloadingFlag = `./parts/.${filename}~` + + if(fs.existsSync(downloadingFlag)) { + log("⚠️", ` ${filename} - ${type} is incomplete, restarting the download`); + } else if (fs.existsSync(filePath)) { log("⚠️", ` ${filename} - ${type} already exists`); return cb(); + } else { + fs.writeFileSync(downloadingFlag, ''); } const segmentsUrl = segments.map(seg => baseUrl + seg.url); @@ -78,7 +84,7 @@ function processFile(type, baseUrl, initData, segments, filename, cb) { flags: "a" }); - combineSegments(type, 0, segmentsUrl, output, filePath, err => { + combineSegments(type, 0, segmentsUrl, output, filePath, downloadingFlag, err => { if (err) { log("⚠️", ` ${err}`); } @@ -88,8 +94,9 @@ function processFile(type, baseUrl, initData, segments, filename, cb) { }); } -function combineSegments(type, i, segmentsUrl, output, filename, cb) { +function combineSegments(type, i, segmentsUrl, output, filename, downloadingFlag, cb) { if (i >= segmentsUrl.length) { + fs.unlinkSync(downloadingFlag); log("🏁", ` ${filename} - ${type} done`); return cb(); }