diff --git a/MediaBrowser.Controller/Library/TVUtils.cs b/MediaBrowser.Controller/Library/TVUtils.cs index 355e97db15..fd5fb6748f 100644 --- a/MediaBrowser.Controller/Library/TVUtils.cs +++ b/MediaBrowser.Controller/Library/TVUtils.cs @@ -7,26 +7,6 @@ namespace MediaBrowser.Controller.Library /// public static class TVUtils { - /// - /// The TVDB API key - /// - public static readonly string TvdbApiKey = "OG4V3YJ3FAP7FP2K"; - public static readonly string TvdbBaseUrl = "https://www.thetvdb.com/"; - /// - /// The banner URL - /// - public static readonly string BannerUrl = TvdbBaseUrl + "banners/"; - - public static string NormalizeLanguage(string language) - { - if (string.IsNullOrWhiteSpace(language)) - { - return null; - } - - // pt-br is just pt to tvdb - return language.Split('-')[0].ToLowerInvariant(); - } /// /// Gets the air days. /// diff --git a/MediaBrowser.Providers/People/TvdbPersonImageProvider.cs b/MediaBrowser.Providers/People/TvdbPersonImageProvider.cs index 1efd5005b0..7e13f7b30b 100644 --- a/MediaBrowser.Providers/People/TvdbPersonImageProvider.cs +++ b/MediaBrowser.Providers/People/TvdbPersonImageProvider.cs @@ -11,7 +11,6 @@ using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Providers; -using MediaBrowser.Providers.TV; using MediaBrowser.Providers.TV.TheTVDB; using Microsoft.Extensions.Logging; using TvDbSharper; @@ -89,7 +88,7 @@ namespace MediaBrowser.Providers.People return new RemoteImageInfo { - Url = TVUtils.BannerUrl + actor.Image, + Url = TvdbUtils.BannerUrl + actor.Image, Type = ImageType.Primary, ProviderName = Name }; diff --git a/MediaBrowser.Providers/TV/TheTVDB/TvDbClientManager.cs b/MediaBrowser.Providers/TV/TheTVDB/TvDbClientManager.cs index 66f692bd00..b0843dcdcf 100644 --- a/MediaBrowser.Providers/TV/TheTVDB/TvDbClientManager.cs +++ b/MediaBrowser.Providers/TV/TheTVDB/TvDbClientManager.cs @@ -28,7 +28,7 @@ namespace MediaBrowser.Providers.TV.TheTVDB private TvDbClientManager() { tvDbClient = new TvDbClient(); - tvDbClient.Authentication.AuthenticateAsync(TVUtils.TvdbApiKey); + tvDbClient.Authentication.AuthenticateAsync(TvdbUtils.TvdbApiKey); tokenCreatedAt = DateTime.Now; } @@ -67,7 +67,7 @@ namespace MediaBrowser.Providers.TV.TheTVDB } catch { - tvDbClient.Authentication.AuthenticateAsync(TVUtils.TvdbApiKey); + tvDbClient.Authentication.AuthenticateAsync(TvdbUtils.TvdbApiKey); } tokenCreatedAt = DateTime.Now; @@ -222,7 +222,7 @@ namespace MediaBrowser.Providers.TV.TheTVDB return cachedValue; } - tvDbClient.AcceptedLanguage = TVUtils.NormalizeLanguage(language) ?? DefaultLanguage; + tvDbClient.AcceptedLanguage = TvdbUtils.NormalizeLanguage(language) ?? DefaultLanguage; var result = await resultFactory.Invoke(); _cache.Set(key, result, TimeSpan.FromHours(1)); return result; diff --git a/MediaBrowser.Providers/TV/TheTVDB/TvdbEpisodeImageProvider.cs b/MediaBrowser.Providers/TV/TheTVDB/TvdbEpisodeImageProvider.cs index 0935b584a2..93c52955b2 100644 --- a/MediaBrowser.Providers/TV/TheTVDB/TvdbEpisodeImageProvider.cs +++ b/MediaBrowser.Providers/TV/TheTVDB/TvdbEpisodeImageProvider.cs @@ -1,13 +1,10 @@ using System; using System.Collections.Generic; -using System.Globalization; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Common.Net; -using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.TV; -using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Providers; @@ -105,7 +102,7 @@ namespace MediaBrowser.Providers.TV.TheTVDB Width = Convert.ToInt32(episode.ThumbWidth), Height = Convert.ToInt32(episode.ThumbHeight), ProviderName = Name, - Url = TVUtils.BannerUrl + episode.Filename, + Url = TvdbUtils.BannerUrl + episode.Filename, Type = ImageType.Primary }; } diff --git a/MediaBrowser.Providers/TV/TheTVDB/TvdbSeasonImageProvider.cs b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeasonImageProvider.cs index fdd7adc461..1f5458e5cb 100644 --- a/MediaBrowser.Providers/TV/TheTVDB/TvdbSeasonImageProvider.cs +++ b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeasonImageProvider.cs @@ -7,7 +7,6 @@ using System.Threading.Tasks; using MediaBrowser.Common.Net; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.TV; -using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Providers; @@ -100,10 +99,10 @@ namespace MediaBrowser.Providers.TV.TheTVDB RatingType = RatingType.Score, CommunityRating = (double?)image.RatingsInfo.Average, VoteCount = image.RatingsInfo.Count, - Url = TVUtils.BannerUrl + image.FileName, + Url = TvdbUtils.BannerUrl + image.FileName, ProviderName = ProviderName, Language = languages.FirstOrDefault(lang => lang.Id == image.LanguageId)?.Abbreviation, - ThumbnailUrl = TVUtils.BannerUrl + image.Thumbnail + ThumbnailUrl = TvdbUtils.BannerUrl + image.Thumbnail }; var resolution = image.Resolution.Split('x'); @@ -113,19 +112,7 @@ namespace MediaBrowser.Providers.TV.TheTVDB imageInfo.Height = Convert.ToInt32(resolution[1]); } - if (string.Equals(image.KeyType, "season", StringComparison.OrdinalIgnoreCase)) - { - imageInfo.Type = ImageType.Primary; - } - else if (string.Equals(image.KeyType, "seasonwide", StringComparison.OrdinalIgnoreCase)) - { - imageInfo.Type = ImageType.Banner; - } - else if (string.Equals(image.KeyType, "fanart", StringComparison.OrdinalIgnoreCase)) - { - imageInfo.Type = ImageType.Backdrop; - } - + imageInfo.Type = TvdbUtils.GetImageTypeFromKeyType(image.KeyType); list.Add(imageInfo); } var isLanguageEn = string.Equals(preferredLanguage, "en", StringComparison.OrdinalIgnoreCase); diff --git a/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesImageProvider.cs b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesImageProvider.cs index 66596f88db..a106d7cd3d 100644 --- a/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesImageProvider.cs +++ b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesImageProvider.cs @@ -1,12 +1,10 @@ using System; using System.Collections.Generic; -using System.Globalization; using System.Linq; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Common.Net; using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Providers; @@ -95,10 +93,10 @@ namespace MediaBrowser.Providers.TV.TheTVDB RatingType = RatingType.Score, CommunityRating = (double?)image.RatingsInfo.Average, VoteCount = image.RatingsInfo.Count, - Url = TVUtils.BannerUrl + image.FileName, + Url = TvdbUtils.BannerUrl + image.FileName, ProviderName = Name, Language = languages.FirstOrDefault(lang => lang.Id == image.LanguageId)?.Abbreviation, - ThumbnailUrl = TVUtils.BannerUrl + image.Thumbnail + ThumbnailUrl = TvdbUtils.BannerUrl + image.Thumbnail }; var resolution = image.Resolution.Split('x'); @@ -108,20 +106,7 @@ namespace MediaBrowser.Providers.TV.TheTVDB imageInfo.Height = Convert.ToInt32(resolution[1]); } - - if (string.Equals(image.KeyType, "poster", StringComparison.OrdinalIgnoreCase)) - { - imageInfo.Type = ImageType.Primary; - } - else if (string.Equals(image.KeyType, "series", StringComparison.OrdinalIgnoreCase)) - { - imageInfo.Type = ImageType.Banner; - } - else if (string.Equals(image.KeyType, "fanart", StringComparison.OrdinalIgnoreCase)) - { - imageInfo.Type = ImageType.Backdrop; - } - + imageInfo.Type = TvdbUtils.GetImageTypeFromKeyType(image.KeyType); list.Add(imageInfo); } var isLanguageEn = string.Equals(preferredLanguage, "en", StringComparison.OrdinalIgnoreCase); diff --git a/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs index e88093e42e..d51fbfb47b 100644 --- a/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs +++ b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs @@ -232,7 +232,7 @@ namespace MediaBrowser.Providers.TV.TheTVDB Name = tvdbTitles.FirstOrDefault(), ProductionYear = firstAired.Year, SearchProviderName = Name, - ImageUrl = TVUtils.BannerUrl + seriesSearchResult.Banner + ImageUrl = TvdbUtils.BannerUrl + seriesSearchResult.Banner }; try @@ -383,7 +383,7 @@ namespace MediaBrowser.Providers.TV.TheTVDB Type = PersonType.Actor, Name = (actor.Name ?? string.Empty).Trim(), Role = actor.Role, - ImageUrl = TVUtils.BannerUrl + actor.Image, + ImageUrl = TvdbUtils.BannerUrl + actor.Image, SortOrder = actor.SortOrder }; diff --git a/MediaBrowser.Providers/TV/TheTVDB/TvdbUtils.cs b/MediaBrowser.Providers/TV/TheTVDB/TvdbUtils.cs new file mode 100644 index 0000000000..d253b76a46 --- /dev/null +++ b/MediaBrowser.Providers/TV/TheTVDB/TvdbUtils.cs @@ -0,0 +1,47 @@ +using System; +using System.ComponentModel; +using MediaBrowser.Model.Entities; +using TvDbSharper.Dto; + +namespace MediaBrowser.Providers.TV.TheTVDB +{ + /// + /// Class TVUtils + /// + public static class TvdbUtils + { + /// + /// The TVDB API key + /// + public static readonly string TvdbApiKey = "OG4V3YJ3FAP7FP2K"; + public static readonly string TvdbBaseUrl = "https://www.thetvdb.com/"; + /// + /// The banner URL + /// + public static readonly string BannerUrl = TvdbBaseUrl + "banners/"; + + public static ImageType GetImageTypeFromKeyType(string keyType) + { + switch (keyType.ToLowerInvariant()) + { + case "poster": + case "season": return ImageType.Primary; + case "series": + case "seasonwide": return ImageType.Banner; + case "fanart": return ImageType.Backdrop; + default: throw new ArgumentException($"Invalid or unknown keytype: {keyType}", nameof(keyType)); + } + } + + public static string NormalizeLanguage(string language) + { + if (string.IsNullOrWhiteSpace(language)) + { + return null; + } + + // pt-br is just pt to tvdb + return language.Split('-')[0].ToLowerInvariant(); + } + } +}