ripunzel/src/save/save.js

38 lines
1.2 KiB
JavaScript
Raw Normal View History

'use strict';
const fs = require('fs-extra');
const path = require('path');
const ffmpeg = require('fluent-ffmpeg');
function save(filepath, streams, item, post) {
const pathComponents = path.parse(filepath);
// allow for single stream argument
streams = [].concat(streams);
return Promise.resolve().then(() => {
return fs.ensureDir(pathComponents.dir);
}).then(() => {
return Promise.all(streams.map((stream, index) => {
const target = streams.length > 1 ? path.join(pathComponents.dir, `${pathComponents.name}-${index}${pathComponents.ext}`) : filepath;
const file = fs.createWriteStream(target);
return new Promise((resolve, reject) => {
stream.pipe(file).on('error', error => {
reject(error);
}).on('finish', () => {
if(item && item.mux) {
console.log(`Temporarily saved '${target}', queued for muxing`);
} else {
console.log('\x1b[32m%s\x1b[0m', `Saved '${target}'`);
}
resolve(target);
});
});
}));
});
};
module.exports = save;