diff --git a/lib/youtube-dl.js b/lib/youtube-dl.js index affda90..2e6bd9a 100644 --- a/lib/youtube-dl.js +++ b/lib/youtube-dl.js @@ -1,4 +1,5 @@ var spawn = require('child_process').spawn + , execFile = require('child_process').execFile , EventEmitter = require('events').EventEmitter , fs = require('fs') , path = require('path') @@ -205,7 +206,7 @@ exports.download = function(url, dest, args) { // gets info from a video -module.exports.info = function(url, callback, args) { +exports.info = function(url, callback, args) { // setup settings if (args == null) { args = []; @@ -222,10 +223,11 @@ module.exports.info = function(url, callback, args) { args.push(url); // call youtube-dl - var youtubedl = spawn(file, args); - var err = null, info; - youtubedl.stdout.on('data', function(data) { - data = data.toString().split('\n'); + var youtubedl = execFile(file, args, function(err, stdout, stderr) { + if (err) return callback(err); + if (stderr) return callback(new Error(stderr.slice(7))); + + var data = stdout.split('\n'); info = { title : data[0] , url : data[1] @@ -233,14 +235,7 @@ module.exports.info = function(url, callback, args) { , description : data[3] , filename : data[4] }; - }); - youtubedl.stderr.on('data', function(data) { - data = data.toString().trim(); - err = new Error(data.substring(7, data.length - 1)); - }); - - youtubedl.on('exit', function(code) { - return callback(err, info); + callback(null, info); }); };