diff --git a/lib/youtube-dl.js b/lib/youtube-dl.js index 98c52f9..4c69c7c 100644 --- a/lib/youtube-dl.js +++ b/lib/youtube-dl.js @@ -1,6 +1,6 @@ 'use strict' -const { execFile } = require('child_process') +const universalify = require('universalify') const streamify = require('streamify') const request = require('request') const hms = require('hh-mm-ss') @@ -17,20 +17,13 @@ const { let ytdlBinary = require('./get-binary')() -const TEN_MEGABYTES = 1000 * 1000 * 10 - -const execFileOpts = { maxBuffer: TEN_MEGABYTES } +const execa = universalify.fromPromise(require('execa')) function youtubeDl (args, options, cb) { - return execFile( - ytdlBinary, - args, - { ...execFileOpts, ...options }, - function done (err, stdout, stderr) { - if (err) return cb(err) - return cb(null, stdout.trim().split(/\r?\n/)) - } - ) + return execa(ytdlBinary, args, options, function done (err, output) { + if (err) return cb(err) + return cb(null, output.stdout.trim().split(/\r?\n/)) + }) } /** @@ -54,7 +47,12 @@ function processData (data, options, stream) { headers.Range = 'bytes=' + options.start + '-' + options.end } - const req = request({ url: item.url, headers: headers, ecdhCurve: 'auto', timeout: 30000 }) + const req = request({ + url: item.url, + headers: headers, + ecdhCurve: 'auto', + timeout: 30000 + }) req.on('response', function response (res) { const size = parseInt(res.headers['content-length'], 10) diff --git a/package.json b/package.json index fa55533..fb0704c 100644 --- a/package.json +++ b/package.json @@ -159,10 +159,12 @@ "youtube" ], "dependencies": { + "execa": "~3.2.0", "hh-mm-ss": "~1.2.0", "mkdirp": "~0.5.1", "request": "~2.88.0", - "streamify": "~0.2.9" + "streamify": "~0.2.9", + "universalify": "~0.1.2" }, "devDependencies": { "@commitlint/cli": "latest",