From d9fbcc615a68c620adadbb975e4c3be32c5ccfc9 Mon Sep 17 00:00:00 2001 From: Michael Bucari-Tovo Date: Thu, 26 May 2022 18:06:44 -0600 Subject: [PATCH] Change flow --- Source/AudibleUtilities/ApiExtended.cs | 16 +++++++++------- Source/LibationWinForms/GridView/ProductsGrid.cs | 4 ++-- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/Source/AudibleUtilities/ApiExtended.cs b/Source/AudibleUtilities/ApiExtended.cs index dd5e602e..1cb31a28 100644 --- a/Source/AudibleUtilities/ApiExtended.cs +++ b/Source/AudibleUtilities/ApiExtended.cs @@ -131,16 +131,17 @@ namespace AudibleUtilities { if (item.IsEpisodes && importEpisodes) { - //Get child episodes asynchronously and await all at the end - getChildEpisodesTasks.Add(getChildEpisodesAsync(concurrencySemaphore, item)); - + //Helps to distinguish product parrents which have no content + //from children which do have content. + item.Asin = $"SERIES_{item.Asin}"; //Add the parent to the library because it contains the series //description, series rating, and series cover art which differ //from the individual episodes' values. - item.Series = new Series[]{ new Series { Asin = item.Asin, Sequence = RelationshipToProduct.Parent, Title = item.TitleWithSubtitle } }; - //Helps to distinguish product parrents which have no content - //from children which do have content. - item.Asin = $"PARENT_{item.Asin}"; + item.Series = new Series[] { new Series { Asin = item.Asin, Sequence = RelationshipToProduct.Parent, Title = item.TitleWithSubtitle } }; + + //Get child episodes asynchronously and await all at the end + getChildEpisodesTasks.Add(getChildEpisodesAsync(concurrencySemaphore, item)); + items.Add(item); } else if (!item.IsEpisodes) @@ -190,6 +191,7 @@ namespace AudibleUtilities //so the parent is its own child. var parentJson = parent.ToJson(parent).ToString(); var child = Item.FromJson(parentJson); + child.Asin = child.Asin.Replace("SERIES_", ""); children.Add(child); } diff --git a/Source/LibationWinForms/GridView/ProductsGrid.cs b/Source/LibationWinForms/GridView/ProductsGrid.cs index 3fa7d0d8..f158c8e9 100644 --- a/Source/LibationWinForms/GridView/ProductsGrid.cs +++ b/Source/LibationWinForms/GridView/ProductsGrid.cs @@ -86,9 +86,9 @@ namespace LibationWinForms.GridView var episodes = dbBooks.Where(b => b.IsEpisodeChild()).ToList(); - foreach (var series in episodes.Select(lb => lb.Book.SeriesLink.First()).DistinctBy(s => s.Series)) + foreach (var series in episodes.SelectMany(lb => lb.Book.SeriesLink).DistinctBy(s => s.Series)) { - var seriesEntry = new SeriesEntry(series, episodes.Where(lb => lb.Book.SeriesLink.First().Series == series.Book.SeriesLink.First().Series)); + var seriesEntry = new SeriesEntry(series, episodes.Where(lb => lb.Book.SeriesLink.Any(s => s.Series == series.Series))); geList.Add(seriesEntry); geList.AddRange(seriesEntry.Children);