aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers/CollectionFolderImageProvider.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-11-07 10:56:35 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-11-07 10:56:35 -0500
commitd609d0edec97655932e365309a847b525a5a7d3d (patch)
treef2af7609a1b79c2053e448f82c5bf907d0210018 /MediaBrowser.Providers/CollectionFolderImageProvider.cs
parenta2cd03610fd8fedc55699f43bf4a169dc5072aa8 (diff)
fixes #616 - Support images in collection folders
Diffstat (limited to 'MediaBrowser.Providers/CollectionFolderImageProvider.cs')
-rw-r--r--MediaBrowser.Providers/CollectionFolderImageProvider.cs55
1 files changed, 55 insertions, 0 deletions
diff --git a/MediaBrowser.Providers/CollectionFolderImageProvider.cs b/MediaBrowser.Providers/CollectionFolderImageProvider.cs
new file mode 100644
index 000000000..45b1b36c2
--- /dev/null
+++ b/MediaBrowser.Providers/CollectionFolderImageProvider.cs
@@ -0,0 +1,55 @@
+using MediaBrowser.Common.IO;
+using MediaBrowser.Controller.Configuration;
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Providers;
+using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.Logging;
+using System;
+using System.IO;
+using System.Linq;
+
+namespace MediaBrowser.Providers
+{
+ public class CollectionFolderImageProvider : ImageFromMediaLocationProvider
+ {
+ public CollectionFolderImageProvider(ILogManager logManager, IServerConfigurationManager configurationManager, IFileSystem fileSystem)
+ : base(logManager, configurationManager, fileSystem)
+ {
+ }
+
+ public override bool Supports(BaseItem item)
+ {
+ return item is CollectionFolder && item.LocationType == LocationType.FileSystem;
+ }
+
+ public override MetadataProviderPriority Priority
+ {
+ get { return MetadataProviderPriority.Second; }
+ }
+
+ protected override FileSystemInfo GetImage(BaseItem item, ItemResolveArgs args, string filenameWithoutExtension)
+ {
+ return item.ResolveArgs.PhysicalLocations
+ .Select(i => GetImageFromLocation(i, filenameWithoutExtension))
+ .FirstOrDefault(i => i != null);
+ }
+
+ protected override Guid GetFileSystemStamp(BaseItem item)
+ {
+ var files = item.ResolveArgs.PhysicalLocations
+ .Select(i => new DirectoryInfo(i))
+ .SelectMany(i => i.EnumerateFiles("*", SearchOption.TopDirectoryOnly))
+ .Where(i =>
+ {
+ var ext = i.Extension;
+
+ return !string.IsNullOrEmpty(ext) &&
+ BaseItem.SupportedImageExtensions.Contains(ext, StringComparer.OrdinalIgnoreCase);
+ })
+ .ToList();
+
+ return GetFileSystemStamp(files);
+ }
+ }
+}