From 7a1a3b2f6de31a419f9d909a68673803ea3cc658 Mon Sep 17 00:00:00 2001 From: TOomaAh Date: Sat, 22 Mar 2025 14:48:13 +0100 Subject: [PATCH 1/5] remove textless poster --- MediaBrowser.Providers/Manager/ProviderManager.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs index 6813cfa911..79fc6218b4 100644 --- a/MediaBrowser.Providers/Manager/ProviderManager.cs +++ b/MediaBrowser.Providers/Manager/ProviderManager.cs @@ -354,9 +354,9 @@ namespace MediaBrowser.Providers.Manager // Filter out languages that do not match the preferred languages. // // TODO: should exception case of "en" (English) eventually be removed? - result = result.Where(i => string.IsNullOrWhiteSpace(i.Language) || - string.Equals(preferredLanguage, i.Language, StringComparison.OrdinalIgnoreCase) || - string.Equals(i.Language, "en", StringComparison.OrdinalIgnoreCase)); + result = result.Where(i => i.Language is not null && + (string.Equals(preferredLanguage, i.Language, StringComparison.OrdinalIgnoreCase) || + string.Equals(i.Language, "en", StringComparison.OrdinalIgnoreCase))); } return result.OrderByLanguageDescending(preferredLanguage); From b876ff7060bb0f2aecc8a8325b7c0a2fad619d0f Mon Sep 17 00:00:00 2001 From: TOomaAh Date: Sat, 22 Mar 2025 15:21:41 +0100 Subject: [PATCH 2/5] fix image without text like backdrop --- .../Manager/ProviderManager.cs | 33 +++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs index 79fc6218b4..479673a0ce 100644 --- a/MediaBrowser.Providers/Manager/ProviderManager.cs +++ b/MediaBrowser.Providers/Manager/ProviderManager.cs @@ -354,9 +354,7 @@ namespace MediaBrowser.Providers.Manager // Filter out languages that do not match the preferred languages. // // TODO: should exception case of "en" (English) eventually be removed? - result = result.Where(i => i.Language is not null && - (string.Equals(preferredLanguage, i.Language, StringComparison.OrdinalIgnoreCase) || - string.Equals(i.Language, "en", StringComparison.OrdinalIgnoreCase))); + result = result.Where(i => IsValidImage(i, preferredLanguage)); } return result.OrderByLanguageDescending(preferredLanguage); @@ -372,6 +370,35 @@ namespace MediaBrowser.Providers.Manager } } + /// + /// Check if image need language. + /// + /// The type. + /// True if image need language or False for image without text (like backdrop). + private bool ImageNeedLanguage(ImageType type) + { + return type is ImageType.Primary or ImageType.Logo or ImageType.Thumb; + } + + /// + /// Check if image is valid. + /// + /// The image. + /// The preferred language. + /// The fallback language (default is English => en). + /// True if image is valid OR False is image is invalid. + private bool IsValidImage(RemoteImageInfo image, string preferredLanguage, string fallbackLanguage = "en") + { + if (ImageNeedLanguage(image.Type)) + { + return image.Language is not null && (string.Equals(preferredLanguage, image.Language, StringComparison.OrdinalIgnoreCase) || + string.Equals(image.Language, fallbackLanguage, StringComparison.OrdinalIgnoreCase)); + } + + return string.IsNullOrEmpty(image.Language) || string.Equals(preferredLanguage, image.Language, StringComparison.OrdinalIgnoreCase) || + string.Equals(image.Language, fallbackLanguage, StringComparison.OrdinalIgnoreCase); + } + /// public IEnumerable GetRemoteImageProviderInfo(BaseItem item) { From 72a1919ecf55c7cb5668de02d67be5e3b3aa3a02 Mon Sep 17 00:00:00 2001 From: TOomaAh Date: Sat, 22 Mar 2025 15:28:22 +0100 Subject: [PATCH 3/5] refactor language check --- .../Manager/ProviderManager.cs | 43 +++++++++++++------ 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs index 479673a0ce..6a7207992d 100644 --- a/MediaBrowser.Providers/Manager/ProviderManager.cs +++ b/MediaBrowser.Providers/Manager/ProviderManager.cs @@ -352,8 +352,6 @@ namespace MediaBrowser.Providers.Manager if (!includeAllLanguages && hasPreferredLanguage) { // Filter out languages that do not match the preferred languages. - // - // TODO: should exception case of "en" (English) eventually be removed? result = result.Where(i => IsValidImage(i, preferredLanguage)); } @@ -371,32 +369,49 @@ namespace MediaBrowser.Providers.Manager } /// - /// Check if image need language. + /// Check if image type requires language specification. /// - /// The type. - /// True if image need language or False for image without text (like backdrop). - private bool ImageNeedLanguage(ImageType type) + /// The image type. + /// True if image requires language specification, otherwise False. + private bool RequiresLanguage(ImageType type) { return type is ImageType.Primary or ImageType.Logo or ImageType.Thumb; } /// - /// Check if image is valid. + /// Check if image is valid based on language requirements. /// /// The image. /// The preferred language. - /// The fallback language (default is English => en). - /// True if image is valid OR False is image is invalid. + /// The fallback language (default is English => "en"). + /// True if image meets language requirements, otherwise False. private bool IsValidImage(RemoteImageInfo image, string preferredLanguage, string fallbackLanguage = "en") { - if (ImageNeedLanguage(image.Type)) + // TODO: should exception case of "en" (English) eventually be removed? + if (RequiresLanguage(image.Type)) { - return image.Language is not null && (string.Equals(preferredLanguage, image.Language, StringComparison.OrdinalIgnoreCase) || - string.Equals(image.Language, fallbackLanguage, StringComparison.OrdinalIgnoreCase)); + return image.Language is not null && + (MatchesLanguage(preferredLanguage, image.Language) || + MatchesLanguage(image.Language, fallbackLanguage)); } - return string.IsNullOrEmpty(image.Language) || string.Equals(preferredLanguage, image.Language, StringComparison.OrdinalIgnoreCase) || - string.Equals(image.Language, fallbackLanguage, StringComparison.OrdinalIgnoreCase); + return string.IsNullOrEmpty(image.Language) || + MatchesLanguage(preferredLanguage, image.Language) || + MatchesLanguage(image.Language, fallbackLanguage); + } + + /// + /// Compares two language strings in a case-insensitive manner. + /// + /// The language code of the image. + /// The language code to compare against. + /// + /// True if the language codes match (case-insensitive), otherwise False. + /// Returns False if either parameter is null. + /// + private bool MatchesLanguage(string imageLanguage, string targetLanguage) + { + return string.Equals(imageLanguage, targetLanguage, StringComparison.OrdinalIgnoreCase); } /// From d0eabadb39c88c94a46e632d7219541aff7f46be Mon Sep 17 00:00:00 2001 From: TOomaAh Date: Tue, 25 Mar 2025 15:45:53 +0100 Subject: [PATCH 4/5] simplify condition --- MediaBrowser.Providers/Manager/ProviderManager.cs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs index 6a7207992d..d35ad35a9b 100644 --- a/MediaBrowser.Providers/Manager/ProviderManager.cs +++ b/MediaBrowser.Providers/Manager/ProviderManager.cs @@ -388,16 +388,14 @@ namespace MediaBrowser.Providers.Manager private bool IsValidImage(RemoteImageInfo image, string preferredLanguage, string fallbackLanguage = "en") { // TODO: should exception case of "en" (English) eventually be removed? + bool matchesLanguage = MatchesLanguage(preferredLanguage, image.Language) || MatchesLanguage(image.Language, fallbackLanguage); + if (RequiresLanguage(image.Type)) { - return image.Language is not null && - (MatchesLanguage(preferredLanguage, image.Language) || - MatchesLanguage(image.Language, fallbackLanguage)); + return image.Language is not null && matchesLanguage; } - return string.IsNullOrEmpty(image.Language) || - MatchesLanguage(preferredLanguage, image.Language) || - MatchesLanguage(image.Language, fallbackLanguage); + return string.IsNullOrEmpty(image.Language) || matchesLanguage; } /// From 1e5d307f3a0caf4288a4b0586dab4e044fb929de Mon Sep 17 00:00:00 2001 From: TOomaAh Date: Tue, 25 Mar 2025 15:47:37 +0100 Subject: [PATCH 5/5] refacto language condition --- MediaBrowser.Providers/Manager/ProviderManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs index d35ad35a9b..fe68c06c3f 100644 --- a/MediaBrowser.Providers/Manager/ProviderManager.cs +++ b/MediaBrowser.Providers/Manager/ProviderManager.cs @@ -388,7 +388,7 @@ namespace MediaBrowser.Providers.Manager private bool IsValidImage(RemoteImageInfo image, string preferredLanguage, string fallbackLanguage = "en") { // TODO: should exception case of "en" (English) eventually be removed? - bool matchesLanguage = MatchesLanguage(preferredLanguage, image.Language) || MatchesLanguage(image.Language, fallbackLanguage); + bool matchesLanguage = MatchesLanguage(image.Language, preferredLanguage) || MatchesLanguage(image.Language, fallbackLanguage); if (RequiresLanguage(image.Type)) {