From 63734219972dadc652eb27464fbd0809a3645a84 Mon Sep 17 00:00:00 2001 From: audiamus Date: Sun, 10 Jul 2022 17:18:57 +0200 Subject: [PATCH] Version 0.9 --- README.md | 10 ++++---- res/Setup.json | 6 ++--- .../Audible.json.core.csproj | 6 ++--- src/Audible.json.core/LibraryResponse.cs | 2 +- src/Audible.json.core/LicenseResponse.cs | 20 ++++++++-------- src/AuxLib.core/AuxLib.core.csproj | 8 +++---- .../AuxWin.DialogBox.core.csproj | 6 ++--- src/AuxWin.lib.core/AuxWin.lib.core.csproj | 6 ++--- src/AuxWin32Lib.core/AuxWin32Lib.core.csproj | 10 +++++--- .../BooksDatabase.core.csproj | 14 +++++------ .../CommonTypes.lib.core.csproj | 6 ++--- .../CommonUtil.lib.core.csproj | 6 ++--- src/Connect.app.gui.core/BookLibConnect.odt | Bin 26212 -> 28202 bytes .../Connect.app.gui.core.csproj | 8 +++---- .../PublishProfiles/FolderProfile.pubxml | 12 +++++----- src/Connect.lib.core/AudibleApi.cs | 22 +++++++++++------- src/Connect.lib.core/Authorize.cs | 2 ++ src/Connect.lib.core/BookLibrary.cs | 10 ++++---- src/Connect.lib.core/Connect.lib.core.csproj | 12 +++++----- .../Connect.ui.lib.core.csproj | 6 ++--- src/InnoSetup/BookLibConnect setup.iss | 4 ++-- src/PropGridLib.core/PropGridLib.core.csproj | 6 ++--- src/SystemMgmt.core/SystemMgmt.core.csproj | 8 +++---- .../TreeDecomposition.core.csproj | 6 ++--- 24 files changed, 104 insertions(+), 92 deletions(-) diff --git a/README.md b/README.md index f4df8e7..3edb690 100644 --- a/README.md +++ b/README.md @@ -21,9 +21,9 @@ _**Note:** Books downloaded with Book Lib Connect and exported for [AAX Audio Co ## Download -Windows setup package version 0.8, English, with manual: +Windows setup package version 0.9, English, with manual: -**[BookLibConnect-0.8-Setup.exe](https://github.com/audiamus/BookLibConnect/releases/download/v0.8/BookLibConnect-0.8-Setup.exe)** +**[BookLibConnect-0.9-Setup.exe](https://github.com/audiamus/BookLibConnect/releases/download/v0.9/BookLibConnect-0.9-Setup.exe)** ## Feedback Use the [Discussions](https://github.com/audiamus/BookLibConnect/discussions) and [Issues](https://github.com/audiamus/BookLibConnect/issues) sections. @@ -31,9 +31,9 @@ Be cautious with uploading log files to these sections as they may contain sensi ## Dependencies AAX Audio Converter will run on Windows 64bit. Minimum Windows version is 7. -The application requires .Net 5 64 bit to be installed. On Windows 10/11 systems this should normally be the case, if the system is kept up to date. -If not, the app will prompt you for downloading .Net 5 and open the link in your default web browser. From the many options, pick -**.Net 5 Runtime x64 for Windows desktop**. +The application requires .Net 6 64 bit to be installed. On Windows 10/11 systems this should normally be the case, if the system is kept up to date. +If not, the app will prompt you for downloading .Net 6 and open the link in your default web browser. From the many options, pick +**.Net 6 Runtime x64 for _Windows desktop_**. ## Acknowledgments - [mkb79](https://github.com/mkb79/Audible) for his Python library which served as the reference implementation of the Audible API to me, straightforward and easy to follow. diff --git a/res/Setup.json b/res/Setup.json index cc5cdb2..590e504 100644 --- a/res/Setup.json +++ b/res/Setup.json @@ -1,10 +1,10 @@ [ { - "Url": "https://github.com/audiamus/BookLibConnect/releases/download/v0.8/BookLibConnect-0.8-Setup.exe", + "Url": "https://github.com/audiamus/BookLibConnect/releases/download/v0.9/BookLibConnect-0.9-Setup.exe", "AppName": "BookLibConnect", - "Version": "0.8", + "Version": "0.9", "Preview": false, "Descript": "Standalone Audible downloader and decrypter, companion to AAX Audio Converter", - "Md5": "00e23831b05d51cc62b76cdb433648b2" + "Md5": "741a9fa8bf4d66066a3c9e2e378846f0" } ] diff --git a/src/Audible.json.core/Audible.json.core.csproj b/src/Audible.json.core/Audible.json.core.csproj index d6ca5f3..5083fa4 100644 --- a/src/Audible.json.core/Audible.json.core.csproj +++ b/src/Audible.json.core/Audible.json.core.csproj @@ -1,13 +1,13 @@ - net5.0 + net6.0 core.audiamus.adb.json audiamus.audiible.json.core audiamus Copyright © 2021 - $([System.DateTime]::UtcNow.Year) audiamus ($([System.DateTime]::UtcNow.ToString("s"))) - 0.4.0.0 - 0.4.0.0 + 0.5.0.0 + 0.5.0.0 diff --git a/src/Audible.json.core/LibraryResponse.cs b/src/Audible.json.core/LibraryResponse.cs index 88297e4..b95bd6e 100644 --- a/src/Audible.json.core/LibraryResponse.cs +++ b/src/Audible.json.core/LibraryResponse.cs @@ -65,7 +65,7 @@ public class Product { public string origin_marketplace { get; set; } public string origin_type { get; set; } public string pdf_url { get; set; } - public float percent_complete { get; set; } + public float? percent_complete { get; set; } public Plan[] plans { get; set; } public Product_Images product_images { get; set; } public string publication_name { get; set; } diff --git a/src/Audible.json.core/LicenseResponse.cs b/src/Audible.json.core/LicenseResponse.cs index f5b7391..4889a4b 100644 --- a/src/Audible.json.core/LicenseResponse.cs +++ b/src/Audible.json.core/LicenseResponse.cs @@ -18,7 +18,7 @@ public partial class ContentLicense { public string license_response { get; set; } public string message { get; set; } public string request_id { get; set; } - public bool requires_ad_supported_playback { get; set; } + public bool? requires_ad_supported_playback { get; set; } public string status_code { get; set; } public string voucher_id { get; set; } @@ -33,18 +33,18 @@ public class ContentMetadata { } public class ChapterInfo { - public int brandIntroDurationMs { get; set; } - public int brandOutroDurationMs { get; set; } + public int? brandIntroDurationMs { get; set; } + public int? brandOutroDurationMs { get; set; } public Chapter[] chapters { get; set; } - public bool is_accurate { get; set; } - public int runtime_length_ms { get; set; } - public int runtime_length_sec { get; set; } + public bool? is_accurate { get; set; } + public int? runtime_length_ms { get; set; } + public int? runtime_length_sec { get; set; } } public class Chapter { - public int length_ms { get; set; } - public int start_offset_ms { get; set; } - public int start_offset_sec { get; set; } + public int? length_ms { get; set; } + public int? start_offset_ms { get; set; } + public int? start_offset_sec { get; set; } public string title { get; set; } public Chapter[] chapters { get; set; } } @@ -67,7 +67,7 @@ public class ContentUrl { public class LastPositionHeard { public string last_updated { get; set; } - public int position_ms { get; set; } + public int? position_ms { get; set; } public string status { get; set; } } } diff --git a/src/AuxLib.core/AuxLib.core.csproj b/src/AuxLib.core/AuxLib.core.csproj index ccb14d8..f694428 100644 --- a/src/AuxLib.core/AuxLib.core.csproj +++ b/src/AuxLib.core/AuxLib.core.csproj @@ -1,17 +1,17 @@ - net5.0 + net6.0 core.audiamus.aux audiamus.aux.core audiamus - 2.1.0.1 - 2.1.0.1 + 2.2.0.0 + 2.2.0.0 Copyright © 2019 - $([System.DateTime]::UtcNow.Year) audiamus ($([System.DateTime]::UtcNow.ToString("s"))) - + diff --git a/src/AuxWin.DialogBox.core/AuxWin.DialogBox.core.csproj b/src/AuxWin.DialogBox.core/AuxWin.DialogBox.core.csproj index ca235c0..b6c320f 100644 --- a/src/AuxWin.DialogBox.core/AuxWin.DialogBox.core.csproj +++ b/src/AuxWin.DialogBox.core/AuxWin.DialogBox.core.csproj @@ -1,13 +1,13 @@ - net5.0-windows + net6.0-windows true core.audiamus.aux.win audiamus.aux.win.dialogbox.core audiamus - 2.0.0.0 - 2.0.0.0 + 2.1.0.0 + 2.1.0.0 Copyright © 2019 - $([System.DateTime]::UtcNow.Year) audiamus ($([System.DateTime]::UtcNow.ToString("s"))) diff --git a/src/AuxWin.lib.core/AuxWin.lib.core.csproj b/src/AuxWin.lib.core/AuxWin.lib.core.csproj index b556671..b3c301d 100644 --- a/src/AuxWin.lib.core/AuxWin.lib.core.csproj +++ b/src/AuxWin.lib.core/AuxWin.lib.core.csproj @@ -1,13 +1,13 @@  - net5.0-windows + net6.0-windows true core.audiamus.aux.win audiamus.aux.win.core audiamus - 2.1.0.0 - 2.1.0.0 + 2.2.0.0 + 2.2.0.0 Copyright © 2019 - $([System.DateTime]::UtcNow.Year) audiamus ($([System.DateTime]::UtcNow.ToString("s"))) diff --git a/src/AuxWin32Lib.core/AuxWin32Lib.core.csproj b/src/AuxWin32Lib.core/AuxWin32Lib.core.csproj index b7decf0..76c202a 100644 --- a/src/AuxWin32Lib.core/AuxWin32Lib.core.csproj +++ b/src/AuxWin32Lib.core/AuxWin32Lib.core.csproj @@ -1,12 +1,12 @@  - net5.0-windows + net6.0 core.audiamus.aux.w32 audiamus.aux.w32.core audiamus - 2.1.1.0 - 2.1.1.0 + 2.2.0.0 + 2.2.0.0 Copyright © 2019 - $([System.DateTime]::UtcNow.Year) audiamus ($([System.DateTime]::UtcNow.ToString("s"))) @@ -22,4 +22,8 @@ + + + + diff --git a/src/BooksDatabase.core/BooksDatabase.core.csproj b/src/BooksDatabase.core/BooksDatabase.core.csproj index 1de4063..84c1243 100644 --- a/src/BooksDatabase.core/BooksDatabase.core.csproj +++ b/src/BooksDatabase.core/BooksDatabase.core.csproj @@ -1,23 +1,23 @@ - net5.0 + net6.0 core.audiamus.booksdb audiamus.booksdb.core audiamus Copyright © 2021 - $([System.DateTime]::UtcNow.Year) audiamus ($([System.DateTime]::UtcNow.ToString("s"))) - 0.5.0.0 - 0.5.0.0 + 0.6.0.0 + 0.6.0.0 - + all runtime; build; native; contentfiles; analyzers; buildtransitive - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/CommonTypes.lib.core/CommonTypes.lib.core.csproj b/src/CommonTypes.lib.core/CommonTypes.lib.core.csproj index d0a2028..8018f79 100644 --- a/src/CommonTypes.lib.core/CommonTypes.lib.core.csproj +++ b/src/CommonTypes.lib.core/CommonTypes.lib.core.csproj @@ -1,13 +1,13 @@ - net5.0 + net6.0 core.audiamus.common audiamus.common.types.core audiamus Copyright © 2021 - $([System.DateTime]::UtcNow.Year) audiamus ($([System.DateTime]::UtcNow.ToString("s"))) - 0.1.0.0 - 0.1.0.0 + 0.2.0.0 + 0.2.0.0 diff --git a/src/CommonUtil.lib.core/CommonUtil.lib.core.csproj b/src/CommonUtil.lib.core/CommonUtil.lib.core.csproj index 008cb71..d3cd342 100644 --- a/src/CommonUtil.lib.core/CommonUtil.lib.core.csproj +++ b/src/CommonUtil.lib.core/CommonUtil.lib.core.csproj @@ -1,13 +1,13 @@ - net5.0-windows + net6.0 core.audiamus.util audiamus.common.util.core audiamus Copyright © 2021 - $([System.DateTime]::UtcNow.Year) audiamus ($([System.DateTime]::UtcNow.ToString("s"))) - 0.2.0.0 - 0.2.0.0 + 0.3.0.0 + 0.3.0.0 diff --git a/src/Connect.app.gui.core/BookLibConnect.odt b/src/Connect.app.gui.core/BookLibConnect.odt index a4b962a6db370a4af9b55ceefb0c8887b7f24a49..6cf1f4ca6887a39c4f5cb9c60ac8b628a0b83983 100644 GIT binary patch literal 28202 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�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 literal 26212 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 J3rv5#`+stbvqb;^ diff --git a/src/Connect.app.gui.core/Connect.app.gui.core.csproj b/src/Connect.app.gui.core/Connect.app.gui.core.csproj index a2e37d2..4f4cb27 100644 --- a/src/Connect.app.gui.core/Connect.app.gui.core.csproj +++ b/src/Connect.app.gui.core/Connect.app.gui.core.csproj @@ -2,15 +2,15 @@ WinExe - net5.0-windows + net6.0-windows true audiamus BookLibConnect Book Lib Connect core.audiamus.connect.app.gui Copyright © 2021 - $([System.DateTime]::UtcNow.Year) audiamus ($([System.DateTime]::UtcNow.ToString("s"))) - 0.8.0.0 - 0.8.0.0 + 0.9.0.0 + 0.9.0.0 Resources\audio.ico @@ -23,7 +23,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/Connect.app.gui.core/Properties/PublishProfiles/FolderProfile.pubxml b/src/Connect.app.gui.core/Properties/PublishProfiles/FolderProfile.pubxml index eda5b17..e888339 100644 --- a/src/Connect.app.gui.core/Properties/PublishProfiles/FolderProfile.pubxml +++ b/src/Connect.app.gui.core/Properties/PublishProfiles/FolderProfile.pubxml @@ -1,17 +1,17 @@  - + Release Any CPU - bin\Release\net5.0-windows\publish\ + bin\Release\net6.0-windows\publish\ FileSystem - net5.0-windows + net6.0-windows win-x64 false - True - True + true + true \ No newline at end of file diff --git a/src/Connect.lib.core/AudibleApi.cs b/src/Connect.lib.core/AudibleApi.cs index 0495448..ccb19fb 100644 --- a/src/Connect.lib.core/AudibleApi.cs +++ b/src/Connect.lib.core/AudibleApi.cs @@ -124,17 +124,20 @@ const string GROUPS if (pageResult is null) return null; + if (Logging.Level >= 3) { + string file = pageResult.WriteTempJsonFile ("LibraryResponse"); + Log (3, this, () => $"page={page}, file=\"{Path.GetFileName (file)}\""); + } adb.json.LibraryResponse libraryResponse = adb.json.LibraryResponse.Deserialize (pageResult); + if (libraryResponse is null) + return null; + if (!(libraryResponse?.items.Any () ?? false)) break; var pageProducts = libraryResponse.items; Log (3, this, () => $"#items/page={pageProducts.Length}"); - if (Logging.Level >= 3) { - string file = pageResult.WriteTempJsonFile ("LibraryResponse"); - Log (3, this, () => $"page={page}, file=\"{Path.GetFileName (file)}\""); - } libProducts.AddRange (pageProducts); } } else { @@ -206,7 +209,7 @@ public async Task GetActivationBytesAsync () { adb.json.LicenseResponse license = adb.json.LicenseResponse.Deserialize (response); - decryptLicense (license.content_license); + decryptLicense (license?.content_license); return license; } @@ -224,7 +227,7 @@ public async Task GetDownloadLicenseAndSaveAsync (Conversion conversion, E return false; } - var lic = licresp.content_license; + var lic = licresp?.content_license; if (lic?.voucher is null) { conversion.State = EConversionState.license_denied; Log (3, this, () => $"{conversion}; license decryption failed."); @@ -368,9 +371,9 @@ void rename (string file, string suffix) { File.Move (file, sfxfile, true); } - void aaxFile_ConversionProgressUpdate (object sender, ConversionProgressEventArgs e) { + async void aaxFile_ConversionProgressUpdate (object sender, ConversionProgressEventArgs e) { if (cancToken.IsCancellationRequested) - aaxFile?.Cancel (); + await aaxFile?.CancelAsync (); progressAction.Invoke (conversion, e.ProcessPosition); } } @@ -479,6 +482,9 @@ private void decryptLicense (adb.json.ContentLicense license) { // See also //https://patchwork.ffmpeg.org/project/ffmpeg/patch/17559601585196510@sas2-2fa759678732.qloud-c.yandex.net/ + if (license is null) + return; + string hashable = Profile.DeviceInfo.Type + Profile.DeviceInfo.Serial + Profile.CustomerInfo.AccountId + license.asin; diff --git a/src/Connect.lib.core/Authorize.cs b/src/Connect.lib.core/Authorize.cs index 979400c..1e1ae62 100644 --- a/src/Connect.lib.core/Authorize.cs +++ b/src/Connect.lib.core/Authorize.cs @@ -374,6 +374,8 @@ internal bool updateProfile (Profile profile, string json) { jsonCleaned.WriteTempJsonFile (REGISTRATION + "(cleared)"); } var root = adb.json.RegistrationResponse.Deserialize (json); + if (root is null) + return false; var response = root.response; var success = response.success; diff --git a/src/Connect.lib.core/BookLibrary.cs b/src/Connect.lib.core/BookLibrary.cs index f8597b6..f6843b8 100644 --- a/src/Connect.lib.core/BookLibrary.cs +++ b/src/Connect.lib.core/BookLibrary.cs @@ -601,10 +601,10 @@ internal static void addChapters (BookDbContext dbContext, adb.json.ContentLicen comp.ChapterInfo = chapterInfo; } - chapterInfo.BrandIntroDurationMs = source.brandIntroDurationMs; - chapterInfo.BrandOutroDurationMs = source.brandOutroDurationMs; + chapterInfo.BrandIntroDurationMs = source.brandIntroDurationMs ?? 0; + chapterInfo.BrandOutroDurationMs = source.brandOutroDurationMs ?? 0; chapterInfo.IsAccurate = source.is_accurate; - chapterInfo.RuntimeLengthMs = source.runtime_length_ms; + chapterInfo.RuntimeLengthMs = source.runtime_length_ms ?? 0; if (source.chapters.IsNullOrEmpty ()) return; @@ -622,8 +622,8 @@ internal static void addChapters (BookDbContext dbContext, adb.json.ContentLicen } private static void setChapter (adb.json.Chapter src, Chapter chapter) { - chapter.LengthMs = src.length_ms; - chapter.StartOffsetMs = src.start_offset_ms; + chapter.LengthMs = src.length_ms ?? 0; + chapter.StartOffsetMs = src.start_offset_ms ?? 0; chapter.Title = src.title; } diff --git a/src/Connect.lib.core/Connect.lib.core.csproj b/src/Connect.lib.core/Connect.lib.core.csproj index 0e0d9cb..d1ea4f5 100644 --- a/src/Connect.lib.core/Connect.lib.core.csproj +++ b/src/Connect.lib.core/Connect.lib.core.csproj @@ -1,14 +1,14 @@ - net5.0-windows + net6.0 audiamus core.audiamus.connect audiamus.connect.core audiamus Copyright © 2021 - $([System.DateTime]::UtcNow.Year) audiamus ($([System.DateTime]::UtcNow.ToString("s"))) - 0.8.0.0 - 0.8.0.0 + 0.9.0.0 + 0.9.0.0 @@ -20,9 +20,9 @@ - - - + + + diff --git a/src/Connect.ui.lib.core/Connect.ui.lib.core.csproj b/src/Connect.ui.lib.core/Connect.ui.lib.core.csproj index d137a79..ccc6f2f 100644 --- a/src/Connect.ui.lib.core/Connect.ui.lib.core.csproj +++ b/src/Connect.ui.lib.core/Connect.ui.lib.core.csproj @@ -1,14 +1,14 @@  - net5.0-windows + net6.0-windows true core.audiamus.connect.ui audiamus.connect.ui.core audiamus Copyright © 2021 - $([System.DateTime]::UtcNow.Year) audiamus ($([System.DateTime]::UtcNow.ToString("s"))) - 0.8.0.0 - 0.8.0.0 + 0.9.0.0 + 0.9.0.0 diff --git a/src/InnoSetup/BookLibConnect setup.iss b/src/InnoSetup/BookLibConnect setup.iss index 73777ed..d382099 100644 --- a/src/InnoSetup/BookLibConnect setup.iss +++ b/src/InnoSetup/BookLibConnect setup.iss @@ -1,5 +1,5 @@ #define MyAppSetupName 'Book Lib Connect' -#define MyAppVersion '0.7' +#define MyAppVersion '0.9' #define MyProgramExe = 'BookLibConnect.exe' #define MyCompany = 'audiamus' #define MyAppName = 'BookLibConnect' @@ -18,7 +18,7 @@ OutputBaseFilename={#MyAppName}-{#MyAppVersion}-Setup DefaultGroupName={#MyCompany} DefaultDirName={autopf}\{#MyCompany}\{#MyAppSetupName} UninstallDisplayIcon={app}\{#MyProgramExe} -SourceDir=..\Connect.app.gui.core\bin\Release\net5.0-windows\publish +SourceDir=..\Connect.app.gui.core\bin\Release\net6.0-windows\publish OutputDir=..\..\..\Setup SolidCompression=yes diff --git a/src/PropGridLib.core/PropGridLib.core.csproj b/src/PropGridLib.core/PropGridLib.core.csproj index 57a3d94..d67bf86 100644 --- a/src/PropGridLib.core/PropGridLib.core.csproj +++ b/src/PropGridLib.core/PropGridLib.core.csproj @@ -1,14 +1,14 @@  - net5.0-windows + net6.0-windows true core.audiamus.aux.propgrid audiamus.aux.propgrid.core audiamus Copyright © 2021 - $([System.DateTime]::UtcNow.Year) audiamus ($([System.DateTime]::UtcNow.ToString("s"))) - 0.1.0.0 - 0.1.0.0 + 0.2.0.0 + 0.2.0.0 diff --git a/src/SystemMgmt.core/SystemMgmt.core.csproj b/src/SystemMgmt.core/SystemMgmt.core.csproj index f45ed66..14b942a 100644 --- a/src/SystemMgmt.core/SystemMgmt.core.csproj +++ b/src/SystemMgmt.core/SystemMgmt.core.csproj @@ -1,17 +1,17 @@ - net5.0-windows + net6.0 core.audiamus.sysmgmt audiamus.sysmgmt.core audiamus - 1.1.0.0 - 1.1.0.0 + 1.2.0.0 + 1.2.0.0 Copyright © 2021 - $([System.DateTime]::UtcNow.Year) audiamus ($([System.DateTime]::UtcNow.ToString("s"))) - + diff --git a/src/TreeDecomposition.core/TreeDecomposition.core.csproj b/src/TreeDecomposition.core/TreeDecomposition.core.csproj index 8b6d0d2..f45b020 100644 --- a/src/TreeDecomposition.core/TreeDecomposition.core.csproj +++ b/src/TreeDecomposition.core/TreeDecomposition.core.csproj @@ -1,12 +1,12 @@ - net5.0 + net6.0 core.core.audiamus.aux.diagn audiamus.aux.treedecomp.core audiamus - 2.0.0.0 - 2.0.0.0 + 2.1.0.0 + 2.1.0.0 Copyright © 2019 - $([System.DateTime]::UtcNow.Year) audiamus ($([System.DateTime]::UtcNow.ToString("s")))