From d64e043fe870285e486c11eef4c64a868e21ed23 Mon Sep 17 00:00:00 2001 From: Robert McRackan Date: Fri, 21 Oct 2022 13:41:44 -0400 Subject: [PATCH] #367 : New template option "year": year published to audible --- Source/AppScaffolding/AppScaffolding.csproj | 2 +- Source/FileLiberator/UtilityExtensions.cs | 1 + Source/LibationAvalonia/Dialogs/EditTemplateDialog.axaml.cs | 1 + Source/LibationFileManager/LibraryBookDto.cs | 1 + Source/LibationFileManager/TemplateTags.cs | 1 + Source/LibationFileManager/Templates.cs | 3 ++- Source/LibationWinForms/Dialogs/EditTemplateDialog.cs | 3 ++- Source/_Tests/LibationFileManager.Tests/TemplatesTests.cs | 6 ++++-- 8 files changed, 13 insertions(+), 5 deletions(-) diff --git a/Source/AppScaffolding/AppScaffolding.csproj b/Source/AppScaffolding/AppScaffolding.csproj index e8c1b9c2..68ce21dd 100644 --- a/Source/AppScaffolding/AppScaffolding.csproj +++ b/Source/AppScaffolding/AppScaffolding.csproj @@ -2,7 +2,7 @@ net6.0 - 8.4.6.1 + 8.5.0.1 diff --git a/Source/FileLiberator/UtilityExtensions.cs b/Source/FileLiberator/UtilityExtensions.cs index 692eef94..37fba4c8 100644 --- a/Source/FileLiberator/UtilityExtensions.cs +++ b/Source/FileLiberator/UtilityExtensions.cs @@ -31,6 +31,7 @@ namespace FileLiberator AudibleProductId = libraryBook.Book.AudibleProductId, Title = libraryBook.Book.Title ?? "", Locale = libraryBook.Book.Locale, + YearPublished = libraryBook.Book.DatePublished?.Year, Authors = libraryBook.Book.Authors.Select(c => c.Name).ToList(), diff --git a/Source/LibationAvalonia/Dialogs/EditTemplateDialog.axaml.cs b/Source/LibationAvalonia/Dialogs/EditTemplateDialog.axaml.cs index c3b15ba4..d5dbc586 100644 --- a/Source/LibationAvalonia/Dialogs/EditTemplateDialog.axaml.cs +++ b/Source/LibationAvalonia/Dialogs/EditTemplateDialog.axaml.cs @@ -138,6 +138,7 @@ namespace LibationAvalonia.Dialogs AudibleProductId = "123456789", Title = "A Study in Scarlet: A Sherlock Holmes Novel", Locale = "us", + YearPublished = 2017, Authors = new List { "Arthur Conan Doyle", "Stephen Fry - introductions" }, Narrators = new List { "Stephen Fry" }, SeriesName = "Sherlock Holmes", diff --git a/Source/LibationFileManager/LibraryBookDto.cs b/Source/LibationFileManager/LibraryBookDto.cs index bd17048e..d24d7ef7 100644 --- a/Source/LibationFileManager/LibraryBookDto.cs +++ b/Source/LibationFileManager/LibraryBookDto.cs @@ -9,6 +9,7 @@ namespace LibationFileManager public string AudibleProductId { get; set; } public string Title { get; set; } public string Locale { get; set; } + public int? YearPublished { get; set; } public IEnumerable Authors { get; set; } public string AuthorNames => string.Join(", ", Authors); diff --git a/Source/LibationFileManager/TemplateTags.cs b/Source/LibationFileManager/TemplateTags.cs index ee081b14..6b14a3a0 100644 --- a/Source/LibationFileManager/TemplateTags.cs +++ b/Source/LibationFileManager/TemplateTags.cs @@ -39,6 +39,7 @@ namespace LibationFileManager public static TemplateTags Channels { get; } = new TemplateTags("channels", "Number of audio channels"); public static TemplateTags Account { get; } = new TemplateTags("account", "Audible account of this book"); public static TemplateTags Locale { get; } = new TemplateTags("locale", "Region/country"); + public static TemplateTags YearPublished { get; } = new TemplateTags("year", "Year published"); // Special case. Isn't mapped to a replacement in Templates.cs // Included here for display by EditTemplateDialog diff --git a/Source/LibationFileManager/Templates.cs b/Source/LibationFileManager/Templates.cs index 2d2e5313..115750e4 100644 --- a/Source/LibationFileManager/Templates.cs +++ b/Source/LibationFileManager/Templates.cs @@ -142,8 +142,9 @@ namespace LibationFileManager fileNamingTemplate.AddParameterReplacement(TemplateTags.Channels, libraryBookDto.Channels); fileNamingTemplate.AddParameterReplacement(TemplateTags.Account, libraryBookDto.Account); fileNamingTemplate.AddParameterReplacement(TemplateTags.Locale, libraryBookDto.Locale); + fileNamingTemplate.AddParameterReplacement(TemplateTags.YearPublished, libraryBookDto.YearPublished?.ToString() ?? "1900"); - return fileNamingTemplate; + return fileNamingTemplate; } #endregion diff --git a/Source/LibationWinForms/Dialogs/EditTemplateDialog.cs b/Source/LibationWinForms/Dialogs/EditTemplateDialog.cs index 25551906..55b47018 100644 --- a/Source/LibationWinForms/Dialogs/EditTemplateDialog.cs +++ b/Source/LibationWinForms/Dialogs/EditTemplateDialog.cs @@ -76,7 +76,8 @@ namespace LibationWinForms.Dialogs AudibleProductId = "123456789", Title = "A Study in Scarlet: A Sherlock Holmes Novel", Locale = "us", - Authors = new List { "Arthur Conan Doyle", "Stephen Fry - introductions" }, + YearPublished = 2017, + Authors = new List { "Arthur Conan Doyle", "Stephen Fry - introductions" }, Narrators = new List { "Stephen Fry" }, SeriesName = "Sherlock Holmes", SeriesNumber = "1", diff --git a/Source/_Tests/LibationFileManager.Tests/TemplatesTests.cs b/Source/_Tests/LibationFileManager.Tests/TemplatesTests.cs index fb0bff88..257995f2 100644 --- a/Source/_Tests/LibationFileManager.Tests/TemplatesTests.cs +++ b/Source/_Tests/LibationFileManager.Tests/TemplatesTests.cs @@ -29,7 +29,8 @@ namespace TemplatesTests AudibleProductId = "asin", Title = "A Study in Scarlet: A Sherlock Holmes Novel", Locale = "us", - Authors = new List { "Arthur Conan Doyle", "Stephen Fry - introductions" }, + YearPublished = 2017, + Authors = new List { "Arthur Conan Doyle", "Stephen Fry - introductions" }, Narrators = new List { "Stephen Fry" }, SeriesName = seriesName ?? "", SeriesNumber = "1", @@ -87,7 +88,8 @@ namespace TemplatesTests [DataRow("f", @"C:\foo\bar", "ext", @"C:\foo\bar\f.ext")] [DataRow("", @"C:\foo\bar", "ext", @"C:\foo\bar\asin.ext")] [DataRow(" - - ", @"C:\foo\bar", "ext", @"C:\foo\bar\128 - 44100 - 2.ext")] - public void Tests(string template, string dirFullPath, string extension, string expected) + [DataRow(" - ", @"C:\foo\bar", "ext", @"C:\foo\bar\2017 - 2.ext")] + public void Tests(string template, string dirFullPath, string extension, string expected) => Templates.getFileNamingTemplate(GetLibraryBook(), template, dirFullPath, extension) .GetFilePath(Replacements) .PathWithoutPrefix