From 663f70b8bfe3de148c1f1f7cc465dfa28541745d Mon Sep 17 00:00:00 2001 From: Michael Bucari-Tovo Date: Tue, 29 Jul 2025 12:18:37 -0600 Subject: [PATCH] Use series Order string instead of parsed float in template tags (#1056) --- Source/AaxDecrypter/AaxcDownloadConvertBase.cs | 4 ++-- Source/AaxDecrypter/IDownloadOptions.cs | 2 +- Source/FileLiberator/DownloadOptions.cs | 2 +- Source/FileLiberator/UtilityExtensions.cs | 2 +- .../LibationFileManager/Templates/SeriesDto.cs | 4 ++-- .../Templates/TemplateEditor[T].cs | 2 +- .../LibationFileManager.Tests/TemplatesTests.cs | 16 +++++++++------- 7 files changed, 17 insertions(+), 15 deletions(-) diff --git a/Source/AaxDecrypter/AaxcDownloadConvertBase.cs b/Source/AaxDecrypter/AaxcDownloadConvertBase.cs index 2e00afc4..18161443 100644 --- a/Source/AaxDecrypter/AaxcDownloadConvertBase.cs +++ b/Source/AaxDecrypter/AaxcDownloadConvertBase.cs @@ -126,8 +126,8 @@ namespace AaxDecrypter if (DownloadOptions.SeriesName is string series) AaxFile.AppleTags.AppleListBox.EditOrAddFreeformTag(tagDomain, "SERIES", series); - if (DownloadOptions.SeriesNumber is float part) - AaxFile.AppleTags.AppleListBox.EditOrAddFreeformTag(tagDomain, "PART", part.ToString()); + if (DownloadOptions.SeriesNumber is string part) + AaxFile.AppleTags.AppleListBox.EditOrAddFreeformTag(tagDomain, "PART", part); } OnRetrievedTitle(AaxFile.AppleTags.TitleSansUnabridged); diff --git a/Source/AaxDecrypter/IDownloadOptions.cs b/Source/AaxDecrypter/IDownloadOptions.cs index d80a5b95..11e79db8 100644 --- a/Source/AaxDecrypter/IDownloadOptions.cs +++ b/Source/AaxDecrypter/IDownloadOptions.cs @@ -43,7 +43,7 @@ namespace AaxDecrypter string? Publisher { get; } string? Language { get; } string? SeriesName { get; } - float? SeriesNumber { get; } + string? SeriesNumber { get; } NAudio.Lame.LameConfig? LameConfig { get; } bool Downsample { get; } bool MatchSourceBitrate { get; } diff --git a/Source/FileLiberator/DownloadOptions.cs b/Source/FileLiberator/DownloadOptions.cs index 29e7b286..a276e6ad 100644 --- a/Source/FileLiberator/DownloadOptions.cs +++ b/Source/FileLiberator/DownloadOptions.cs @@ -26,7 +26,7 @@ namespace FileLiberator public string Language => LibraryBook.Book.Language; public string? AudibleProductId => LibraryBookDto.AudibleProductId; public string? SeriesName => LibraryBookDto.FirstSeries?.Name; - public float? SeriesNumber => LibraryBookDto.FirstSeries?.Number; + public string? SeriesNumber => LibraryBookDto.FirstSeries?.Number; public NAudio.Lame.LameConfig? LameConfig { get; } public string UserAgent => AudibleApi.Resources.Download_User_Agent; public bool StripUnabridged => Config.AllowLibationFixup && Config.StripUnabridged; diff --git a/Source/FileLiberator/UtilityExtensions.cs b/Source/FileLiberator/UtilityExtensions.cs index b0e05cf7..73ac5bbc 100644 --- a/Source/FileLiberator/UtilityExtensions.cs +++ b/Source/FileLiberator/UtilityExtensions.cs @@ -83,7 +83,7 @@ namespace FileLiberator .Select(sb => new SeriesDto( sb.Series.Name, - sb.Book.IsEpisodeParent() ? null : sb.Index, + sb.Book.IsEpisodeParent() ? null : sb.Order, sb.Series.AudibleSeriesId) ).ToList(); } diff --git a/Source/LibationFileManager/Templates/SeriesDto.cs b/Source/LibationFileManager/Templates/SeriesDto.cs index 834c8db4..cfd3d3fd 100644 --- a/Source/LibationFileManager/Templates/SeriesDto.cs +++ b/Source/LibationFileManager/Templates/SeriesDto.cs @@ -7,9 +7,9 @@ public record SeriesDto : IFormattable { public string Name { get; } - public float? Number { get; } + public string? Number { get; } public string AudibleSeriesId { get; } - public SeriesDto(string name, float? number, string audibleSeriesId) + public SeriesDto(string name, string? number, string audibleSeriesId) { Name = name; Number = number; diff --git a/Source/LibationFileManager/Templates/TemplateEditor[T].cs b/Source/LibationFileManager/Templates/TemplateEditor[T].cs index bc0daf2e..edd060c2 100644 --- a/Source/LibationFileManager/Templates/TemplateEditor[T].cs +++ b/Source/LibationFileManager/Templates/TemplateEditor[T].cs @@ -68,7 +68,7 @@ namespace LibationFileManager.Templates YearPublished = 2017, Authors = [new("Arthur Conan Doyle", "B000AQ43GQ"), new("Stephen Fry - introductions", "B000APAGVS")], Narrators = [new("Stephen Fry", null)], - Series = [new("Sherlock Holmes", 1, "B08376S3R2"), new("Some Other Series", 1, "B000000000")], + Series = [new("Sherlock Holmes", "1-6", "B08376S3R2"), new("Book Collection", "1", "B000000000")], Codec = "AAC-LC", LibationVersion = Configuration.LibationVersion?.ToVersionString(), FileVersion = "36217811", diff --git a/Source/_Tests/LibationFileManager.Tests/TemplatesTests.cs b/Source/_Tests/LibationFileManager.Tests/TemplatesTests.cs index 4f92c27d..fbc9eb96 100644 --- a/Source/_Tests/LibationFileManager.Tests/TemplatesTests.cs +++ b/Source/_Tests/LibationFileManager.Tests/TemplatesTests.cs @@ -24,7 +24,7 @@ namespace TemplatesTests public static class Shared { public static LibraryBookDto GetLibraryBook() - => GetLibraryBook([new SeriesDto("Sherlock Holmes", 1, "B08376S3R2")]); + => GetLibraryBook([new SeriesDto("Sherlock Holmes", "1", "B08376S3R2")]); public static LibraryBookDto GetLibraryBook(IEnumerable series) => new() @@ -367,12 +367,13 @@ namespace TemplatesTests [TestMethod] - [DataRow("", "Series A, Series B, Series C")] - [DataRow("", "Series A, Series B, Series C")] + [DataRow("", "Series A, Series B, Series C, Series D")] + [DataRow("", "Series A, Series B, Series C, Series D")] [DataRow("", "Series A")] [DataRow("", "Series A, Series B")] [DataRow("", "Series A, Series B, Series C")] - [DataRow("", "Series A, 1, B1; Series B, 6, B2; Series C, 2, B3")] + [DataRow("", "Series A, Series B, Series C, Series D")] + [DataRow("", "Series A, 1, B1; Series B, 6, B2; Series C, 2, B3; Series D, 1-5, B4")] [DataRow("", "Series A, 1, B1; Series B, 6, B2; Series C, 2, B3")] [DataRow("", "Series A, 1, B1; Series B, 6, B2")] [DataRow("", "Series A")] @@ -383,9 +384,10 @@ namespace TemplatesTests var bookDto = GetLibraryBook(); bookDto.Series = [ - new("Series A", 1, "B1"), - new("Series B", 6, "B2"), - new("Series C", 2, "B3") + new("Series A", "1", "B1"), + new("Series B", "6", "B2"), + new("Series C", "2", "B3"), + new("Series D", "1-5", "B4"), ]; Templates.TryGetTemplate(template, out var fileTemplate).Should().BeTrue();