UNPKG

crunchy

Version:

Crunchy is a fork of Crunchyroll.js, capable of downloading anime episodes from the popular CrunchyRoll streaming service.

72 lines 2.12 kB
'use strict'; exports.__esModule = true; var childProcess = require("child_process"); var fs = require("fs"); var os = require("os"); var path = require("path"); var index_1 = require("../subtitle/index"); /** * Merges the subtitle and video files into a Matroska Multimedia Container. */ function default_1(config, isSubtitled, videoFileExtention, filePath, verbose, done) { var subtitlePath = filePath + '.' + (index_1["default"].formats[config.format] ? config.format : 'ass'); var videoPath = filePath; var cp; videoPath += videoFileExtention; cp = childProcess.exec(command() + ' ' + '-o "' + filePath + '.mkv" ' + '"' + videoPath + '" ' + (isSubtitled ? '"' + subtitlePath + '"' : ''), { maxBuffer: Infinity }, function (err) { if (err) { return done(err); } unlink(videoPath, subtitlePath, function (errin) { if (errin) { unlinkTimeout(videoPath, subtitlePath, 5000); } done(null); }); }); if (verbose === true) { cp.stdin.pipe(process.stdin); cp.stdout.pipe(process.stdout); cp.stderr.pipe(process.stderr); } } exports["default"] = default_1; /** * Determines the command for the operating system. */ function command() { if (os.platform() !== 'win32') { return 'mkvmerge'; } return '"' + path.join(__dirname, '../../bin/mkvmerge.exe') + '"'; } /** * Unlinks the video and subtitle. * @private */ function unlink(videoPath, subtitlePath, done) { fs.unlink(videoPath, function (err) { if (err) { return done(err); } fs.unlink(subtitlePath, done); }); } /** * Attempts to unlink the video and subtitle with a timeout between each try. */ function unlinkTimeout(videoPath, subtitlePath, timeout) { setTimeout(function () { unlink(videoPath, subtitlePath, function (err) { if (err) { unlinkTimeout(videoPath, subtitlePath, timeout); } }); }, timeout); } //# sourceMappingURL=merge.js.map