mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-07-09 03:04:24 -04:00
update music artist when saving artist
This commit is contained in:
parent
3d40c5ba36
commit
dcca3f0236
@ -126,6 +126,15 @@ namespace MediaBrowser.Api
|
|||||||
UpdateItem(request, item);
|
UpdateItem(request, item);
|
||||||
|
|
||||||
await _libraryManager.UpdateItem(item, ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);
|
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)
|
public void Post(UpdateStudio request)
|
||||||
|
@ -1,7 +1,11 @@
|
|||||||
using System.Runtime.Serialization;
|
using System.Globalization;
|
||||||
|
using System.Linq;
|
||||||
|
using MediaBrowser.Controller.Library;
|
||||||
using MediaBrowser.Model.Dto;
|
using MediaBrowser.Model.Dto;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
|
using MediaBrowser.Model.Entities;
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities.Audio
|
namespace MediaBrowser.Controller.Entities.Audio
|
||||||
{
|
{
|
||||||
@ -28,5 +32,37 @@ namespace MediaBrowser.Controller.Entities.Audio
|
|||||||
|
|
||||||
[IgnoreDataMember]
|
[IgnoreDataMember]
|
||||||
public Dictionary<Guid, ItemByNameCounts> UserItemCounts { get; set; }
|
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;
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,11 +3,8 @@ using MediaBrowser.Controller.Configuration;
|
|||||||
using MediaBrowser.Controller.Entities;
|
using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Controller.Entities.Audio;
|
using MediaBrowser.Controller.Entities.Audio;
|
||||||
using MediaBrowser.Controller.Library;
|
using MediaBrowser.Controller.Library;
|
||||||
using MediaBrowser.Model.Entities;
|
|
||||||
using MediaBrowser.Model.Logging;
|
using MediaBrowser.Model.Logging;
|
||||||
using MediaBrowser.Model.Serialization;
|
using MediaBrowser.Model.Serialization;
|
||||||
using System;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
@ -77,7 +74,7 @@ namespace MediaBrowser.Providers.Music
|
|||||||
var artist = (Artist)item;
|
var artist = (Artist)item;
|
||||||
|
|
||||||
// See if we can avoid an http request by finding the matching MusicArtist entity
|
// 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)
|
if (musicArtist != null && !force)
|
||||||
{
|
{
|
||||||
@ -88,29 +85,5 @@ namespace MediaBrowser.Providers.Music
|
|||||||
await base.FetchLastfmData(item, musicBrainzId, force, cancellationToken).ConfigureAwait(false);
|
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;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,9 +6,7 @@ using MediaBrowser.Model.Dto;
|
|||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
using MediaBrowser.Model.Logging;
|
using MediaBrowser.Model.Logging;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Concurrent;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
@ -85,7 +83,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
|
|||||||
artist.ValidateImages();
|
artist.ValidateImages();
|
||||||
artist.ValidateBackdrops();
|
artist.ValidateBackdrops();
|
||||||
|
|
||||||
var musicArtist = FindMusicArtist(artist, allMusicArtists);
|
var musicArtist = Artist.FindMusicArtist(artist, allMusicArtists);
|
||||||
|
|
||||||
if (musicArtist != null)
|
if (musicArtist != null)
|
||||||
{
|
{
|
||||||
@ -235,26 +233,5 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
|
|||||||
|
|
||||||
return returnArtists;
|
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;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user