fixes #540 - Get tv genres from Imdb via Omdb

This commit is contained in:
Luke Pulverenti 2013-09-14 17:58:51 -04:00
parent 17d22c0130
commit 333f1ea6a4

View file

@ -1,4 +1,5 @@
using MediaBrowser.Common.Net; using System.Linq;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.Movies;
@ -45,7 +46,7 @@ namespace MediaBrowser.Providers.Movies
{ {
get get
{ {
return "6"; return "8";
} }
} }
@ -105,7 +106,7 @@ namespace MediaBrowser.Providers.Movies
} }
protected readonly CultureInfo UsCulture = new CultureInfo("en-US"); protected readonly CultureInfo UsCulture = new CultureInfo("en-US");
public override async Task<bool> FetchAsync(BaseItem item, bool force, CancellationToken cancellationToken) public override async Task<bool> FetchAsync(BaseItem item, bool force, CancellationToken cancellationToken)
{ {
BaseProviderInfo data; BaseProviderInfo data;
@ -173,14 +174,37 @@ namespace MediaBrowser.Providers.Movies
{ {
item.CommunityRating = imdbRating; item.CommunityRating = imdbRating;
} }
ParseAdditionalMetadata(item, result);
} }
data.LastRefreshStatus = ProviderRefreshStatus.Success; data.LastRefreshStatus = ProviderRefreshStatus.Success;
SetLastRefreshed(item, DateTime.UtcNow); SetLastRefreshed(item, DateTime.UtcNow);
return true; 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 protected class RootObject
{ {