diff options
Diffstat (limited to 'MediaBrowser.Providers/Manager')
| -rw-r--r-- | MediaBrowser.Providers/Manager/ImageSaver.cs | 14 | ||||
| -rw-r--r-- | MediaBrowser.Providers/Manager/MetadataService.cs | 166 | ||||
| -rw-r--r-- | MediaBrowser.Providers/Manager/ProviderManager.cs | 23 | ||||
| -rw-r--r-- | MediaBrowser.Providers/Manager/ProviderUtils.cs | 20 | ||||
| -rw-r--r-- | MediaBrowser.Providers/Manager/SeriesOrderManager.cs | 35 |
5 files changed, 23 insertions, 235 deletions
diff --git a/MediaBrowser.Providers/Manager/ImageSaver.cs b/MediaBrowser.Providers/Manager/ImageSaver.cs index bd1961143..465677efb 100644 --- a/MediaBrowser.Providers/Manager/ImageSaver.cs +++ b/MediaBrowser.Providers/Manager/ImageSaver.cs @@ -161,6 +161,8 @@ namespace MediaBrowser.Providers.Manager { var currentPath = currentImage.Path; + _logger.Debug("Deleting previous image {0}", currentPath); + _libraryMonitor.ReportFileSystemChangeBeginning(currentPath); try @@ -276,7 +278,7 @@ namespace MediaBrowser.Providers.Manager /// <returns>IEnumerable{System.String}.</returns> private string[] GetSavePaths(IHasImages item, ImageType type, int? imageIndex, string mimeType, bool saveLocally) { - if (_config.Configuration.ImageSavingConvention == ImageSavingConvention.Legacy || !saveLocally) + if (!saveLocally || (_config.Configuration.ImageSavingConvention == ImageSavingConvention.Legacy)) { return new[] { GetStandardSavePath(item, type, imageIndex, mimeType, saveLocally) }; } @@ -375,11 +377,11 @@ namespace MediaBrowser.Providers.Manager } string filename; - var folderName = item is MusicAlbum || - item is MusicArtist || - item is PhotoAlbum || - (saveLocally && _config.Configuration.ImageSavingConvention == ImageSavingConvention.Legacy) ? - "folder" : + var folderName = item is MusicAlbum || + item is MusicArtist || + item is PhotoAlbum || + (saveLocally && _config.Configuration.ImageSavingConvention == ImageSavingConvention.Legacy) ? + "folder" : "poster"; switch (type) diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs index 7184302f1..678d495cb 100644 --- a/MediaBrowser.Providers/Manager/MetadataService.cs +++ b/MediaBrowser.Providers/Manager/MetadataService.cs @@ -1,5 +1,4 @@ using MediaBrowser.Common.Extensions; -using MediaBrowser.Common.IO; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; @@ -12,11 +11,6 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; using CommonIO; -using MediaBrowser.Controller.Channels; -using MediaBrowser.Controller.Entities.Audio; -using MediaBrowser.Controller.Entities.Movies; -using MediaBrowser.Controller.LiveTv; -using MediaBrowser.Controller.Playlists; using MediaBrowser.Model.Providers; namespace MediaBrowser.Providers.Manager @@ -28,95 +22,26 @@ namespace MediaBrowser.Providers.Manager protected readonly IServerConfigurationManager ServerConfigurationManager; protected readonly ILogger Logger; protected readonly IProviderManager ProviderManager; - protected readonly IProviderRepository ProviderRepo; protected readonly IFileSystem FileSystem; protected readonly IUserDataManager UserDataManager; protected readonly ILibraryManager LibraryManager; - protected MetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) + protected MetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) { ServerConfigurationManager = serverConfigurationManager; Logger = logger; ProviderManager = providerManager; - ProviderRepo = providerRepo; FileSystem = fileSystem; UserDataManager = userDataManager; LibraryManager = libraryManager; } - /// <summary> - /// Saves the provider result. - /// </summary> - /// <param name="item">The item.</param> - /// <param name="result">The result.</param> - /// <param name="directoryService">The directory service.</param> - /// <returns>Task.</returns> - protected Task SaveProviderResult(TItemType item, MetadataStatus result, IDirectoryService directoryService) - { - result.ItemId = item.Id; - - //var locationType = item.LocationType; - - //if (locationType == LocationType.FileSystem || locationType == LocationType.Offline) - //{ - // if (!string.IsNullOrWhiteSpace(item.Path)) - // { - // var file = directoryService.GetFile(item.Path); - - // if ((file.Attributes & FileAttributes.Directory) != FileAttributes.Directory && file.Exists) - // { - // result.ItemDateModified = FileSystem.GetLastWriteTimeUtc(file); - // } - // } - //} - - result.ItemDateModified = item.DateModified; - - if (EnableDateLastRefreshed(item)) - { - return Task.FromResult(true); - } - - return ProviderRepo.SaveMetadataStatus(result, CancellationToken.None); - } - - /// <summary> - /// Gets the last result. - /// </summary> - /// <param name="item">The item.</param> - /// <returns>ProviderResult.</returns> - protected MetadataStatus GetLastResult(IHasMetadata item) - { - if (GetLastRefreshDate(item) == default(DateTime)) - { - return new MetadataStatus { ItemId = item.Id }; - } - - if (EnableDateLastRefreshed(item) && item.DateModifiedDuringLastRefresh.HasValue) - { - return new MetadataStatus - { - ItemId = item.Id, - DateLastImagesRefresh = item.DateLastRefreshed, - DateLastMetadataRefresh = item.DateLastRefreshed, - ItemDateModified = item.DateModifiedDuringLastRefresh.Value - }; - } - - var result = ProviderRepo.GetMetadataStatus(item.Id) ?? new MetadataStatus { ItemId = item.Id }; - - item.DateModifiedDuringLastRefresh = result.ItemDateModified; - - return result; - } - public async Task<ItemUpdateType> RefreshMetadata(IHasMetadata item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken) { var itemOfType = (TItemType)item; var config = ProviderManager.GetMetadataOptions(item); var updateType = ItemUpdateType.None; - var refreshResult = GetLastResult(item); var itemImageProvider = new ItemImageProvider(Logger, ProviderManager, ServerConfigurationManager, FileSystem); var localImagesFailed = false; @@ -153,12 +78,10 @@ namespace MediaBrowser.Providers.Manager // TODO: If this returns true, should we instead just change metadata refresh mode to Full? requiresRefresh = item.RequiresRefresh(); - var providers = GetProviders(item, refreshResult, refreshOptions, requiresRefresh) + var providers = GetProviders(item, refreshOptions, requiresRefresh) .ToList(); - var dateLastRefresh = EnableDateLastRefreshed(item) - ? item.DateLastRefreshed - : refreshResult.DateLastMetadataRefresh ?? default(DateTime); + var dateLastRefresh = item.DateLastRefreshed; if (providers.Count > 0 || dateLastRefresh == default(DateTime)) { @@ -185,13 +108,11 @@ namespace MediaBrowser.Providers.Manager updateType = updateType | result.UpdateType; if (result.Failures == 0) { - refreshResult.SetDateLastMetadataRefresh(DateTime.UtcNow); hasRefreshedMetadata = true; } else { hasRefreshedMetadata = false; - refreshResult.SetDateLastMetadataRefresh(null); } } } @@ -199,7 +120,7 @@ namespace MediaBrowser.Providers.Manager // Next run remote image providers, but only if local image providers didn't throw an exception if (!localImagesFailed && refreshOptions.ImageRefreshMode != ImageRefreshMode.ValidationOnly) { - var providers = GetNonLocalImageProviders(item, allImageProviders, refreshResult, refreshOptions).ToList(); + var providers = GetNonLocalImageProviders(item, allImageProviders, refreshOptions).ToList(); if (providers.Count > 0) { @@ -208,13 +129,11 @@ namespace MediaBrowser.Providers.Manager updateType = updateType | result.UpdateType; if (result.Failures == 0) { - refreshResult.SetDateLastImagesRefresh(DateTime.UtcNow); hasRefreshedImages = true; } else { hasRefreshedImages = false; - refreshResult.SetDateLastImagesRefresh(null); } } } @@ -248,11 +167,6 @@ namespace MediaBrowser.Providers.Manager await SaveItem(metadataResult, updateType, cancellationToken).ConfigureAwait(false); } - if (updateType > ItemUpdateType.None || refreshResult.IsDirty) - { - await SaveProviderResult(itemOfType, refreshResult, refreshOptions.DirectoryService).ConfigureAwait(false); - } - await AfterMetadataRefresh(itemOfType, refreshOptions, cancellationToken).ConfigureAwait(false); return updateType; @@ -265,61 +179,9 @@ namespace MediaBrowser.Providers.Manager lookupInfo.Year = result.ProductionYear; } - private async Task FindIdentities(TIdType id, CancellationToken cancellationToken) - { - try - { - await ItemIdentifier<TIdType>.FindIdentities(id, ProviderManager, cancellationToken).ConfigureAwait(false); - } - catch (Exception ex) - { - Logger.ErrorException("Error in FindIdentities", ex); - } - } - private DateTime GetLastRefreshDate(IHasMetadata item) { - if (EnableDateLastRefreshed(item)) - { - return item.DateLastRefreshed; - } - - return item.DateLastSaved; - } - - private bool EnableDateLastRefreshed(IHasMetadata item) - { - if (ServerConfigurationManager.Configuration.EnableDateLastRefresh) - { - return true; - } - - if (item.DateLastRefreshed != default(DateTime)) - { - return true; - } - - if (!(item is Audio) && !(item is Video)) - { - return true; - } - - if (item is IItemByName) - { - return true; - } - - if (item.SourceType != SourceType.Library) - { - return true; - } - - if (item is MusicVideo) - { - return true; - } - - return false; + return item.DateLastRefreshed; } protected async Task SaveItem(MetadataResult<TItemType> result, ItemUpdateType reason, CancellationToken cancellationToken) @@ -466,14 +328,12 @@ namespace MediaBrowser.Providers.Manager /// Gets the providers. /// </summary> /// <returns>IEnumerable{`0}.</returns> - protected IEnumerable<IMetadataProvider> GetProviders(IHasMetadata item, MetadataStatus status, MetadataRefreshOptions options, bool requiresRefresh) + protected IEnumerable<IMetadataProvider> GetProviders(IHasMetadata item, MetadataRefreshOptions options, bool requiresRefresh) { // Get providers to refresh var providers = ((ProviderManager)ProviderManager).GetMetadataProviders<TItemType>(item).ToList(); - var dateLastRefresh = EnableDateLastRefreshed(item) - ? item.DateLastRefreshed - : status.DateLastMetadataRefresh ?? default(DateTime); + var dateLastRefresh = item.DateLastRefreshed; // Run all if either of these flags are true var runAllProviders = options.ReplaceAllMetadata || options.MetadataRefreshMode == MetadataRefreshMode.FullRefresh || dateLastRefresh == default(DateTime) || requiresRefresh; @@ -535,14 +395,12 @@ namespace MediaBrowser.Providers.Manager return providers; } - protected virtual IEnumerable<IImageProvider> GetNonLocalImageProviders(IHasMetadata item, IEnumerable<IImageProvider> allImageProviders, MetadataStatus status, ImageRefreshOptions options) + protected virtual IEnumerable<IImageProvider> GetNonLocalImageProviders(IHasMetadata item, IEnumerable<IImageProvider> allImageProviders, ImageRefreshOptions options) { // Get providers to refresh var providers = allImageProviders.Where(i => !(i is ILocalImageProvider)).ToList(); - var dateLastImageRefresh = EnableDateLastRefreshed(item) - ? item.DateLastRefreshed - : status.DateLastImagesRefresh ?? default(DateTime); + var dateLastImageRefresh = item.DateLastRefreshed; // Run all if either of these flags are true var runAllProviders = options.ImageRefreshMode == ImageRefreshMode.FullRefresh || dateLastImageRefresh == default(DateTime); @@ -552,12 +410,6 @@ namespace MediaBrowser.Providers.Manager providers = providers .Where(i => { - var hasChangeMonitor = i as IHasChangeMonitor; - if (hasChangeMonitor != null) - { - return HasChanged(item, hasChangeMonitor, dateLastImageRefresh, options.DirectoryService); - } - var hasFileChangeMonitor = i as IHasItemChangeMonitor; if (hasFileChangeMonitor != null) { diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs index c95d58a42..0f0745d1b 100644 --- a/MediaBrowser.Providers/Manager/ProviderManager.cs +++ b/MediaBrowser.Providers/Manager/ProviderManager.cs @@ -55,8 +55,6 @@ namespace MediaBrowser.Providers.Manager private readonly IFileSystem _fileSystem; private IMetadataService[] _metadataServices = { }; - private IItemIdentityProvider[] _identityProviders = { }; - private IItemIdentityConverter[] _identityConverters = { }; private IMetadataProvider[] _metadataProviders = { }; private IEnumerable<IMetadataSaver> _savers; private IImageSaver[] _imageSavers; @@ -92,22 +90,17 @@ namespace MediaBrowser.Providers.Manager /// </summary> /// <param name="imageProviders">The image providers.</param> /// <param name="metadataServices">The metadata services.</param> - /// <param name="identityProviders">The identity providers.</param> - /// <param name="identityConverters">The identity converters.</param> /// <param name="metadataProviders">The metadata providers.</param> /// <param name="metadataSavers">The metadata savers.</param> /// <param name="imageSavers">The image savers.</param> /// <param name="externalIds">The external ids.</param> public void AddParts(IEnumerable<IImageProvider> imageProviders, IEnumerable<IMetadataService> metadataServices, - IEnumerable<IItemIdentityProvider> identityProviders, IEnumerable<IItemIdentityConverter> identityConverters, IEnumerable<IMetadataProvider> metadataProviders, IEnumerable<IMetadataSaver> metadataSavers, IEnumerable<IImageSaver> imageSavers, IEnumerable<IExternalId> externalIds) { ImageProviders = imageProviders.ToArray(); _metadataServices = metadataServices.OrderBy(i => i.Order).ToArray(); - _identityProviders = identityProviders.ToArray(); - _identityConverters = identityConverters.ToArray(); _metadataProviders = metadataProviders.ToArray(); _imageSavers = imageSavers.ToArray(); _externalIds = externalIds.OrderBy(i => i.Name).ToArray(); @@ -301,18 +294,6 @@ namespace MediaBrowser.Providers.Manager .ThenBy(GetDefaultOrder); } - public IEnumerable<IItemIdentityProvider<TLookupInfo>> GetItemIdentityProviders<TLookupInfo>() - where TLookupInfo : ItemLookupInfo - { - return _identityProviders.OfType<IItemIdentityProvider<TLookupInfo>>(); - } - - public IEnumerable<IItemIdentityConverter<TLookupInfo>> GetItemIdentityConverters<TLookupInfo>() - where TLookupInfo : ItemLookupInfo - { - return _identityConverters.OfType<IItemIdentityConverter<TLookupInfo>>(); - } - private IEnumerable<IRemoteImageProvider> GetRemoteImageProviders(IHasImages item, bool includeDisabled) { var options = GetMetadataOptions(item); @@ -849,7 +830,7 @@ namespace MediaBrowser.Providers.Manager }); } - public IEnumerable<ExternalUrl> GetExternalUrls(IHasProviderIds item) + public IEnumerable<ExternalUrl> GetExternalUrls(BaseItem item) { return GetExternalIds(item) .Select(i => @@ -872,7 +853,7 @@ namespace MediaBrowser.Providers.Manager Url = string.Format(i.UrlFormatString, value) }; - }).Where(i => i != null); + }).Where(i => i != null).Concat(item.GetRelatedUrls()); } public IEnumerable<ExternalIdInfo> GetExternalIdInfos(IHasProviderIds item) diff --git a/MediaBrowser.Providers/Manager/ProviderUtils.cs b/MediaBrowser.Providers/Manager/ProviderUtils.cs index 59a2da460..5f23cf69c 100644 --- a/MediaBrowser.Providers/Manager/ProviderUtils.cs +++ b/MediaBrowser.Providers/Manager/ProviderUtils.cs @@ -151,29 +151,17 @@ namespace MediaBrowser.Providers.Manager if (!lockedFields.Contains(MetadataFields.Tags)) { - var sourceHasTags = source as IHasTags; - var targetHasTags = target as IHasTags; - - if (sourceHasTags != null && targetHasTags != null) + if (replaceData || target.Tags.Count == 0) { - if (replaceData || targetHasTags.Tags.Count == 0) - { - targetHasTags.Tags = sourceHasTags.Tags; - } + target.Tags = source.Tags; } } if (!lockedFields.Contains(MetadataFields.Keywords)) { - var sourceHasKeywords = source as IHasKeywords; - var targetHasKeywords = target as IHasKeywords; - - if (sourceHasKeywords != null && targetHasKeywords != null) + if (replaceData || target.Keywords.Count == 0) { - if (replaceData || targetHasKeywords.Keywords.Count == 0) - { - targetHasKeywords.Keywords = sourceHasKeywords.Keywords; - } + target.Keywords = source.Keywords; } } diff --git a/MediaBrowser.Providers/Manager/SeriesOrderManager.cs b/MediaBrowser.Providers/Manager/SeriesOrderManager.cs deleted file mode 100644 index 1050bdbbd..000000000 --- a/MediaBrowser.Providers/Manager/SeriesOrderManager.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using MediaBrowser.Controller.Providers; - -namespace MediaBrowser.Providers.Manager -{ - public class SeriesOrderManager : ISeriesOrderManager - { - private Dictionary<string, ISeriesOrderProvider[]> _providers; - - public void AddParts(IEnumerable<ISeriesOrderProvider> orderProviders) - { - _providers = orderProviders - .GroupBy(p => p.OrderType) - .ToDictionary(g => g.Key, g => g.ToArray()); - } - - public async Task<int?> FindSeriesIndex(string orderType, string seriesName) - { - ISeriesOrderProvider[] providers; - if (!_providers.TryGetValue(orderType, out providers)) - return null; - - foreach (ISeriesOrderProvider provider in providers) - { - int? index = await provider.FindSeriesIndex(seriesName); - if (index != null) - return index; - } - - return null; - } - } -}
\ No newline at end of file |
