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();
+ }
+ }
+}