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
1 month ago
|
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 }
|