From 0c159df6ca188ab0438c9902320549dc48bb88fd Mon Sep 17 00:00:00 2001 From: Michael Bucari-Tovo Date: Thu, 24 Jun 2021 18:09:43 -0600 Subject: [PATCH] Simplified download decrypt progress update. Removed unused fields and properties. --- .../AaxcDownloadConverter.cs | 10 ++++- .../FFMpegAaxcProcesser.cs | 39 ++----------------- 2 files changed, 12 insertions(+), 37 deletions(-) diff --git a/FileLiberator/AaxcDownloadDecrypt/AaxcDownloadConverter.cs b/FileLiberator/AaxcDownloadDecrypt/AaxcDownloadConverter.cs index 2cb6f0ed..cc2c7db0 100644 --- a/FileLiberator/AaxcDownloadDecrypt/AaxcDownloadConverter.cs +++ b/FileLiberator/AaxcDownloadDecrypt/AaxcDownloadConverter.cs @@ -144,8 +144,7 @@ namespace FileLiberator.AaxcDownloadDecrypt var aaxcProcesser = new FFMpegAaxcProcesser(DecryptSupportLibraries.ffmpegPath); - aaxcProcesser.ProgressUpdate += (_, e) => - DecryptProgressUpdate?.Invoke(this, (int)e.ProgressPercent); + aaxcProcesser.ProgressUpdate += AaxcProcesser_ProgressUpdate; aaxcProcesser.ProcessBook( downloadLicense.DownloadUrl, @@ -160,6 +159,13 @@ namespace FileLiberator.AaxcDownloadDecrypt return aaxcProcesser.Succeeded; } + private void AaxcProcesser_ProgressUpdate(object sender, TimeSpan e) + { + double progressPercent = Math.Max(100 * e.TotalSeconds / tags.duration.TotalSeconds, 1); + + DecryptProgressUpdate?.Invoke(this, (int)progressPercent); + } + private static string GenerateFfmpegChapters(ChapterInfo chapters) { var stringBuilder = new System.Text.StringBuilder(); diff --git a/FileLiberator/AaxcDownloadDecrypt/FFMpegAaxcProcesser.cs b/FileLiberator/AaxcDownloadDecrypt/FFMpegAaxcProcesser.cs index 27a23616..6503707e 100644 --- a/FileLiberator/AaxcDownloadDecrypt/FFMpegAaxcProcesser.cs +++ b/FileLiberator/AaxcDownloadDecrypt/FFMpegAaxcProcesser.cs @@ -6,27 +6,19 @@ using System.Threading.Tasks; namespace FileLiberator.AaxcDownloadDecrypt { - public class AaxcProgress : EventArgs - { - public TimeSpan ProcessedTime { get; set; } - public TimeSpan AudioDuration { get; set; } - public double ProgressPercent => Math.Round(100 * ProcessedTime.TotalSeconds / AudioDuration.TotalSeconds,2); - } + /// /// Download audible aaxc, decrypt, remux, add metadata, and insert cover art. /// class FFMpegAaxcProcesser { - public event EventHandler ProgressUpdate; + public event EventHandler ProgressUpdate; public string FFMpegPath { get; } public bool IsRunning { get; set; } = false; public bool Succeeded { get; private set; } private static Regex processedTimeRegex = new Regex("time=(\\d{2}):(\\d{2}):(\\d{2}).\\d{2}", RegexOptions.IgnoreCase | RegexOptions.Compiled); - private static Regex durationRegex = new Regex("Duration: (\\d{2}):(\\d{2}):(\\d{2}).\\d{2}", RegexOptions.IgnoreCase | RegexOptions.Compiled); - private TimeSpan duration { get; set; } - private TimeSpan position { get; set; } public FFMpegAaxcProcesser(string ffmpegPath) { FFMpegPath = ffmpegPath; @@ -50,11 +42,9 @@ namespace FileLiberator.AaxcDownloadDecrypt IsRunning = true; - downloader.ErrorDataReceived += Downloader_ErrorDataReceived; remuxer.ErrorDataReceived += Remuxer_ErrorDataReceived; downloader.Start(); - downloader.BeginErrorReadLine(); var pipedOutput = downloader.StandardOutput.BaseStream; @@ -91,22 +81,6 @@ namespace FileLiberator.AaxcDownloadDecrypt IsRunning = false; Succeeded = downloader.ExitCode == 0 && remuxer.ExitCode == 0; } - - private void Downloader_ErrorDataReceived(object sender, DataReceivedEventArgs e) - { - if (!string.IsNullOrEmpty(e.Data) && durationRegex.IsMatch(e.Data)) - { - //get total audio stream duration - var match = durationRegex.Match(e.Data); - - int hours = int.Parse(match.Groups[1].Value); - int minutes = int.Parse(match.Groups[2].Value); - int seconds = int.Parse(match.Groups[3].Value); - - duration = new TimeSpan(hours, minutes, seconds); - } - } - private void Remuxer_ErrorDataReceived(object sender, DataReceivedEventArgs e) { if (!string.IsNullOrEmpty(e.Data) && processedTimeRegex.IsMatch(e.Data)) @@ -118,13 +92,9 @@ namespace FileLiberator.AaxcDownloadDecrypt int minutes = int.Parse(match.Groups[2].Value); int seconds = int.Parse(match.Groups[3].Value); - position = new TimeSpan(hours, minutes, seconds); + var position = new TimeSpan(hours, minutes, seconds); - ProgressUpdate?.Invoke(sender, new AaxcProgress - { - ProcessedTime = position, - AudioDuration = duration - }); + ProgressUpdate?.Invoke(sender, position); } } @@ -133,7 +103,6 @@ namespace FileLiberator.AaxcDownloadDecrypt { FileName = FFMpegPath, RedirectStandardOutput = true, - RedirectStandardError = true, CreateNoWindow = true, WindowStyle = ProcessWindowStyle.Hidden, UseShellExecute = false,