Esempio n. 1
0
        public async Task <MkvFileHandle> ProcessFile(CancellationToken ct = default)
        {
            using var mkvInfoRunner = new ProcessRunner("mkvinfo", TimeSpan.FromSeconds(15), HandleMkvInfoOutput);

            var successful = await mkvInfoRunner.RunWithArg($"\"{fileInfo.FullName}\"", ct);

            if (!successful)
            {
                logger.Fatal($"mkvinfo exited with non zero code: {mkvInfoRunner.Error}");
                return(null);
            }

            return(new MkvFileHandle(fileInfo, tracks));
        }
Esempio n. 2
0
        public async Task <bool> PutTracksFirst(CancellationToken ct = default)
        {
            if (!TracksAreLoaded())
            {
                return(false);
            }

            string argLine;

            try
            {
                argLine = BuildMkvMergeArgumentLine();
                logger.Trace($"Argument line for mkvmerge for file {handle.FileInfo.FullName}: {argLine}");
            }
            catch (Exception e)
            {
                logger.Fatal(e);
                return(false);
            }

            using var mkvMergeRunner = new ProcessRunner("mkvmerge");
            var successful = await mkvMergeRunner.RunWithArg(argLine, ct);

            if (successful)
            {
                if (settings.OverwriteFile)
                {
                    await MoveFile();
                }
            }
            else
            {
                logger.Fatal($"mkvmerge exited with non zero code: {mkvMergeRunner.Error}");
            }

            return(successful);
        }