unencrypted podcast downloads (incomplete)
This commit is contained in:
parent
937bd56fcc
commit
db84c9a7d9
@ -55,8 +55,7 @@ namespace AaxDecrypter
|
|||||||
["Step 1: Get Aaxc Metadata"] = Step1_GetMetadata,
|
["Step 1: Get Aaxc Metadata"] = Step1_GetMetadata,
|
||||||
["Step 2: Download Decrypted Audiobook"] = Step2_DownloadAndCombine,
|
["Step 2: Download Decrypted Audiobook"] = Step2_DownloadAndCombine,
|
||||||
["Step 3: Create Cue"] = Step3_CreateCue,
|
["Step 3: Create Cue"] = Step3_CreateCue,
|
||||||
["Step 4: Create Nfo"] = Step4_CreateNfo,
|
["Step 4: Cleanup"] = Step4_Cleanup,
|
||||||
["Step 5: Cleanup"] = Step5_Cleanup,
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -197,21 +196,7 @@ namespace AaxDecrypter
|
|||||||
return !isCanceled;
|
return !isCanceled;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool Step4_CreateNfo()
|
public bool Step4_Cleanup()
|
||||||
{
|
|
||||||
// not a critical step. its failure should not prevent future steps from running
|
|
||||||
try
|
|
||||||
{
|
|
||||||
File.WriteAllText(PathLib.ReplaceExtension(outputFileName, ".nfo"), NFO.CreateContents(AppName, aaxFile, downloadLicense.ChapterInfo));
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Serilog.Log.Logger.Error(ex, $"{nameof(Step4_CreateNfo)}. FAILED");
|
|
||||||
}
|
|
||||||
return !isCanceled;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool Step5_Cleanup()
|
|
||||||
{
|
{
|
||||||
FileExt.SafeDelete(jsonDownloadState);
|
FileExt.SafeDelete(jsonDownloadState);
|
||||||
FileExt.SafeDelete(tempFile);
|
FileExt.SafeDelete(tempFile);
|
||||||
|
|||||||
@ -13,15 +13,12 @@ namespace AaxDecrypter
|
|||||||
|
|
||||||
public DownloadLicense(string downloadUrl, string audibleKey, string audibleIV, string userAgent)
|
public DownloadLicense(string downloadUrl, string audibleKey, string audibleIV, string userAgent)
|
||||||
{
|
{
|
||||||
ArgumentValidator.EnsureNotNullOrEmpty(downloadUrl, nameof(downloadUrl));
|
DownloadUrl = ArgumentValidator.EnsureNotNullOrEmpty(downloadUrl, nameof(downloadUrl));
|
||||||
ArgumentValidator.EnsureNotNullOrEmpty(audibleKey, nameof(audibleKey));
|
UserAgent = ArgumentValidator.EnsureNotNullOrEmpty(userAgent, nameof(userAgent));
|
||||||
ArgumentValidator.EnsureNotNullOrEmpty(audibleIV, nameof(audibleIV));
|
|
||||||
ArgumentValidator.EnsureNotNullOrEmpty(userAgent, nameof(userAgent));
|
|
||||||
|
|
||||||
DownloadUrl = downloadUrl;
|
// no null/empty check. unencrypted files do not have these
|
||||||
AudibleKey = audibleKey;
|
AudibleKey = audibleKey;
|
||||||
AudibleIV = audibleIV;
|
AudibleIV = audibleIV;
|
||||||
UserAgent = userAgent;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,54 +0,0 @@
|
|||||||
using AAXClean;
|
|
||||||
using Dinah.Core;
|
|
||||||
|
|
||||||
namespace AaxDecrypter
|
|
||||||
{
|
|
||||||
public static class NFO
|
|
||||||
{
|
|
||||||
public static string CreateContents(string ripper, Mp4File aaxcTagLib, ChapterInfo chapters)
|
|
||||||
{
|
|
||||||
var _hours = (int)aaxcTagLib.Duration.TotalHours;
|
|
||||||
var myDuration
|
|
||||||
= (_hours > 0 ? _hours + " hours, " : string.Empty)
|
|
||||||
+ aaxcTagLib.Duration.Minutes + " minutes, "
|
|
||||||
+ aaxcTagLib.Duration.Seconds + " seconds";
|
|
||||||
|
|
||||||
var nfoString
|
|
||||||
= "General Information\r\n"
|
|
||||||
+ "======================\r\n"
|
|
||||||
+ $" Title: {aaxcTagLib.AppleTags.TitleSansUnabridged?.UnicodeToAscii() ?? "[unknown]"}\r\n"
|
|
||||||
+ $" Author: {aaxcTagLib.AppleTags.FirstAuthor?.UnicodeToAscii() ?? "[unknown]"}\r\n"
|
|
||||||
+ $" Read By: {aaxcTagLib.AppleTags.Narrator?.UnicodeToAscii() ?? "[unknown]"}\r\n"
|
|
||||||
+ $" Release Date: {aaxcTagLib.AppleTags.ReleaseDate ?? "[unknown]"}\r\n"
|
|
||||||
+ $" Book Copyright: {aaxcTagLib.AppleTags.BookCopyright ?? "[unknown]"}\r\n"
|
|
||||||
+ $" Recording Copyright: {aaxcTagLib.AppleTags.RecordingCopyright ?? "[unknown]"}\r\n"
|
|
||||||
+ $" Genre: {aaxcTagLib.AppleTags.Generes ?? "[unknown]"}\r\n"
|
|
||||||
+ $" Publisher: {aaxcTagLib.AppleTags.Publisher ?? "[unknown]"}\r\n"
|
|
||||||
+ $" Duration: {myDuration}\r\n"
|
|
||||||
+ $" Chapters: {chapters.Count}\r\n"
|
|
||||||
+ "\r\n"
|
|
||||||
+ "\r\n"
|
|
||||||
+ "Media Information\r\n"
|
|
||||||
+ "======================\r\n"
|
|
||||||
+ " Source Format: Audible AAXC\r\n"
|
|
||||||
+ $" Source Sample Rate: {aaxcTagLib.TimeScale} Hz\r\n"
|
|
||||||
+ $" Source Channels: {aaxcTagLib.AudioChannels}\r\n"
|
|
||||||
+ $" Source Bitrate: {aaxcTagLib.AverageBitrate} Kbps\r\n"
|
|
||||||
+ "\r\n"
|
|
||||||
+ " Lossless Encode: Yes\r\n"
|
|
||||||
+ " Encoded Codec: AAC / M4B\r\n"
|
|
||||||
+ $" Encoded Sample Rate: {aaxcTagLib.TimeScale} Hz\r\n"
|
|
||||||
+ $" Encoded Channels: {aaxcTagLib.AudioChannels}\r\n"
|
|
||||||
+ $" Encoded Bitrate: {aaxcTagLib.AverageBitrate} Kbps\r\n"
|
|
||||||
+ "\r\n"
|
|
||||||
+ $" Ripper: {ripper}\r\n"
|
|
||||||
+ "\r\n"
|
|
||||||
+ "\r\n"
|
|
||||||
+ "Book Description\r\n"
|
|
||||||
+ "================\r\n"
|
|
||||||
+ (!string.IsNullOrWhiteSpace(aaxcTagLib.AppleTags.LongDescription) ? aaxcTagLib.AppleTags.LongDescription.UnicodeToAscii() : aaxcTagLib.AppleTags.Comment?.UnicodeToAscii());
|
|
||||||
|
|
||||||
return nfoString;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net5.0</TargetFramework>
|
<TargetFramework>net5.0</TargetFramework>
|
||||||
<Version>6.0.6.2</Version>
|
<Version>6.0.7.1</Version>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="AudibleApi" Version="2.1.3.1" />
|
<PackageReference Include="AudibleApi" Version="2.2.0.1" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user