aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-09-14 17:58:51 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-09-14 17:58:51 -0400
commit333f1ea6a4744b304a5c0991b4d4c3796c97ac16 (patch)
treeb4e923492377daa30454fb9370158275e27eefd6
parent17d22c013035fec3144e54b3b4fbcb4a988d7b77 (diff)
fixes #540 - Get tv genres from Imdb via Omdb
-rw-r--r--MediaBrowser.Providers/Movies/OpenMovieDatabaseProvider.cs32
1 files changed, 28 insertions, 4 deletions
diff --git a/MediaBrowser.Providers/Movies/OpenMovieDatabaseProvider.cs b/MediaBrowser.Providers/Movies/OpenMovieDatabaseProvider.cs
index b41b74ee76..3e01ad5be2 100644
--- a/MediaBrowser.Providers/Movies/OpenMovieDatabaseProvider.cs
+++ b/MediaBrowser.Providers/Movies/OpenMovieDatabaseProvider.cs
@@ -1,4 +1,5 @@
-using MediaBrowser.Common.Net;
+using System.Linq;
+using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Movies;
@@ -45,7 +46,7 @@ namespace MediaBrowser.Providers.Movies
{
get
{
- return "6";
+ return "8";
}
}
@@ -105,7 +106,7 @@ namespace MediaBrowser.Providers.Movies
}
protected readonly CultureInfo UsCulture = new CultureInfo("en-US");
-
+
public override async Task<bool> FetchAsync(BaseItem item, bool force, CancellationToken cancellationToken)
{
BaseProviderInfo data;
@@ -173,14 +174,37 @@ namespace MediaBrowser.Providers.Movies
{
item.CommunityRating = imdbRating;
}
+
+ ParseAdditionalMetadata(item, result);
}
-
+
data.LastRefreshStatus = ProviderRefreshStatus.Success;
SetLastRefreshed(item, DateTime.UtcNow);
return true;
}
+ private void ParseAdditionalMetadata(BaseItem item, RootObject result)
+ {
+ // Grab series genres because imdb data is better than tvdb. Leave movies alone
+ // But only do it if english is the preferred language because this data will not be localized
+ if (!item.LockedFields.Contains(MetadataFields.Genres) &&
+ item is Series &&
+ !string.IsNullOrWhiteSpace(result.Genre) &&
+ !string.Equals(result.Genre, "n/a", StringComparison.OrdinalIgnoreCase)
+ && string.Equals(ConfigurationManager.Configuration.PreferredMetadataLanguage, "en"))
+ {
+ item.Genres.Clear();
+
+ foreach (var genre in result.Genre
+ .Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
+ .Select(i => i.Trim())
+ .Where(i => !string.IsNullOrWhiteSpace(i)))
+ {
+ item.AddGenre(genre);
+ }
+ }
+ }
protected class RootObject
{