aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Controller')
-rw-r--r--MediaBrowser.Controller/Entities/Audio/Artist.cs38
1 files changed, 37 insertions, 1 deletions
diff --git a/MediaBrowser.Controller/Entities/Audio/Artist.cs b/MediaBrowser.Controller/Entities/Audio/Artist.cs
index e0d80527c..07bb68b95 100644
--- a/MediaBrowser.Controller/Entities/Audio/Artist.cs
+++ b/MediaBrowser.Controller/Entities/Audio/Artist.cs
@@ -1,7 +1,11 @@
-using System.Runtime.Serialization;
+using System.Globalization;
+using System.Linq;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Dto;
using System;
using System.Collections.Generic;
+using System.Runtime.Serialization;
+using MediaBrowser.Model.Entities;
namespace MediaBrowser.Controller.Entities.Audio
{
@@ -28,5 +32,37 @@ namespace MediaBrowser.Controller.Entities.Audio
[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;
+ });
+ }
}
}