aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Controller')
-rw-r--r--MediaBrowser.Controller/Entities/Audio/Artist.cs86
-rw-r--r--MediaBrowser.Controller/Entities/Audio/MusicArtist.cs69
-rw-r--r--MediaBrowser.Controller/Entities/BaseItem.cs5
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs20
-rw-r--r--MediaBrowser.Controller/Entities/IItemByName.cs5
-rw-r--r--MediaBrowser.Controller/Library/ILibraryManager.cs15
-rw-r--r--MediaBrowser.Controller/MediaBrowser.Controller.csproj1
7 files changed, 97 insertions, 104 deletions
diff --git a/MediaBrowser.Controller/Entities/Audio/Artist.cs b/MediaBrowser.Controller/Entities/Audio/Artist.cs
deleted file mode 100644
index 947ee1122..000000000
--- a/MediaBrowser.Controller/Entities/Audio/Artist.cs
+++ /dev/null
@@ -1,86 +0,0 @@
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Model.Dto;
-using MediaBrowser.Model.Entities;
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Linq;
-using System.Runtime.Serialization;
-
-namespace MediaBrowser.Controller.Entities.Audio
-{
- /// <summary>
- /// Class Artist
- /// </summary>
- public class Artist : BaseItem, IItemByName, IHasMusicGenres
- {
- public Artist()
- {
- UserItemCounts = new Dictionary<Guid, ItemByNameCounts>();
- }
-
- public string LastFmImageUrl { get; set; }
- public string LastFmImageSize { get; set; }
-
- /// <summary>
- /// Gets the user data key.
- /// </summary>
- /// <returns>System.String.</returns>
- public override string GetUserDataKey()
- {
- return GetUserDataKey(this);
- }
-
- [IgnoreDataMember]
- public Dictionary<Guid, ItemByNameCounts> UserItemCounts { get; set; }
-
- /// <summary>
- /// Finds the music artist.
- /// </summary>
- /// <param name="artist">The artist.</param>
- /// <param name="libraryManager">The library manager.</param>
- /// <returns>MusicArtist.</returns>
- public static MusicArtist FindMusicArtist(Artist artist, ILibraryManager libraryManager)
- {
- return FindMusicArtist(artist, libraryManager.RootFolder.RecursiveChildren.OfType<MusicArtist>());
- }
-
- /// <summary>
- /// Finds the music artist.
- /// </summary>
- /// <param name="artist">The artist.</param>
- /// <param name="allMusicArtists">All music artists.</param>
- /// <returns>MusicArtist.</returns>
- public static MusicArtist FindMusicArtist(Artist artist, IEnumerable<MusicArtist> allMusicArtists)
- {
- var musicBrainzId = artist.GetProviderId(MetadataProviders.Musicbrainz);
-
- return allMusicArtists.FirstOrDefault(i =>
- {
- if (!string.IsNullOrWhiteSpace(musicBrainzId) && string.Equals(musicBrainzId, i.GetProviderId(MetadataProviders.Musicbrainz), StringComparison.OrdinalIgnoreCase))
- {
- return true;
- }
-
- return string.Compare(i.Name, artist.Name, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase | CompareOptions.IgnoreSymbols) == 0;
- });
- }
-
- /// <summary>
- /// Gets the user data key.
- /// </summary>
- /// <param name="item">The item.</param>
- /// <returns>System.String.</returns>
- public static string GetUserDataKey(BaseItem item)
- {
- var id = item.GetProviderId(MetadataProviders.Musicbrainz);
-
- if (!string.IsNullOrEmpty(id))
- {
- return "Artist-Musicbrainz-" + id;
- }
-
- return "Artist-" + item.Name;
- }
- }
-}
diff --git a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs
index d791c92ae..a234844ff 100644
--- a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs
+++ b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs
@@ -1,11 +1,52 @@
-
+using MediaBrowser.Model.Dto;
+using MediaBrowser.Model.Entities;
+using System;
+using System.Collections.Generic;
+using System.Runtime.Serialization;
+
namespace MediaBrowser.Controller.Entities.Audio
{
/// <summary>
/// Class MusicArtist
/// </summary>
- public class MusicArtist : Folder
+ public class MusicArtist : Folder, IItemByName, IHasMusicGenres, IHasDualAccess
{
+ [IgnoreDataMember]
+ public Dictionary<Guid, ItemByNameCounts> UserItemCounts { get; set; }
+
+ public bool IsAccessedByName { get; set; }
+
+ public override bool IsFolder
+ {
+ get
+ {
+ return !IsAccessedByName;
+ }
+ }
+
+ protected override IEnumerable<BaseItem> ActualChildren
+ {
+ get
+ {
+ if (IsAccessedByName)
+ {
+ throw new InvalidOperationException("Artists accessed by name do not have children.");
+ }
+
+ return base.ActualChildren;
+ }
+ }
+
+ public override string GetClientTypeName()
+ {
+ if (IsAccessedByName)
+ {
+ //return "Artist";
+ }
+
+ return base.GetClientTypeName();
+ }
+
/// <summary>
/// Gets or sets the last fm image URL.
/// </summary>
@@ -13,13 +54,35 @@ namespace MediaBrowser.Controller.Entities.Audio
public string LastFmImageUrl { get; set; }
public string LastFmImageSize { get; set; }
+ public MusicArtist()
+ {
+ UserItemCounts = new Dictionary<Guid, ItemByNameCounts>();
+ }
+
/// <summary>
/// Gets the user data key.
/// </summary>
/// <returns>System.String.</returns>
public override string GetUserDataKey()
{
- return Artist.GetUserDataKey(this);
+ return GetUserDataKey(this);
+ }
+
+ /// <summary>
+ /// Gets the user data key.
+ /// </summary>
+ /// <param name="item">The item.</param>
+ /// <returns>System.String.</returns>
+ public static string GetUserDataKey(BaseItem item)
+ {
+ var id = item.GetProviderId(MetadataProviders.Musicbrainz);
+
+ if (!string.IsNullOrEmpty(id))
+ {
+ return "Artist-Musicbrainz-" + id;
+ }
+
+ return "Artist-" + item.Name;
}
}
}
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index 29765fe12..a10a2c263 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -1145,6 +1145,11 @@ namespace MediaBrowser.Controller.Entities
return changed;
}
+ public virtual string GetClientTypeName()
+ {
+ return GetType().Name;
+ }
+
/// <summary>
/// Determines if the item is considered new based on user settings
/// </summary>
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs
index 8dbc98193..5c561dc0f 100644
--- a/MediaBrowser.Controller/Entities/Folder.cs
+++ b/MediaBrowser.Controller/Entities/Folder.cs
@@ -1038,16 +1038,13 @@ namespace MediaBrowser.Controller.Entities
}
}
- if (recursive)
+ if (recursive && child.IsFolder)
{
- var folder = child as Folder;
+ var folder = (Folder)child;
- if (folder != null)
+ if (folder.AddChildrenToList(user, includeLinkedChildren, list, true, filter))
{
- if (folder.AddChildrenToList(user, includeLinkedChildren, list, true, filter))
- {
- hasLinkedChildren = true;
- }
+ hasLinkedChildren = true;
}
}
}
@@ -1150,14 +1147,11 @@ namespace MediaBrowser.Controller.Entities
list.Add(child);
}
- if (recursive)
+ if (recursive && child.IsFolder)
{
- var folder = child as Folder;
+ var folder = (Folder)child;
- if (folder != null)
- {
- folder.AddChildrenToList(list, true, filter);
- }
+ folder.AddChildrenToList(list, true, filter);
}
}
}
diff --git a/MediaBrowser.Controller/Entities/IItemByName.cs b/MediaBrowser.Controller/Entities/IItemByName.cs
index 7284bf101..1cb375374 100644
--- a/MediaBrowser.Controller/Entities/IItemByName.cs
+++ b/MediaBrowser.Controller/Entities/IItemByName.cs
@@ -12,6 +12,11 @@ namespace MediaBrowser.Controller.Entities
Dictionary<Guid, ItemByNameCounts> UserItemCounts { get; set; }
}
+ public interface IHasDualAccess : IItemByName
+ {
+ bool IsAccessedByName { get; }
+ }
+
public static class IItemByNameExtensions
{
public static ItemByNameCounts GetItemByNameCounts(this IItemByName item, User user)
diff --git a/MediaBrowser.Controller/Library/ILibraryManager.cs b/MediaBrowser.Controller/Library/ILibraryManager.cs
index 0a89c0df8..338edd568 100644
--- a/MediaBrowser.Controller/Library/ILibraryManager.cs
+++ b/MediaBrowser.Controller/Library/ILibraryManager.cs
@@ -60,7 +60,7 @@ namespace MediaBrowser.Controller.Library
/// </summary>
/// <param name="name">The name.</param>
/// <returns>Task{Artist}.</returns>
- Artist GetArtist(string name);
+ MusicArtist GetArtist(string name);
/// <summary>
/// Gets a Studio
@@ -302,5 +302,18 @@ namespace MediaBrowser.Controller.Library
/// <param name="updateType">Type of the update.</param>
/// <returns>Task.</returns>
Task SaveMetadata(BaseItem item, ItemUpdateType updateType);
+
+ /// <summary>
+ /// Gets all artists.
+ /// </summary>
+ /// <returns>IEnumerable{System.String}.</returns>
+ IEnumerable<string> GetAllArtists();
+
+ /// <summary>
+ /// Gets all artists.
+ /// </summary>
+ /// <param name="items">The items.</param>
+ /// <returns>IEnumerable{System.String}.</returns>
+ IEnumerable<string> GetAllArtists(IEnumerable<BaseItem> items);
}
} \ No newline at end of file
diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
index 8837d04f5..393107f1e 100644
--- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj
+++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
@@ -115,7 +115,6 @@
<Compile Include="Session\ISessionManager.cs" />
<Compile Include="Drawing\ImageExtensions.cs" />
<Compile Include="Entities\AggregateFolder.cs" />
- <Compile Include="Entities\Audio\Artist.cs" />
<Compile Include="Entities\Audio\Audio.cs" />
<Compile Include="Entities\Audio\MusicAlbum.cs" />
<Compile Include="Entities\Audio\MusicArtist.cs" />