#nullable disable #pragma warning disable CS1591 using System; using System.Collections.Generic; using MediaBrowser.Model.Entities; namespace MediaBrowser.Model.Configuration { public class TypeOptions { public static readonly ImageOption DefaultInstance = new ImageOption(); public static readonly Dictionary DefaultImageOptions = new Dictionary { { "Movie", new[] { new ImageOption { Limit = 1, MinWidth = 1280, Type = ImageType.Backdrop }, // Don't download this by default as it's rarely used. new ImageOption { Limit = 0, Type = ImageType.Art }, // Don't download this by default as it's rarely used. new ImageOption { Limit = 0, Type = ImageType.Disc }, new ImageOption { Limit = 1, Type = ImageType.Primary }, new ImageOption { Limit = 0, Type = ImageType.Banner }, new ImageOption { Limit = 1, Type = ImageType.Thumb }, new ImageOption { Limit = 1, Type = ImageType.Logo } } }, { "MusicVideo", new[] { new ImageOption { Limit = 1, MinWidth = 1280, Type = ImageType.Backdrop }, // Don't download this by default as it's rarely used. new ImageOption { Limit = 0, Type = ImageType.Art }, // Don't download this by default as it's rarely used. new ImageOption { Limit = 0, Type = ImageType.Disc }, new ImageOption { Limit = 1, Type = ImageType.Primary }, new ImageOption { Limit = 0, Type = ImageType.Banner }, new ImageOption { Limit = 1, Type = ImageType.Thumb }, new ImageOption { Limit = 1, Type = ImageType.Logo } } }, { "Series", new[] { new ImageOption { Limit = 1, MinWidth = 1280, Type = ImageType.Backdrop }, // Don't download this by default as it's rarely used. new ImageOption { Limit = 0, Type = ImageType.Art }, new ImageOption { Limit = 1, Type = ImageType.Primary }, new ImageOption { Limit = 1, Type = ImageType.Banner }, new ImageOption { Limit = 1, Type = ImageType.Thumb }, new ImageOption { Limit = 1, Type = ImageType.Logo } } }, { "MusicAlbum", new[] { new ImageOption { Limit = 0, MinWidth = 1280, Type = ImageType.Backdrop }, // Don't download this by default as it's rarely used. new ImageOption { Limit = 0, Type = ImageType.Disc } } }, { "MusicArtist", new[] { new ImageOption { Limit = 1, MinWidth = 1280, Type = ImageType.Backdrop }, // Don't download this by default // They do look great, but most artists won't have them, which means a banner view isn't really possible new ImageOption { Limit = 0, Type = ImageType.Banner }, // Don't download this by default // Generally not used new ImageOption { Limit = 0, Type = ImageType.Art }, new ImageOption { Limit = 1, Type = ImageType.Logo } } }, { "BoxSet", new[] { new ImageOption { Limit = 1, MinWidth = 1280, Type = ImageType.Backdrop }, new ImageOption { Limit = 1, Type = ImageType.Primary }, new ImageOption { Limit = 1, Type = ImageType.Thumb }, new ImageOption { Limit = 1, Type = ImageType.Logo }, // Don't download this by default as it's rarely used. new ImageOption { Limit = 0, Type = ImageType.Art }, // Don't download this by default as it's rarely used. new ImageOption { Limit = 0, Type = ImageType.Disc }, // Don't download this by default as it's rarely used. new ImageOption { Limit = 0, Type = ImageType.Banner } } }, { "Season", new[] { new ImageOption { Limit = 0, MinWidth = 1280, Type = ImageType.Backdrop }, new ImageOption { Limit = 1, Type = ImageType.Primary }, new ImageOption { Limit = 0, Type = ImageType.Banner }, new ImageOption { Limit = 0, Type = ImageType.Thumb } } }, { "Episode", new[] { new ImageOption { Limit = 0, MinWidth = 1280, Type = ImageType.Backdrop }, new ImageOption { Limit = 1, Type = ImageType.Primary } } } }; public TypeOptions() { MetadataFetchers = Array.Empty(); MetadataFetcherOrder = Array.Empty(); ImageFetchers = Array.Empty(); ImageFetcherOrder = Array.Empty(); ImageOptions = Array.Empty(); } public string Type { get; set; } public string[] MetadataFetchers { get; set; } public string[] MetadataFetcherOrder { get; set; } public string[] ImageFetchers { get; set; } public string[] ImageFetcherOrder { get; set; } public ImageOption[] ImageOptions { get; set; } public ImageOption GetImageOptions(ImageType type) { foreach (var i in ImageOptions) { if (i.Type == type) { return i; } } if (DefaultImageOptions.TryGetValue(Type, out ImageOption[] options)) { foreach (var i in options) { if (i.Type == type) { return i; } } } return DefaultInstance; } public int GetLimit(ImageType type) { return GetImageOptions(type).Limit; } public int GetMinWidth(ImageType type) { return GetImageOptions(type).MinWidth; } public bool IsEnabled(ImageType type) { return GetLimit(type) > 0; } } }