From 0f6b0bf9fed98851f24782f6f6d4c2d87eff3370 Mon Sep 17 00:00:00 2001 From: Michael Bucari-Tovo Date: Sat, 7 May 2022 22:34:28 -0600 Subject: [PATCH] Add trim audio support to multipart files. --- AaxDecrypter/AaxDecrypter.csproj | 4 ++-- AaxDecrypter/AaxcDownloadMultiConverter.cs | 24 ++++++++++++---------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/AaxDecrypter/AaxDecrypter.csproj b/AaxDecrypter/AaxDecrypter.csproj index fcce32e5..3b99d6cc 100644 --- a/AaxDecrypter/AaxDecrypter.csproj +++ b/AaxDecrypter/AaxDecrypter.csproj @@ -5,8 +5,8 @@ - - + + diff --git a/AaxDecrypter/AaxcDownloadMultiConverter.cs b/AaxDecrypter/AaxcDownloadMultiConverter.cs index badf2b0e..2835a2eb 100644 --- a/AaxDecrypter/AaxcDownloadMultiConverter.cs +++ b/AaxDecrypter/AaxcDownloadMultiConverter.cs @@ -64,7 +64,7 @@ That naming may not be desirable for everyone, but it's an easy change to instea var chapters = DownloadLicense.ChapterInfo.Chapters.ToList(); // Ensure split files are at least minChapterLength in duration. - var splitChapters = new ChapterInfo(); + var splitChapters = new ChapterInfo(DownloadLicense.ChapterInfo.StartOffset); var runningTotal = TimeSpan.Zero; string title = ""; @@ -86,16 +86,18 @@ That naming may not be desirable for everyone, but it's an easy change to instea // reset, just in case multiPartFilePaths.Clear(); + ConversionResult result; + AaxFile.ConversionProgressUpdate += AaxFile_ConversionProgressUpdate; if (OutputFormat == OutputFormat.M4b) - ConvertToMultiMp4a(splitChapters); + result = ConvertToMultiMp4a(splitChapters); else - ConvertToMultiMp3(splitChapters); + result = ConvertToMultiMp3(splitChapters); AaxFile.ConversionProgressUpdate -= AaxFile_ConversionProgressUpdate; Step_DownloadAudiobook_End(zeroProgress); - var success = !IsCanceled; + var success = result == ConversionResult.NoErrorsDetected; if (success) foreach (var path in multiPartFilePaths) @@ -104,22 +106,22 @@ That naming may not be desirable for everyone, but it's an easy change to instea return success; } - private void ConvertToMultiMp4a(ChapterInfo splitChapters) + private ConversionResult ConvertToMultiMp4a(ChapterInfo splitChapters) { var chapterCount = 0; - AaxFile.ConvertToMultiMp4a(splitChapters, newSplitCallback => - createOutputFileStream(++chapterCount, splitChapters, newSplitCallback) - ); + return AaxFile.ConvertToMultiMp4a(splitChapters, newSplitCallback => + createOutputFileStream(++chapterCount, splitChapters, newSplitCallback), + DownloadLicense.TrimOutputToChapterLength); } - private void ConvertToMultiMp3(ChapterInfo splitChapters) + private ConversionResult ConvertToMultiMp3(ChapterInfo splitChapters) { var chapterCount = 0; - AaxFile.ConvertToMultiMp3(splitChapters, newSplitCallback => + return AaxFile.ConvertToMultiMp3(splitChapters, newSplitCallback => { createOutputFileStream(++chapterCount, splitChapters, newSplitCallback); ((NAudio.Lame.LameConfig)newSplitCallback.UserState).ID3.Track = chapterCount.ToString(); - }); + }, null, DownloadLicense.TrimOutputToChapterLength); } private void createOutputFileStream(int currentChapter, ChapterInfo splitChapters, NewSplitCallback newSplitCallback)