Force Muxer command

This commit is contained in:
Izuco 2022-01-16 15:59:39 +01:00
parent 4e055418aa
commit 595b407b22
No known key found for this signature in database
GPG key ID: E9CBE9E4EF3A1BFA
6 changed files with 29 additions and 6 deletions

1
.gitignore vendored
View file

@ -19,5 +19,6 @@ token.yml
lib
test.*
updates.json
funi_token.yml
cr_token.yml
archive.json

View file

@ -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;

View file

@ -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.');

View file

@ -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;

View file

@ -24,6 +24,9 @@ const availableFilenameVars: AvailableFilenameVars[] = [
'service'
];
export type AvailableMuxer = 'ffmpeg' | 'mkvmerge'
export const muxer: AvailableMuxer[] = [ 'ffmpeg', 'mkvmerge' ];
type TAppArg<T extends boolean|string|number|unknown[]> = {
name: string,
group: keyof typeof groups,
@ -538,6 +541,19 @@ const args: TAppArg<boolean|number|string|unknown[]>[] = [
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
}
}
];

View file

@ -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