From 6d13325c4fa897392a7de237c3faff44aede7d91 Mon Sep 17 00:00:00 2001 From: Mbucari Date: Wed, 14 Jun 2023 11:56:38 -0600 Subject: [PATCH] Add tag (#629) --- Source/FileLiberator/UtilityExtensions.cs | 51 +++++++++++-------- Source/LibationFileManager/LibraryBookDto.cs | 1 + .../LibationFileManager/TemplateEditor[T].cs | 3 +- Source/LibationFileManager/TemplateTags.cs | 1 + Source/LibationFileManager/Templates.cs | 1 + .../TemplatesTests.cs | 3 +- 6 files changed, 38 insertions(+), 22 deletions(-) diff --git a/Source/FileLiberator/UtilityExtensions.cs b/Source/FileLiberator/UtilityExtensions.cs index 54f72a44..b3edf7de 100644 --- a/Source/FileLiberator/UtilityExtensions.cs +++ b/Source/FileLiberator/UtilityExtensions.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using AudibleUtilities; using DataLayer; using Dinah.Core; using LibationFileManager; @@ -20,34 +21,44 @@ namespace FileLiberator public static async Task GetApiAsync(this LibraryBook libraryBook) { - var apiExtended = await AudibleUtilities.ApiExtended.CreateAsync(libraryBook.Account, libraryBook.Book.Locale); + var apiExtended = await ApiExtended.CreateAsync(libraryBook.Account, libraryBook.Book.Locale); return apiExtended.Api; } - public static LibraryBookDto ToDto(this LibraryBook libraryBook) => new() + public static LibraryBookDto ToDto(this LibraryBook libraryBook) { - Account = libraryBook.Account, - DateAdded = libraryBook.DateAdded, + using var persister = AudibleApiStorage.GetAccountsSettingsPersister(); + var nickname + = persister.AccountsSettings.Accounts + .FirstOrDefault(a => a.AccountId == libraryBook.Account) + ?.AccountName; - AudibleProductId = libraryBook.Book.AudibleProductId, - Title = libraryBook.Book.Title ?? "", - Locale = libraryBook.Book.Locale, - YearPublished = libraryBook.Book.DatePublished?.Year, - DatePublished = libraryBook.Book.DatePublished, + return new() + { + Account = libraryBook.Account, + AccountNickname = nickname, + DateAdded = libraryBook.DateAdded, - Authors = libraryBook.Book.Authors.Select(c => c.Name).ToList(), + AudibleProductId = libraryBook.Book.AudibleProductId, + Title = libraryBook.Book.Title ?? "", + Locale = libraryBook.Book.Locale, + YearPublished = libraryBook.Book.DatePublished?.Year, + DatePublished = libraryBook.Book.DatePublished, - Narrators = libraryBook.Book.Narrators.Select(c => c.Name).ToList(), + Authors = libraryBook.Book.Authors.Select(c => c.Name).ToList(), - SeriesName = libraryBook.Book.SeriesLink.FirstOrDefault()?.Series.Name, - SeriesNumber = (int?)libraryBook.Book.SeriesLink.FirstOrDefault()?.Index, - IsPodcastParent = libraryBook.Book.IsEpisodeParent(), - IsPodcast = libraryBook.Book.IsEpisodeChild() || libraryBook.Book.IsEpisodeParent(), + Narrators = libraryBook.Book.Narrators.Select(c => c.Name).ToList(), - BitRate = libraryBook.Book.AudioFormat.Bitrate, - SampleRate = libraryBook.Book.AudioFormat.SampleRate, - Channels = libraryBook.Book.AudioFormat.Channels, - Language = libraryBook.Book.Language - }; + SeriesName = libraryBook.Book.SeriesLink.FirstOrDefault()?.Series.Name, + SeriesNumber = (int?)libraryBook.Book.SeriesLink.FirstOrDefault()?.Index, + IsPodcastParent = libraryBook.Book.IsEpisodeParent(), + IsPodcast = libraryBook.Book.IsEpisodeChild() || libraryBook.Book.IsEpisodeParent(), + + BitRate = libraryBook.Book.AudioFormat.Bitrate, + SampleRate = libraryBook.Book.AudioFormat.SampleRate, + Channels = libraryBook.Book.AudioFormat.Channels, + Language = libraryBook.Book.Language + }; + } } } diff --git a/Source/LibationFileManager/LibraryBookDto.cs b/Source/LibationFileManager/LibraryBookDto.cs index 861125e9..bb09440f 100644 --- a/Source/LibationFileManager/LibraryBookDto.cs +++ b/Source/LibationFileManager/LibraryBookDto.cs @@ -37,5 +37,6 @@ namespace LibationFileManager { public DateTime? DateAdded { get; set; } public string Account { get; set; } + public string AccountNickname { get; set; } } } diff --git a/Source/LibationFileManager/TemplateEditor[T].cs b/Source/LibationFileManager/TemplateEditor[T].cs index e704e74d..5ee16095 100644 --- a/Source/LibationFileManager/TemplateEditor[T].cs +++ b/Source/LibationFileManager/TemplateEditor[T].cs @@ -52,7 +52,8 @@ namespace LibationFileManager private static readonly LibraryBookDto libraryBookDto = new() { - Account = "my account", + Account = "myaccount@example.co", + AccountNickname = "my account", DateAdded = new DateTime(2022, 6, 9, 0, 0, 0), DatePublished = new DateTime(2017, 2, 27, 0, 0, 0), AudibleProductId = "123456789", diff --git a/Source/LibationFileManager/TemplateTags.cs b/Source/LibationFileManager/TemplateTags.cs index d0beb15e..f9320c56 100644 --- a/Source/LibationFileManager/TemplateTags.cs +++ b/Source/LibationFileManager/TemplateTags.cs @@ -37,6 +37,7 @@ namespace LibationFileManager public static TemplateTags SampleRate { get; } = new TemplateTags("samplerate", "File's orig. sample rate"); 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 AccountNickname { get; } = new TemplateTags("account nickname", "Audible account nickname of this book"); public static TemplateTags Locale { get; } = new ("locale", "Region/country"); public static TemplateTags YearPublished { get; } = new("year", "Year published"); public static TemplateTags Language { get; } = new("language", "Book's language"); diff --git a/Source/LibationFileManager/Templates.cs b/Source/LibationFileManager/Templates.cs index e416d3b1..4a9358db 100644 --- a/Source/LibationFileManager/Templates.cs +++ b/Source/LibationFileManager/Templates.cs @@ -215,6 +215,7 @@ namespace LibationFileManager { TemplateTags.SampleRate, lb => (int?)(lb.IsPodcastParent ? null : lb.SampleRate) }, { TemplateTags.Channels, lb => (int?)(lb.IsPodcastParent ? null : lb.Channels) }, { TemplateTags.Account, lb => lb.Account }, + { TemplateTags.AccountNickname, lb => lb.AccountNickname }, { TemplateTags.Locale, lb => lb.Locale }, { TemplateTags.YearPublished, lb => lb.YearPublished }, { TemplateTags.DatePublished, lb => lb.DatePublished }, diff --git a/Source/_Tests/LibationFileManager.Tests/TemplatesTests.cs b/Source/_Tests/LibationFileManager.Tests/TemplatesTests.cs index 691db140..efd96faf 100644 --- a/Source/_Tests/LibationFileManager.Tests/TemplatesTests.cs +++ b/Source/_Tests/LibationFileManager.Tests/TemplatesTests.cs @@ -26,7 +26,8 @@ namespace TemplatesTests public static LibraryBookDto GetLibraryBook(string seriesName = "Sherlock Holmes") => new() { - Account = "my account", + Account = "myaccount@example.co", + AccountNickname = "my account", DateAdded = new DateTime(2022, 6, 9, 0, 0, 0), DatePublished = new DateTime(2017, 2, 27, 0, 0, 0), FileDate = new DateTime(2023, 1, 28, 0, 0, 0),