const hbjs = require('handbrake-js'); const path = require('path'); const settings = require('../data/settings.json'); // get the settings const { log } = require('./utils'); // spawn a handbrake const process = (input, output, preset) => { return new Promise((resolve, reject) => { const inputName = path.basename(input); const outputName = path.basename(output); hbjs .spawn({ input: input, output: output, preset: preset, }) .on('start', err => { log(` -> "${outputName}" [starting] (${new Date()} with "${preset}")`); }) .on('error', err => { log(` -> "${outputName}" [errored] (${new Date()}: ${err.message || err})\n`); //if (settings.queue.deleteOnFail) reject(err); }) .on('progress', progress => { log(` -> "${outputName}" [transcoding] (${progress.percentComplete}%, ETA: ${progress.eta})`); }) .on('cancelled', () => { log(` -> "${outputName}" [cancelled] (${new Date()})\n`); reject(new Error(`Processing "${outputName}" cancelled`)); }) .on('complete', () => { log(` -> "${outputName}" [completed] (${new Date()} with "${preset}")\n`); resolve(true); }); }); }; module.exports = { process, };