Update AAXClean and add better error handling
This commit is contained in:
parent
38c75dc8c5
commit
1addcc8211
@ -13,7 +13,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="AAXClean.Codecs" Version="0.3.1" />
|
<PackageReference Include="AAXClean.Codecs" Version="0.5.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@ -13,6 +13,7 @@ namespace AaxDecrypter
|
|||||||
{
|
{
|
||||||
private static TimeSpan minChapterLength { get; } = TimeSpan.FromSeconds(3);
|
private static TimeSpan minChapterLength { get; } = TimeSpan.FromSeconds(3);
|
||||||
private List<string> multiPartFilePaths { get; } = new List<string>();
|
private List<string> multiPartFilePaths { get; } = new List<string>();
|
||||||
|
private FileStream workingFileStream;
|
||||||
|
|
||||||
public AaxcDownloadMultiConverter(string outFileName, string cacheDirectory, IDownloadOptions dlOptions)
|
public AaxcDownloadMultiConverter(string outFileName, string cacheDirectory, IDownloadOptions dlOptions)
|
||||||
: base(outFileName, cacheDirectory, dlOptions) { }
|
: base(outFileName, cacheDirectory, dlOptions) { }
|
||||||
@ -130,18 +131,31 @@ That naming may not be desirable for everyone, but it's an easy change to instea
|
|||||||
// reset, just in case
|
// reset, just in case
|
||||||
multiPartFilePaths.Clear();
|
multiPartFilePaths.Clear();
|
||||||
|
|
||||||
ConversionResult result;
|
try
|
||||||
|
{
|
||||||
|
ConversionResult result;
|
||||||
|
|
||||||
AaxFile.ConversionProgressUpdate += AaxFile_ConversionProgressUpdate;
|
AaxFile.ConversionProgressUpdate += AaxFile_ConversionProgressUpdate;
|
||||||
if (DownloadOptions.OutputFormat == OutputFormat.M4b)
|
if (DownloadOptions.OutputFormat == OutputFormat.M4b)
|
||||||
result = await ConvertToMultiMp4a(splitChapters);
|
result = await ConvertToMultiMp4a(splitChapters);
|
||||||
else
|
else
|
||||||
result = await ConvertToMultiMp3(splitChapters);
|
result = await ConvertToMultiMp3(splitChapters);
|
||||||
AaxFile.ConversionProgressUpdate -= AaxFile_ConversionProgressUpdate;
|
|
||||||
|
|
||||||
Step_DownloadAudiobook_End(zeroProgress);
|
return result == ConversionResult.NoErrorsDetected;
|
||||||
|
}
|
||||||
|
catch(Exception ex)
|
||||||
|
{
|
||||||
|
Serilog.Log.Error(ex, "AAXClean Error");
|
||||||
|
workingFileStream?.Close();
|
||||||
|
FileUtility.SaferDelete(workingFileStream.Name);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
AaxFile.ConversionProgressUpdate -= AaxFile_ConversionProgressUpdate;
|
||||||
|
|
||||||
return result == ConversionResult.NoErrorsDetected;
|
Step_DownloadAudiobook_End(zeroProgress);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Task<ConversionResult> ConvertToMultiMp4a(ChapterInfo splitChapters)
|
private Task<ConversionResult> ConvertToMultiMp4a(ChapterInfo splitChapters)
|
||||||
@ -195,9 +209,9 @@ That naming may not be desirable for everyone, but it's an easy change to instea
|
|||||||
|
|
||||||
FileUtility.SaferDelete(fileName);
|
FileUtility.SaferDelete(fileName);
|
||||||
|
|
||||||
var file = File.Open(fileName, FileMode.OpenOrCreate);
|
workingFileStream = File.Open(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
|
||||||
OnFileCreated(fileName);
|
OnFileCreated(fileName);
|
||||||
return file;
|
return workingFileStream;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -92,17 +92,28 @@ namespace AaxDecrypter
|
|||||||
|
|
||||||
AaxFile.ConversionProgressUpdate += AaxFile_ConversionProgressUpdate;
|
AaxFile.ConversionProgressUpdate += AaxFile_ConversionProgressUpdate;
|
||||||
|
|
||||||
ConversionResult decryptionResult = await decryptAsync(outputFile);
|
try
|
||||||
|
{
|
||||||
|
ConversionResult decryptionResult = await decryptAsync(outputFile);
|
||||||
|
var success = decryptionResult == ConversionResult.NoErrorsDetected && !IsCanceled;
|
||||||
|
if (success)
|
||||||
|
base.OnFileCreated(OutputFileName);
|
||||||
|
|
||||||
AaxFile.ConversionProgressUpdate -= AaxFile_ConversionProgressUpdate;
|
return success;
|
||||||
|
}
|
||||||
|
catch(Exception ex)
|
||||||
|
{
|
||||||
|
Serilog.Log.Error(ex, "AAXClean Error");
|
||||||
|
FileUtility.SaferDelete(OutputFileName);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
outputFile.Close();
|
||||||
|
AaxFile.ConversionProgressUpdate -= AaxFile_ConversionProgressUpdate;
|
||||||
|
|
||||||
Step_DownloadAudiobook_End(zeroProgress);
|
Step_DownloadAudiobook_End(zeroProgress);
|
||||||
|
}
|
||||||
var success = decryptionResult == ConversionResult.NoErrorsDetected && !IsCanceled;
|
|
||||||
if (success)
|
|
||||||
base.OnFileCreated(OutputFileName);
|
|
||||||
|
|
||||||
return success;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Task<ConversionResult> decryptAsync(Stream outputFile)
|
private Task<ConversionResult> decryptAsync(Stream outputFile)
|
||||||
|
|||||||
@ -64,30 +64,40 @@ namespace FileLiberator
|
|||||||
config.LameMatchSourceBR);
|
config.LameMatchSourceBR);
|
||||||
|
|
||||||
using var mp3File = File.OpenWrite(Path.GetTempFileName());
|
using var mp3File = File.OpenWrite(Path.GetTempFileName());
|
||||||
var result = await m4bBook.ConvertToMp3Async(mp3File, lameConfig);
|
try
|
||||||
m4bBook.InputStream.Close();
|
|
||||||
mp3File.Close();
|
|
||||||
|
|
||||||
if (result == ConversionResult.Failed)
|
|
||||||
{
|
{
|
||||||
FileUtility.SaferDelete(mp3File.Name);
|
var result = await m4bBook.ConvertToMp3Async(mp3File, lameConfig);
|
||||||
|
|
||||||
|
var realMp3Path = FileUtility.SaferMoveToValidPath(mp3File.Name, proposedMp3Path, Configuration.Instance.ReplacementCharacters);
|
||||||
|
OnFileCreated(libraryBook, realMp3Path);
|
||||||
|
|
||||||
|
if (result == ConversionResult.Failed)
|
||||||
|
{
|
||||||
|
FileUtility.SaferDelete(mp3File.Name);
|
||||||
|
}
|
||||||
|
else if (result == ConversionResult.Cancelled)
|
||||||
|
{
|
||||||
|
FileUtility.SaferDelete(mp3File.Name);
|
||||||
|
return new StatusHandler { "Cancelled" };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Serilog.Log.Error(ex, "AAXClean error");
|
||||||
return new StatusHandler { "Conversion failed" };
|
return new StatusHandler { "Conversion failed" };
|
||||||
}
|
}
|
||||||
else if (result == ConversionResult.Cancelled)
|
finally
|
||||||
{
|
{
|
||||||
FileUtility.SaferDelete(mp3File.Name);
|
m4bBook.InputStream.Close();
|
||||||
return new StatusHandler { "Cancelled" };
|
mp3File.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
var realMp3Path = FileUtility.SaferMoveToValidPath(mp3File.Name, proposedMp3Path, Configuration.Instance.ReplacementCharacters);
|
|
||||||
OnFileCreated(libraryBook, realMp3Path);
|
|
||||||
}
|
}
|
||||||
return new StatusHandler();
|
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
OnCompleted(libraryBook);
|
OnCompleted(libraryBook);
|
||||||
}
|
}
|
||||||
|
return new StatusHandler();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void M4bBook_ConversionProgressUpdate(object sender, ConversionProgressEventArgs e)
|
private void M4bBook_ConversionProgressUpdate(object sender, ConversionProgressEventArgs e)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user