From 595b407b22f7b4187cc179766ef5c0cc3dcfac0f Mon Sep 17 00:00:00 2001 From: Izuco Date: Sun, 16 Jan 2022 15:59:39 +0100 Subject: [PATCH] Force Muxer command --- .gitignore | 1 + crunchy.ts | 2 +- funi.ts | 2 +- modules/module.app-args.ts | 4 ++-- modules/module.args.ts | 16 ++++++++++++++++ modules/module.merger.ts | 10 ++++++++-- 6 files changed, 29 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index c0cc86d..db9dc48 100644 --- a/.gitignore +++ b/.gitignore @@ -19,5 +19,6 @@ token.yml lib test.* updates.json +funi_token.yml cr_token.yml archive.json \ No newline at end of file diff --git a/crunchy.ts b/crunchy.ts index 637f59d..7cf8c7c 100644 --- a/crunchy.ts +++ b/crunchy.ts @@ -857,7 +857,7 @@ async function muxStreams(data: DownloadedMedia[], output: string) { }; }) }); - const bin = Merger.checkMerger(cfg.bin, argv.mp4); + const bin = Merger.checkMerger(cfg.bin, argv.mp4, argv.forceMuxer); // collect fonts info // mergers let isMuxed = false; diff --git a/funi.ts b/funi.ts index ec17bc7..0c0ad6b 100644 --- a/funi.ts +++ b/funi.ts @@ -731,7 +731,7 @@ async function downloadStreams(epsiode: FunimationMediaDownload){ } // check exec - const mergerBin = merger.checkMerger(cfg.bin, argv.mp4); + const mergerBin = merger.checkMerger(cfg.bin, argv.mp4, argv.forceMuxer); if ( argv.novids ){ console.log('[INFO] Video not downloaded. Skip muxing video.'); diff --git a/modules/module.app-args.ts b/modules/module.app-args.ts index f6e38f4..866eb86 100644 --- a/modules/module.app-args.ts +++ b/modules/module.app-args.ts @@ -1,9 +1,9 @@ import yargs, { Choices } from 'yargs'; -import { args, groups } from './module.args'; +import { args, AvailableMuxer, groups } from './module.args'; yargs(process.argv.slice(2)); -let argvC: { [x: string]: unknown; username: string|undefined, password: string|undefined, silentAuth: boolean, skipSubMux: boolean, downloadArchive: boolean, addArchive: boolean, but: boolean, auth: boolean | undefined; dlFonts: boolean | undefined; search: string | undefined; 'search-type': string; page: number | undefined; 'search-locale': string; new: boolean | undefined; 'movie-listing': string | undefined; series: string | undefined; s: string | undefined; e: string | undefined; q: number; x: number; kstream: number; partsize: number; hslang: string; dlsubs: string[]; novids: boolean | undefined; noaudio: boolean | undefined; nosubs: boolean | undefined; dubLang: string[]; all: boolean; fontSize: number; allDubs: boolean; timeout: number; simul: boolean; mp4: boolean; skipmux: boolean | undefined; fileName: string; numbers: number; nosess: string; debug: boolean | undefined; nocleanup: boolean; help: boolean | undefined; service: 'funi' | 'crunchy'; update: boolean; fontName: string | undefined; _: (string | number)[]; $0: string; }; +let argvC: { [x: string]: unknown; forceMuxer: AvailableMuxer|undefined; username: string|undefined, password: string|undefined, silentAuth: boolean, skipSubMux: boolean, downloadArchive: boolean, addArchive: boolean, but: boolean, auth: boolean | undefined; dlFonts: boolean | undefined; search: string | undefined; 'search-type': string; page: number | undefined; 'search-locale': string; new: boolean | undefined; 'movie-listing': string | undefined; series: string | undefined; s: string | undefined; e: string | undefined; q: number; x: number; kstream: number; partsize: number; hslang: string; dlsubs: string[]; novids: boolean | undefined; noaudio: boolean | undefined; nosubs: boolean | undefined; dubLang: string[]; all: boolean; fontSize: number; allDubs: boolean; timeout: number; simul: boolean; mp4: boolean; skipmux: boolean | undefined; fileName: string; numbers: number; nosess: string; debug: boolean | undefined; nocleanup: boolean; help: boolean | undefined; service: 'funi' | 'crunchy'; update: boolean; fontName: string | undefined; _: (string | number)[]; $0: string; }; export type ArgvType = typeof argvC; diff --git a/modules/module.args.ts b/modules/module.args.ts index e00c8ef..30ab620 100644 --- a/modules/module.args.ts +++ b/modules/module.args.ts @@ -24,6 +24,9 @@ const availableFilenameVars: AvailableFilenameVars[] = [ 'service' ]; +export type AvailableMuxer = 'ffmpeg' | 'mkvmerge' +export const muxer: AvailableMuxer[] = [ 'ffmpeg', 'mkvmerge' ]; + type TAppArg = { name: string, group: keyof typeof groups, @@ -538,6 +541,19 @@ const args: TAppArg[] = [ default: { default: false } + }, + { + name: 'forceMuxer', + describe: 'Force the program to use said muxer or don\'t mux if the given muxer is not present', + docDescribe: true, + group: 'mux', + service: 'both', + type: 'string', + usage: '${muxer}', + choices: muxer, + default: { + default: undefined + } } ]; diff --git a/modules/module.merger.ts b/modules/module.merger.ts index 1f009e4..de699cc 100644 --- a/modules/module.merger.ts +++ b/modules/module.merger.ts @@ -201,11 +201,17 @@ class Merger { public static checkMerger(bin: { mkvmerge?: string, - ffmpeg?: string - }, useMP4format: boolean) : { + ffmpeg?: string, + }, useMP4format: boolean, force: AvailableMuxer|undefined) : { MKVmerge?: string, FFmpeg?: string } { + if (force && bin[force]) { + return { + FFmpeg: force === 'ffmpeg' ? bin.ffmpeg : undefined, + MKVmerge: force === 'mkvmerge' ? bin.mkvmerge : undefined + }; + } if (useMP4format && bin.ffmpeg) { return { FFmpeg: bin.ffmpeg