diff options
6 files changed, 39 insertions, 7 deletions
diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs index 62b7d5fc9..4561d823b 100644 --- a/MediaBrowser.Api/UserLibrary/ItemsService.cs +++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs @@ -198,6 +198,8 @@ namespace MediaBrowser.Api.UserLibrary items = items.AsParallel(); + items = ApplyAdditionalFilters(request, items); + // Apply filters // Run them starting with the ones that are likely to reduce the list the most foreach (var filter in GetFilters(request).OrderByDescending(f => (int)f)) @@ -205,8 +207,6 @@ namespace MediaBrowser.Api.UserLibrary items = ApplyFilter(items, filter, user); } - items = ApplyAdditionalFilters(request, items); - items = items.AsEnumerable(); items = ApplySearchTerm(request, items); diff --git a/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs b/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs index eb8f600f5..27713bbe6 100644 --- a/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs +++ b/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs @@ -176,7 +176,7 @@ namespace MediaBrowser.Controller.MediaInfo if (extractImages) { // Disable for now on folder rips - if (video.VideoType != VideoType.VideoFile) + if (video.VideoType != VideoType.VideoFile && video.VideoType != VideoType.Dvd) { continue; } diff --git a/MediaBrowser.Controller/Providers/MediaInfo/FFMpegAudioImageProvider.cs b/MediaBrowser.Controller/Providers/MediaInfo/FFMpegAudioImageProvider.cs index 421b0522d..e1cbc6932 100644 --- a/MediaBrowser.Controller/Providers/MediaInfo/FFMpegAudioImageProvider.cs +++ b/MediaBrowser.Controller/Providers/MediaInfo/FFMpegAudioImageProvider.cs @@ -52,6 +52,21 @@ namespace MediaBrowser.Controller.Providers.MediaInfo } /// <summary> + /// Needses the refresh internal. + /// </summary> + /// <param name="item">The item.</param> + /// <param name="providerInfo">The provider info.</param> + /// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns> + protected override bool NeedsRefreshInternal(BaseItem item, BaseProviderInfo providerInfo) + { + if (!string.IsNullOrEmpty(item.PrimaryImagePath)) + { + return false; + } + return base.NeedsRefreshInternal(item, providerInfo); + } + + /// <summary> /// Fetches metadata and returns true or false indicating if any work that requires persistence was done /// </summary> /// <param name="item">The item.</param> diff --git a/MediaBrowser.Controller/Providers/MediaInfo/FFMpegVideoImageProvider.cs b/MediaBrowser.Controller/Providers/MediaInfo/FFMpegVideoImageProvider.cs index a29dbb043..ad81fa442 100644 --- a/MediaBrowser.Controller/Providers/MediaInfo/FFMpegVideoImageProvider.cs +++ b/MediaBrowser.Controller/Providers/MediaInfo/FFMpegVideoImageProvider.cs @@ -71,6 +71,21 @@ namespace MediaBrowser.Controller.Providers.MediaInfo } /// <summary> + /// Needses the refresh internal. + /// </summary> + /// <param name="item">The item.</param> + /// <param name="providerInfo">The provider info.</param> + /// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns> + protected override bool NeedsRefreshInternal(BaseItem item, BaseProviderInfo providerInfo) + { + if (!string.IsNullOrEmpty(item.PrimaryImagePath)) + { + return false; + } + return base.NeedsRefreshInternal(item, providerInfo); + } + + /// <summary> /// The true task result /// </summary> protected static readonly Task<bool> TrueTaskResult = Task.FromResult(true); diff --git a/MediaBrowser.Server.Implementations/MediaEncoder/MediaEncoder.cs b/MediaBrowser.Server.Implementations/MediaEncoder/MediaEncoder.cs index fce88e3d8..ab039f9d2 100644 --- a/MediaBrowser.Server.Implementations/MediaEncoder/MediaEncoder.cs +++ b/MediaBrowser.Server.Implementations/MediaEncoder/MediaEncoder.cs @@ -698,13 +698,14 @@ namespace MediaBrowser.Server.Implementations.MediaEncoder { var resourcePool = type == InputType.AudioFile ? _audioImageResourcePool : _videoImageResourcePool; - return ExtractImageInternal(GetInputArgument(inputFiles, type), offset, outputPath, resourcePool, cancellationToken); + return ExtractImageInternal(GetInputArgument(inputFiles, type), type, offset, outputPath, resourcePool, cancellationToken); } /// <summary> /// Extracts the image. /// </summary> /// <param name="inputPath">The input path.</param> + /// <param name="type">The type.</param> /// <param name="offset">The offset.</param> /// <param name="outputPath">The output path.</param> /// <param name="resourcePool">The resource pool.</param> @@ -714,7 +715,7 @@ namespace MediaBrowser.Server.Implementations.MediaEncoder /// or /// outputPath</exception> /// <exception cref="System.ApplicationException"></exception> - private async Task ExtractImageInternal(string inputPath, TimeSpan? offset, string outputPath, SemaphoreSlim resourcePool, CancellationToken cancellationToken) + private async Task ExtractImageInternal(string inputPath, InputType type, TimeSpan? offset, string outputPath, SemaphoreSlim resourcePool, CancellationToken cancellationToken) { if (string.IsNullOrEmpty(inputPath)) { @@ -727,7 +728,8 @@ namespace MediaBrowser.Server.Implementations.MediaEncoder } - var args = string.Format("-i {0} -threads 0 -v quiet -vframes 1 -filter:v select=\\'eq(pict_type\\,I)\\' -f image2 \"{1}\"", inputPath, outputPath); + var args = type != InputType.Dvd ? string.Format("-i {0} -threads 0 -v quiet -vframes 1 -filter:v select=\\'eq(pict_type\\,I)\\' -f image2 \"{1}\"", inputPath, outputPath) : + string.Format("-i {0} -threads 0 -v quiet -vframes 1 -f image2 \"{1}\"", inputPath, outputPath); if (offset.HasValue) { diff --git a/MediaBrowser.Server.Implementations/Updates/InstallationManager.cs b/MediaBrowser.Server.Implementations/Updates/InstallationManager.cs index 271d3d877..347e378fe 100644 --- a/MediaBrowser.Server.Implementations/Updates/InstallationManager.cs +++ b/MediaBrowser.Server.Implementations/Updates/InstallationManager.cs @@ -288,7 +288,7 @@ namespace MediaBrowser.Server.Implementations.Updates return latestPluginInfo != null && latestPluginInfo.version > p.Version ? latestPluginInfo : null; - }).Where(p => !CompletedInstallations.Any(i => i.Name.Equals(p.name, StringComparison.OrdinalIgnoreCase))) + }).Where(p => !CompletedInstallations.Any(i => string.Equals(i.Name, p.name, StringComparison.OrdinalIgnoreCase))) .Where(p => p != null && !string.IsNullOrWhiteSpace(p.sourceUrl)); } |
