You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.5 KiB
50 lines
1.5 KiB
var needle = require('needle'); |
|
const fs = require('fs-extra') |
|
|
|
function stream_multiple(req, res, _urls, stream_dir, index = 0) { |
|
if (index == 0) { |
|
// initial state |
|
} |
|
|
|
let writeStream; |
|
const uri = _urls[index]; |
|
|
|
if (index == undefined) { |
|
index = 0; |
|
stream_multiple(req, res, _urls, stream_dir, index); |
|
} else { |
|
|
|
writeStream = fs.createWriteStream(`${stream_dir}` + `${index}.jpeg`); |
|
|
|
writeStream.on("ready", () => console.log({ msg: `STREAM::WRITE::READY::${index}` })); |
|
writeStream.on("open", () => console.log({ msg: `STREAM::WRITE::OPEN::${index}` })); |
|
writeStream.on("finish", () => console.log({ msg: `STREAM::WRITE::DONE::${index}` })); |
|
|
|
writeStream.on('close', () => { |
|
if (index >= _urls.length - 1) { |
|
res.redirect('/'); |
|
} else { |
|
stream_multiple(req, res, _urls, stream_dir, index + 1); |
|
} |
|
}) |
|
|
|
needle |
|
.get(uri, function (error, response) { |
|
if (response.bytes >= 1) { |
|
// you want to kill our servers |
|
} |
|
|
|
if (!error && response.statusCode == 200) { |
|
// good |
|
} else { |
|
// then we can retry later |
|
} |
|
}) |
|
.pipe(writeStream) |
|
.on('done', function () { |
|
// needle |
|
}); |
|
} |
|
} |
|
|
|
module.exports = { stream_multiple } |