aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-10-01 14:31:32 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-10-01 14:31:32 -0400
commitdcca3f02366d5e54fb6eefeb0ccc7c5261e49e48 (patch)
tree62c425cdc289cedbbe00c7e494c325384aa309fb
parent3d40c5ba36c5e98954c2bc6073b4cf35cd42711a (diff)
update music artist when saving artist
-rw-r--r--MediaBrowser.Api/ItemUpdateService.cs9
-rw-r--r--MediaBrowser.Controller/Entities/Audio/Artist.cs38
-rw-r--r--MediaBrowser.Providers/Music/LastfmArtistByNameProvider.cs29
-rw-r--r--MediaBrowser.Server.Implementations/Library/Validators/ArtistsValidator.cs25
4 files changed, 48 insertions, 53 deletions
diff --git a/MediaBrowser.Api/ItemUpdateService.cs b/MediaBrowser.Api/ItemUpdateService.cs
index 18e02473f..5d47d0813 100644
--- a/MediaBrowser.Api/ItemUpdateService.cs
+++ b/MediaBrowser.Api/ItemUpdateService.cs
@@ -126,6 +126,15 @@ namespace MediaBrowser.Api
UpdateItem(request, item);
await _libraryManager.UpdateItem(item, ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);
+
+ var musicArtist = Artist.FindMusicArtist(item, _libraryManager);
+
+ if (musicArtist != null)
+ {
+ UpdateItem(request, musicArtist);
+
+ await _libraryManager.UpdateItem(musicArtist, ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);
+ }
}
public void Post(UpdateStudio request)
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;
+ });
+ }
}
}
diff --git a/MediaBrowser.Providers/Music/LastfmArtistByNameProvider.cs b/MediaBrowser.Providers/Music/LastfmArtistByNameProvider.cs
index 5bc9debd3..26ac68c3d 100644
--- a/MediaBrowser.Providers/Music/LastfmArtistByNameProvider.cs
+++ b/MediaBrowser.Providers/Music/LastfmArtistByNameProvider.cs
@@ -3,11 +3,8 @@ using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Library;
-using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Serialization;
-using System;
-using System.Linq;
using System.Threading;
using System.Threading.Tasks;
@@ -77,7 +74,7 @@ namespace MediaBrowser.Providers.Music
var artist = (Artist)item;
// See if we can avoid an http request by finding the matching MusicArtist entity
- var musicArtist = FindMusicArtist(artist, LibraryManager);
+ var musicArtist = Artist.FindMusicArtist(artist, LibraryManager);
if (musicArtist != null && !force)
{
@@ -88,29 +85,5 @@ namespace MediaBrowser.Providers.Music
await base.FetchLastfmData(item, musicBrainzId, force, cancellationToken).ConfigureAwait(false);
}
}
-
-
- /// <summary>
- /// Finds the music artist.
- /// </summary>
- /// <param name="artist">The artist.</param>
- /// <param name="libraryManager">The library manager.</param>
- /// <returns>MusicArtist.</returns>
- private static MusicArtist FindMusicArtist(Artist artist, ILibraryManager libraryManager)
- {
- var musicBrainzId = artist.GetProviderId(MetadataProviders.Musicbrainz);
-
- return libraryManager.RootFolder.RecursiveChildren
- .OfType<MusicArtist>()
- .FirstOrDefault(i =>
- {
- if (!string.IsNullOrWhiteSpace(musicBrainzId) && string.Equals(musicBrainzId, i.GetProviderId(MetadataProviders.Musicbrainz), StringComparison.OrdinalIgnoreCase))
- {
- return true;
- }
-
- return false;
- });
- }
}
}
diff --git a/MediaBrowser.Server.Implementations/Library/Validators/ArtistsValidator.cs b/MediaBrowser.Server.Implementations/Library/Validators/ArtistsValidator.cs
index 903fe86be..7387b9166 100644
--- a/MediaBrowser.Server.Implementations/Library/Validators/ArtistsValidator.cs
+++ b/MediaBrowser.Server.Implementations/Library/Validators/ArtistsValidator.cs
@@ -6,9 +6,7 @@ using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Logging;
using System;
-using System.Collections.Concurrent;
using System.Collections.Generic;
-using System.Globalization;
using System.IO;
using System.Linq;
using System.Threading;
@@ -85,7 +83,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
artist.ValidateImages();
artist.ValidateBackdrops();
- var musicArtist = FindMusicArtist(artist, allMusicArtists);
+ var musicArtist = Artist.FindMusicArtist(artist, allMusicArtists);
if (musicArtist != null)
{
@@ -235,26 +233,5 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
return returnArtists;
}
-
- /// <summary>
- /// Finds the music artist.
- /// </summary>
- /// <param name="artist">The artist.</param>
- /// <param name="allMusicArtists">All music artists.</param>
- /// <returns>MusicArtist.</returns>
- private 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;
- });
- }
}
}