using MediaBrowser.Common.Extensions; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; namespace MediaBrowser.Providers.Music { public class ArtistInfoFromSongProvider : BaseMetadataProvider { public ArtistInfoFromSongProvider(ILogManager logManager, IServerConfigurationManager configurationManager) : base(logManager, configurationManager) { } public override bool Supports(BaseItem item) { return item is MusicArtist; } protected override bool NeedsRefreshInternal(BaseItem item, BaseProviderInfo providerInfo) { // If song metadata has changed if (GetComparisonData((MusicArtist)item) != providerInfo.FileStamp) { return true; } return base.NeedsRefreshInternal(item, providerInfo); } /// /// Gets the data. /// /// The artist. /// Guid. private Guid GetComparisonData(MusicArtist artist) { var songs = artist.RecursiveChildren.OfType