diff --git a/src/NzbDrone.Core/MediaFiles/AudioTag.cs b/src/NzbDrone.Core/MediaFiles/AudioTag.cs index 13b0d27b5..3c50bea99 100644 --- a/src/NzbDrone.Core/MediaFiles/AudioTag.cs +++ b/src/NzbDrone.Core/MediaFiles/AudioTag.cs @@ -65,7 +65,27 @@ public void Read(string path) Title = tag.Title ?? tag.TitleSort; Performers = tag.Performers ?? tag.PerformersSort; - BookAuthors = tag.AlbumArtists ?? tag.AlbumArtistsSort; + + var authors = new List(); + + if (tag.AlbumArtists?.Any() ?? false) + { + authors.AddRange(tag.AlbumArtists); + } + else if (tag.AlbumArtistsSort?.Any() ?? false) + { + authors.AddRange(tag.AlbumArtistsSort); + } + else if (tag.Performers?.Any() ?? false) + { + authors.AddRange(tag.Performers); + } + else if (tag.PerformersSort?.Any() ?? false) + { + authors.AddRange(tag.PerformersSort); + } + + BookAuthors = authors.ToArray(); Track = tag.Track; TrackCount = tag.TrackCount; Book = tag.Album ?? tag.AlbumSort; @@ -507,23 +527,16 @@ public static implicit operator ParsedTrackInfo(AudioTag tag) }; } - var author = tag.BookAuthors?.FirstOrDefault(); - - if (author.IsNullOrWhiteSpace()) + var authors = tag.BookAuthors.Where(x => x.IsNotNullOrWhiteSpace()).ToList(); + if (!authors.Any()) { - author = tag.Performers?.FirstOrDefault(); + authors.AddRange(tag.Performers.Where(x => x.IsNotNullOrWhiteSpace())); } - var authorTitleInfo = new AuthorTitleInfo - { - Title = author, - Year = (int)tag.Year - }; - return new ParsedTrackInfo { BookTitle = tag.Book, - Authors = new List { author }, + Authors = authors, DiscNumber = (int)tag.Disc, DiscCount = (int)tag.DiscCount, Year = tag.Year,