diff options
| author | Patrick Barron <barronpm@gmail.com> | 2020-06-04 16:39:50 -0400 |
|---|---|---|
| committer | Patrick Barron <barronpm@gmail.com> | 2020-06-04 16:52:23 -0400 |
| commit | 06f9cde22f32c65b6b4d1713149de2de2be60000 (patch) | |
| tree | 9600bba80c72d259360079d965511e010be739a5 /Emby.Server.Implementations/Images/CollectionFolderImageProvider.cs | |
| parent | 585fdbad396a089e11717eb6ce52e60a07e900e9 (diff) | |
| parent | 836741f2aa6d2140051a50f746602e4b8c63a231 (diff) | |
Merge branch 'master' into userdb-efcore
# Conflicts:
# Emby.Server.Implementations/EntryPoints/ServerEventNotifier.cs
# Emby.Server.Implementations/Library/UserManager.cs
# Emby.Server.Implementations/Sorting/IsFavoriteOrLikeComparer.cs
# Emby.Server.Implementations/Sorting/IsPlayedComparer.cs
# Emby.Server.Implementations/Sorting/IsUnplayedComparer.cs
# Emby.Server.Implementations/TV/TVSeriesManager.cs
# Jellyfin.Server.Implementations/Users/DefaultAuthenticationProvider.cs
Diffstat (limited to 'Emby.Server.Implementations/Images/CollectionFolderImageProvider.cs')
| -rw-r--r-- | Emby.Server.Implementations/Images/CollectionFolderImageProvider.cs | 100 |
1 files changed, 100 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..dc8062b45 --- /dev/null +++ b/Emby.Server.Implementations/Images/CollectionFolderImageProvider.cs @@ -0,0 +1,100 @@ +#pragma warning disable CS1591 + +using System; +using System.Collections.Generic; +using System.IO; +using Emby.Server.Implementations.Images; +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); + } + } +} |
