diff options
Diffstat (limited to 'MediaBrowser.Controller/Entities/Audio')
6 files changed, 58 insertions, 19 deletions
diff --git a/MediaBrowser.Controller/Entities/Audio/Artist.cs b/MediaBrowser.Controller/Entities/Audio/Artist.cs index 274356b30..3d2d41fb7 100644 --- a/MediaBrowser.Controller/Entities/Audio/Artist.cs +++ b/MediaBrowser.Controller/Entities/Audio/Artist.cs @@ -1,11 +1,20 @@ - +using MediaBrowser.Model.Dto; +using System; +using System.Collections.Generic; + namespace MediaBrowser.Controller.Entities.Audio { /// <summary> /// Class Artist /// </summary> - public class Artist : BaseItem, IItemByName + public class Artist : BaseItem, IItemByName, IHasMusicGenres { + public Artist() + { + ItemCounts = new ItemByNameCounts(); + UserItemCounts = new Dictionary<Guid, ItemByNameCounts>(); + } + public string LastFmImageUrl { get; set; } /// <summary> @@ -17,5 +26,8 @@ namespace MediaBrowser.Controller.Entities.Audio return "Artist-" + Name; } + public ItemByNameCounts ItemCounts { get; set; } + + public Dictionary<Guid, ItemByNameCounts> UserItemCounts { get; set; } } } diff --git a/MediaBrowser.Controller/Entities/Audio/Audio.cs b/MediaBrowser.Controller/Entities/Audio/Audio.cs index ff632c981..beb25f1f2 100644 --- a/MediaBrowser.Controller/Entities/Audio/Audio.cs +++ b/MediaBrowser.Controller/Entities/Audio/Audio.cs @@ -9,7 +9,7 @@ namespace MediaBrowser.Controller.Entities.Audio /// <summary> /// Class Audio /// </summary> - public class Audio : BaseItem, IHasMediaStreams, IHasAlbumArtist + public class Audio : BaseItem, IHasMediaStreams, IHasAlbumArtist, IHasArtist, IHasMusicGenres { public Audio() { diff --git a/MediaBrowser.Controller/Entities/Audio/IHasAlbumArtist.cs b/MediaBrowser.Controller/Entities/Audio/IHasAlbumArtist.cs index d9dac077f..77bd3fd66 100644 --- a/MediaBrowser.Controller/Entities/Audio/IHasAlbumArtist.cs +++ b/MediaBrowser.Controller/Entities/Audio/IHasAlbumArtist.cs @@ -5,4 +5,9 @@ namespace MediaBrowser.Controller.Entities.Audio { string AlbumArtist { get; } } + + public interface IHasArtist + { + bool HasArtist(string name); + } } diff --git a/MediaBrowser.Controller/Entities/Audio/IHasMusicGenres.cs b/MediaBrowser.Controller/Entities/Audio/IHasMusicGenres.cs new file mode 100644 index 000000000..fdf939e35 --- /dev/null +++ b/MediaBrowser.Controller/Entities/Audio/IHasMusicGenres.cs @@ -0,0 +1,9 @@ +using System.Collections.Generic; + +namespace MediaBrowser.Controller.Entities.Audio +{ + public interface IHasMusicGenres + { + List<string> Genres { get; } + } +} diff --git a/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs b/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs index 834fc6943..46b4bc73c 100644 --- a/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs +++ b/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs @@ -1,4 +1,5 @@ -using System.Linq; +using System; +using System.Linq; using System.Runtime.Serialization; namespace MediaBrowser.Controller.Entities.Audio @@ -6,10 +7,15 @@ namespace MediaBrowser.Controller.Entities.Audio /// <summary> /// Class MusicAlbum /// </summary> - public class MusicAlbum : Folder, IHasAlbumArtist + public class MusicAlbum : Folder, IHasAlbumArtist, IHasArtist, IHasMusicGenres { + public MusicAlbum() + { + Artists = new string[] { }; + } + public string LastFmImageUrl { get; set; } - + /// <summary> /// Songs will group into us so don't also include us in the index /// </summary> @@ -60,23 +66,17 @@ namespace MediaBrowser.Controller.Entities.Audio /// <returns><c>true</c> if the specified artist has artist; otherwise, <c>false</c>.</returns> public bool HasArtist(string artist) { - return RecursiveChildren.OfType<Audio>().Any(i => i.HasArtist(artist)); + return string.Equals(AlbumArtist, artist, StringComparison.OrdinalIgnoreCase) + || Artists.Contains(artist, StringComparer.OrdinalIgnoreCase); } - public string AlbumArtist - { - get - { - return RecursiveChildren - .OfType<Audio>() - .Select(i => i.AlbumArtist) - .FirstOrDefault(i => !string.IsNullOrEmpty(i)); - } - } + public string AlbumArtist { get; set; } + + public string[] Artists { get; set; } } public class MusicAlbumDisc : Folder { - + } } diff --git a/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs b/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs index 452aaec58..3839f2a0b 100644 --- a/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs +++ b/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs @@ -1,4 +1,7 @@ - +using MediaBrowser.Model.Dto; +using System; +using System.Collections.Generic; + namespace MediaBrowser.Controller.Entities.Audio { /// <summary> @@ -6,6 +9,12 @@ namespace MediaBrowser.Controller.Entities.Audio /// </summary> public class MusicGenre : BaseItem, IItemByName { + public MusicGenre() + { + ItemCounts = new ItemByNameCounts(); + UserItemCounts = new Dictionary<Guid, ItemByNameCounts>(); + } + /// <summary> /// Gets the user data key. /// </summary> @@ -14,5 +23,9 @@ namespace MediaBrowser.Controller.Entities.Audio { return "MusicGenre-" + Name; } + + public ItemByNameCounts ItemCounts { get; set; } + + public Dictionary<Guid, ItemByNameCounts> UserItemCounts { get; set; } } } |
