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 AlbumInfoFromSongProvider : BaseMetadataProvider { public AlbumInfoFromSongProvider(ILogManager logManager, IServerConfigurationManager configurationManager) : base(logManager, configurationManager) { } public override bool Supports(BaseItem item) { return item is MusicAlbum; } protected override bool RefreshOnVersionChange { get { return true; } } protected override string ProviderVersion { get { return "1"; } } protected override bool NeedsRefreshInternal(BaseItem item, BaseProviderInfo providerInfo) { // If song metadata has changed if (GetComparisonData((MusicAlbum)item) != providerInfo.FileStamp) { return true; } return base.NeedsRefreshInternal(item, providerInfo); } /// /// Gets the data. /// /// The album. /// Guid. private Guid GetComparisonData(MusicAlbum album) { var songs = album.RecursiveChildren.OfType