aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations/Images/CollectionFolderImageProvider.cs
diff options
context:
space:
mode:
authorcrobibero <cody@robibe.ro>2020-09-11 15:53:04 -0600
committercrobibero <cody@robibe.ro>2020-09-11 15:53:04 -0600
commitf13b87afa3e81e7fa2710caec58a7d6cb20f7635 (patch)
tree0f269ac5baa27b334c5377d9dec4010aedf25183 /Emby.Server.Implementations/Images/CollectionFolderImageProvider.cs
parent2363ad544979adf32207fa927f106fadb784f1fb (diff)
parent6bf0acb854683377bebad3ca27de17706519c420 (diff)
Merge remote-tracking branch 'upstream/master' into api-upload-subtitle
Diffstat (limited to 'Emby.Server.Implementations/Images/CollectionFolderImageProvider.cs')
-rw-r--r--Emby.Server.Implementations/Images/CollectionFolderImageProvider.cs99
1 files changed, 99 insertions, 0 deletions
diff --git a/Emby.Server.Implementations/Images/CollectionFolderImageProvider.cs b/Emby.Server.Implementations/Images/CollectionFolderImageProvider.cs
new file mode 100644
index 000000000..161b4c452
--- /dev/null
+++ b/Emby.Server.Implementations/Images/CollectionFolderImageProvider.cs
@@ -0,0 +1,99 @@
+#pragma warning disable CS1591
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using Jellyfin.Data.Enums;
+using MediaBrowser.Common.Configuration;
+using MediaBrowser.Controller.Drawing;
+using MediaBrowser.Controller.Dto;
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Providers;
+using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.IO;
+using MediaBrowser.Model.Querying;
+
+namespace Emby.Server.Implementations.Images
+{
+ public class CollectionFolderImageProvider : BaseDynamicImageProvider<CollectionFolder>
+ {
+ public CollectionFolderImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths, IImageProcessor imageProcessor) : base(fileSystem, providerManager, applicationPaths, imageProcessor)
+ {
+ }
+
+ protected override IReadOnlyList<BaseItem> GetItemsWithImages(BaseItem item)
+ {
+ var view = (CollectionFolder)item;
+ var viewType = view.CollectionType;
+
+ string[] includeItemTypes;
+
+ if (string.Equals(viewType, CollectionType.Movies))
+ {
+ includeItemTypes = new string[] { "Movie" };
+ }
+ else if (string.Equals(viewType, CollectionType.TvShows))
+ {
+ includeItemTypes = new string[] { "Series" };
+ }
+ else if (string.Equals(viewType, CollectionType.Music))
+ {
+ includeItemTypes = new string[] { "MusicAlbum" };
+ }
+ else if (string.Equals(viewType, CollectionType.Books))
+ {
+ includeItemTypes = new string[] { "Book", "AudioBook" };
+ }
+ else if (string.Equals(viewType, CollectionType.BoxSets))
+ {
+ includeItemTypes = new string[] { "BoxSet" };
+ }
+ else if (string.Equals(viewType, CollectionType.HomeVideos) || string.Equals(viewType, CollectionType.Photos))
+ {
+ includeItemTypes = new string[] { "Video", "Photo" };
+ }
+ else
+ {
+ includeItemTypes = new string[] { "Video", "Audio", "Photo", "Movie", "Series" };
+ }
+
+ var recursive = !string.Equals(CollectionType.Playlists, viewType, StringComparison.OrdinalIgnoreCase);
+
+ return view.GetItemList(new InternalItemsQuery
+ {
+ CollapseBoxSetItems = false,
+ Recursive = recursive,
+ DtoOptions = new DtoOptions(false),
+ ImageTypes = new ImageType[] { ImageType.Primary },
+ Limit = 8,
+ OrderBy = new ValueTuple<string, SortOrder>[]
+ {
+ new ValueTuple<string, SortOrder>(ItemSortBy.Random, SortOrder.Ascending)
+ },
+ IncludeItemTypes = includeItemTypes
+ });
+ }
+
+ protected override bool Supports(BaseItem item)
+ {
+ return item is CollectionFolder;
+ }
+
+ protected override string CreateImage(BaseItem item, IReadOnlyCollection<BaseItem> itemsWithImages, string outputPathWithoutExtension, ImageType imageType, int imageIndex)
+ {
+ var outputPath = Path.ChangeExtension(outputPathWithoutExtension, ".png");
+
+ if (imageType == ImageType.Primary)
+ {
+ if (itemsWithImages.Count == 0)
+ {
+ return null;
+ }
+
+ return CreateThumbCollage(item, itemsWithImages, outputPath, 960, 540);
+ }
+
+ return base.CreateImage(item, itemsWithImages, outputPath, imageType, imageIndex);
+ }
+ }
+}