mirror of
https://github.com/rmcrackan/Libation.git
synced 2026-02-18 00:17:43 +01:00
- Add `LIBATION_FILES_DIR` environment variable to specify LibationFiles directory instead of appsettings.json - OptionsBase supports overriding setting - Added `EphemeralSettings` which are loaded from Settings.json once and can be modified with the `--override` command parameter - Added `get-setting` command - Prints (editable) settings and their values. Prints specified settings, or all settings if none specified - `--listEnumValues` option will list all names for a speficied enum-type settings. If no setting names are specified, prints all enum values for all enum settings. - Prints in a text-based table or bare with `-b` switch - Added `get-license` command which requests a content license and prints it as a json to stdout - Improved `liberate` command - Added `-force` option to force liberation without validation. - Added support to download with a license file supplied to stdin - Improve startup performance when downloading explicit ASIN(s) - Fix long-standing bug where cover art was not being downloading
56 lines
1.6 KiB
C#
56 lines
1.6 KiB
C#
using AAXClean;
|
|
using System;
|
|
|
|
#nullable enable
|
|
namespace AaxDecrypter
|
|
{
|
|
public class KeyData
|
|
{
|
|
public byte[] KeyPart1 { get; }
|
|
public byte[]? KeyPart2 { get; }
|
|
|
|
public KeyData(byte[] keyPart1, byte[]? keyPart2 = null)
|
|
{
|
|
KeyPart1 = keyPart1;
|
|
KeyPart2 = keyPart2;
|
|
}
|
|
|
|
[Newtonsoft.Json.JsonConstructor]
|
|
public KeyData(string keyPart1, string? keyPart2 = null)
|
|
{
|
|
ArgumentNullException.ThrowIfNull(keyPart1, nameof(keyPart1));
|
|
KeyPart1 = Convert.FromHexString(keyPart1);
|
|
if (keyPart2 != null)
|
|
KeyPart2 = Convert.FromHexString(keyPart2);
|
|
}
|
|
}
|
|
|
|
public interface IDownloadOptions
|
|
{
|
|
event EventHandler<long> DownloadSpeedChanged;
|
|
string DownloadUrl { get; }
|
|
string UserAgent { get; }
|
|
KeyData[]? DecryptionKeys { get; }
|
|
TimeSpan RuntimeLength { get; }
|
|
OutputFormat OutputFormat { get; }
|
|
bool StripUnabridged { get; }
|
|
bool CreateCueSheet { get; }
|
|
long DownloadSpeedBps { get; }
|
|
ChapterInfo ChapterInfo { get; }
|
|
bool FixupFile { get; }
|
|
string? AudibleProductId { get; }
|
|
string? Title { get; }
|
|
string? Subtitle { get; }
|
|
string? Publisher { get; }
|
|
string? Language { get; }
|
|
string? SeriesName { get; }
|
|
string? SeriesNumber { get; }
|
|
NAudio.Lame.LameConfig? LameConfig { get; }
|
|
bool Downsample { get; }
|
|
bool MatchSourceBitrate { get; }
|
|
bool MoveMoovToBeginning { get; }
|
|
string GetMultipartTitle(MultiConvertFileProperties props);
|
|
public FileType? InputType { get; }
|
|
}
|
|
}
|