diff options
Diffstat (limited to 'MediaBrowser.Providers')
6 files changed, 55 insertions, 80 deletions
diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs index c37e05d957..3759670d4f 100644 --- a/MediaBrowser.Providers/Manager/MetadataService.cs +++ b/MediaBrowser.Providers/Manager/MetadataService.cs @@ -13,6 +13,7 @@ using System.Threading.Tasks; using MediaBrowser.Model.IO; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Providers; +using MediaBrowser.Providers.MediaInfo; namespace MediaBrowser.Providers.Manager { @@ -37,6 +38,28 @@ namespace MediaBrowser.Providers.Manager LibraryManager = libraryManager; } + private bool RequiresRefresh(IHasMetadata item, IDirectoryService directoryService) + { + if (item.RequiresRefresh()) + { + return true; + } + + if (item.SupportsLocalMetadata) + { + var video = item as Video; + + if (video != null && !video.IsPlaceHolder) + { + return !video.SubtitleFiles + .SequenceEqual(SubtitleResolver.GetSubtitleFiles(video, directoryService, FileSystem, false) + .OrderBy(i => i), StringComparer.OrdinalIgnoreCase); + } + } + + return false; + } + public async Task<ItemUpdateType> RefreshMetadata(IHasMetadata item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken) { var itemOfType = (TItemType)item; @@ -47,19 +70,35 @@ namespace MediaBrowser.Providers.Manager var libraryOptions = LibraryManager.GetLibraryOptions((BaseItem)item); - if (refreshOptions.MetadataRefreshMode != MetadataRefreshMode.None) + DateTime? newDateModified = null; + if (item.LocationType == LocationType.FileSystem) { - // TODO: If this returns true, should we instead just change metadata refresh mode to Full? - requiresRefresh = item.RequiresRefresh(); + var file = refreshOptions.DirectoryService.GetFile(item.Path); + if (file != null) + { + newDateModified = file.LastWriteTimeUtc; + if (item.EnableRefreshOnDateModifiedChange) + { + if (newDateModified != item.DateModified) + { + Logger.Debug("Date modified for {0}. Old date {1} new date {2} Id {3}", item.Path, item.DateModified, newDateModified, item.Id); + requiresRefresh = true; + } + } + } } - if (!requiresRefresh && - libraryOptions.AutomaticRefreshIntervalDays > 0 && - (DateTime.UtcNow - item.DateLastRefreshed).TotalDays >= libraryOptions.AutomaticRefreshIntervalDays) + if (!requiresRefresh && libraryOptions.AutomaticRefreshIntervalDays > 0 && (DateTime.UtcNow - item.DateLastRefreshed).TotalDays >= libraryOptions.AutomaticRefreshIntervalDays) { requiresRefresh = true; } + if (!requiresRefresh && refreshOptions.MetadataRefreshMode != MetadataRefreshMode.None) + { + // TODO: If this returns true, should we instead just change metadata refresh mode to Full? + requiresRefresh = RequiresRefresh(item, refreshOptions.DirectoryService); + } + var itemImageProvider = new ItemImageProvider(Logger, ProviderManager, ServerConfigurationManager, FileSystem); var localImagesFailed = false; @@ -145,20 +184,9 @@ namespace MediaBrowser.Providers.Manager var beforeSaveResult = BeforeSave(itemOfType, isFirstRefresh || refreshOptions.ReplaceAllMetadata || refreshOptions.MetadataRefreshMode == MetadataRefreshMode.FullRefresh || requiresRefresh, updateType); updateType = updateType | beforeSaveResult; - if (item.LocationType == LocationType.FileSystem) + if (newDateModified.HasValue) { - var file = refreshOptions.DirectoryService.GetFile(item.Path); - if (file != null) - { - var fileLastWriteTime = file.LastWriteTimeUtc; - if (item.EnableRefreshOnDateModifiedChange && fileLastWriteTime != item.DateModified) - { - Logger.Debug("Date modified for {0}. Old date {1} new date {2} Id {3}", item.Path, item.DateModified, fileLastWriteTime, item.Id); - requiresRefresh = true; - } - - item.DateModified = fileLastWriteTime; - } + item.DateModified = newDateModified.Value; } // Save if changes were made, or it's never been saved before diff --git a/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs b/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs index a4f2053a9d..3499d5d3f8 100644 --- a/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs +++ b/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs @@ -19,7 +19,7 @@ namespace MediaBrowser.Providers.MediaInfo /// <summary> /// Uses ffmpeg to create video images /// </summary> - public class AudioImageProvider : IDynamicImageProvider, IHasItemChangeMonitor + public class AudioImageProvider : IDynamicImageProvider { private readonly IMediaEncoder _mediaEncoder; private readonly IServerConfigurationManager _config; @@ -134,19 +134,5 @@ namespace MediaBrowser.Providers.MediaInfo return item.LocationType == LocationType.FileSystem && audio != null; } - - public bool HasChanged(IHasMetadata item, IDirectoryService directoryService) - { - if (item.EnableRefreshOnDateModifiedChange && !string.IsNullOrWhiteSpace(item.Path) && item.LocationType == LocationType.FileSystem) - { - var file = directoryService.GetFile(item.Path); - if (file != null && file.LastWriteTimeUtc != item.DateModified) - { - return true; - } - } - - return false; - } } } diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs b/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs index a9aa71bfa4..bce4219019 100644 --- a/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs +++ b/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs @@ -34,7 +34,6 @@ namespace MediaBrowser.Providers.MediaInfo ICustomMetadataProvider<Audio>, ICustomMetadataProvider<AudioPodcast>, ICustomMetadataProvider<AudioBook>, - IHasItemChangeMonitor, IHasOrder, IForcedProvider, IPreRefreshProvider @@ -180,32 +179,6 @@ namespace MediaBrowser.Providers.MediaInfo return prober.Probe(item, cancellationToken); } - public bool HasChanged(IHasMetadata item, IDirectoryService directoryService) - { - if (item.EnableRefreshOnDateModifiedChange && !string.IsNullOrWhiteSpace(item.Path) && item.LocationType == LocationType.FileSystem) - { - var file = directoryService.GetFile(item.Path); - if (file != null && file.LastWriteTimeUtc != item.DateModified) - { - return true; - } - } - - if (item.SupportsLocalMetadata) - { - var video = item as Video; - - if (video != null && !video.IsPlaceHolder) - { - return !video.SubtitleFiles - .SequenceEqual(SubtitleResolver.GetSubtitleFiles(video, directoryService, _fileSystem, false) - .OrderBy(i => i), StringComparer.OrdinalIgnoreCase); - } - } - - return false; - } - public int Order { get diff --git a/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs b/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs index 9b0d29cf04..9fde9c70fa 100644 --- a/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs +++ b/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs @@ -16,7 +16,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.MediaInfo { - public class VideoImageProvider : IDynamicImageProvider, IHasItemChangeMonitor, IHasOrder + public class VideoImageProvider : IDynamicImageProvider, IHasOrder { private readonly IMediaEncoder _mediaEncoder; private readonly ILogger _logger; @@ -149,19 +149,5 @@ namespace MediaBrowser.Providers.MediaInfo return 100; } } - - public bool HasChanged(IHasMetadata item, IDirectoryService directoryService) - { - if (item.EnableRefreshOnDateModifiedChange && !string.IsNullOrWhiteSpace(item.Path) && item.LocationType == LocationType.FileSystem) - { - var file = directoryService.GetFile(item.Path); - if (file != null && file.LastWriteTimeUtc != item.DateModified) - { - return true; - } - } - - return false; - } } } diff --git a/MediaBrowser.Providers/Movies/MovieDbSearch.cs b/MediaBrowser.Providers/Movies/MovieDbSearch.cs index 1c6157c03b..595c0249fe 100644 --- a/MediaBrowser.Providers/Movies/MovieDbSearch.cs +++ b/MediaBrowser.Providers/Movies/MovieDbSearch.cs @@ -100,6 +100,12 @@ namespace MediaBrowser.Providers.Movies name = name.Replace("!", " "); name = name.Replace("?", " "); + var parenthIndex = name.IndexOf('('); + if (parenthIndex != -1) + { + name = name.Substring(0, parenthIndex); + } + name = name.Trim(); // Search again if the new name is different diff --git a/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs b/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs index 44e3cff6a1..b68e6e4a9f 100644 --- a/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs +++ b/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs @@ -350,8 +350,6 @@ namespace MediaBrowser.Providers.TV foreach (var episodeToRemove in episodesToRemove.Select(e => e.Episode)) { - _logger.Info("Removing missing/unaired episode {0} {1}x{2}", episodeToRemove.Series.Name, episodeToRemove.ParentIndexNumber, episodeToRemove.IndexNumber); - await episodeToRemove.Delete(new DeleteOptions { DeleteFileLocation = true @@ -418,8 +416,6 @@ namespace MediaBrowser.Providers.TV foreach (var seasonToRemove in seasonsToRemove) { - _logger.Info("Removing virtual season {0} {1}", seasonToRemove.Series.Name, seasonToRemove.IndexNumber); - await seasonToRemove.Delete(new DeleteOptions { DeleteFileLocation = true |
