Merge pull request #450 from Mbucari/master

Update workflows and AAXClean
This commit is contained in:
rmcrackan 2023-01-16 10:38:18 -05:00 committed by GitHub
commit 9be0d58461
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 81 additions and 36 deletions

View File

@ -14,7 +14,12 @@ on:
type: boolean type: boolean
description: 'Skip running unit tests' description: 'Skip running unit tests'
required: false required: false
default: true default: true
build_deb:
type: boolean
description: 'Build Debian package'
required: false
default: false
jobs: jobs:
windows: windows:
@ -31,6 +36,7 @@ jobs:
linux_deb: linux_deb:
needs: [linux] needs: [linux]
if: inputs.build_deb
uses: ./.github/workflows/build-deb.yml uses: ./.github/workflows/build-deb.yml
with: with:
version: ${{ needs.linux.outputs.version }} version: ${{ needs.linux.outputs.version }}

View File

@ -33,6 +33,7 @@ jobs:
with: with:
version_override: ${{ needs.prerelease.outputs.version }} version_override: ${{ needs.prerelease.outputs.version }}
run_unit_tests: false run_unit_tests: false
build_deb: true
release: release:
needs: [prerelease,build] needs: [prerelease,build]
@ -50,7 +51,7 @@ jobs:
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}' GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'
with: with:
tag_name: '${{ github.ref }}' tag_name: '${{ github.ref }}'
release_name: 'Libation ${{ steps.version.outputs.version }}' release_name: 'Libation ${{ needs.prerelease.outputs.version }}'
body: <Put a body here> body: <Put a body here>
draft: true draft: true
prerelease: false prerelease: false

View File

@ -105,6 +105,9 @@ ln -s /usr/lib/libation/Libation /usr/bin/libation
ln -s /usr/lib/libation/Hangover /usr/bin/hangover ln -s /usr/lib/libation/Hangover /usr/bin/hangover
ln -s /usr/lib/libation/LibationCli /usr/bin/libationcli ln -s /usr/lib/libation/LibationCli /usr/bin/libationcli
# Increase the maximum number of inotify instances
echo fs.inotify.max_user_instances=524288 | tee -a /etc/sysctl.conf && sysctl -p
# workaround until this file is moved to the user's home directory # workaround until this file is moved to the user's home directory
touch /usr/lib/libation/appsettings.json touch /usr/lib/libation/appsettings.json
chmod 666 /usr/lib/libation/appsettings.json chmod 666 /usr/lib/libation/appsettings.json

View File

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

View File

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

View File

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

View File

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