fixes #553 - Support locking OfficialRating field

This commit is contained in:
Luke Pulverenti 2013-09-23 10:02:56 -04:00
parent 831c412ecf
commit b54240f679
6 changed files with 50 additions and 15 deletions

View File

@ -202,6 +202,18 @@ namespace MediaBrowser.Controller.Providers
return NeedsRefreshInternal(item, data);
}
/// <summary>
/// Gets a value indicating whether [enforce dont fetch metadata].
/// </summary>
/// <value><c>true</c> if [enforce dont fetch metadata]; otherwise, <c>false</c>.</value>
public virtual bool EnforceDontFetchMetadata
{
get
{
return true;
}
}
/// <summary>
/// Needses the refresh internal.
/// </summary>

View File

@ -37,6 +37,10 @@ namespace MediaBrowser.Model.Entities
/// <summary>
/// The runtime
/// </summary>
Runtime
Runtime,
/// <summary>
/// The official rating
/// </summary>
OfficialRating
}
}

View File

@ -384,7 +384,10 @@ namespace MediaBrowser.Providers.MediaInfo
if (!string.IsNullOrWhiteSpace(officialRating))
{
video.OfficialRating = officialRating;
if (!video.LockedFields.Contains(MetadataFields.OfficialRating))
{
video.OfficialRating = officialRating;
}
}
}

View File

@ -317,7 +317,7 @@ namespace MediaBrowser.Providers.Movies
var boxset = item as BoxSet;
if (boxset != null)
{
// See if any movies have a collection id already
// See if any movies have a collection id already
var collId = boxset.Children.Concat(boxset.GetLinkedChildren()).OfType<Video>()
.Select(i => i.GetProviderId(MetadataProviders.TmdbCollection))
.FirstOrDefault(i => i != null);
@ -462,7 +462,7 @@ namespace MediaBrowser.Providers.Movies
Logger.Info("MoviedbProvider: Ignoring " + item.Name + " because ID forced blank.");
return;
}
item.SetProviderId(MetadataProviders.Tmdb, id);
var mainResult = await FetchMainResult(item, id, cancellationToken).ConfigureAwait(false);
@ -586,14 +586,18 @@ namespace MediaBrowser.Providers.Movies
var ourRelease = movieData.releases.countries.FirstOrDefault(c => c.iso_3166_1.Equals(ConfigurationManager.Configuration.MetadataCountryCode, StringComparison.OrdinalIgnoreCase)) ?? new Country();
var usRelease = movieData.releases.countries.FirstOrDefault(c => c.iso_3166_1.Equals("US", StringComparison.OrdinalIgnoreCase)) ?? new Country();
var minimunRelease = movieData.releases.countries.OrderBy(c => c.release_date).FirstOrDefault() ?? new Country();
var ratingPrefix = ConfigurationManager.Configuration.MetadataCountryCode.Equals("us", StringComparison.OrdinalIgnoreCase) ? "" : ConfigurationManager.Configuration.MetadataCountryCode + "-";
movie.OfficialRating = !string.IsNullOrEmpty(ourRelease.certification)
? ratingPrefix + ourRelease.certification
: !string.IsNullOrEmpty(usRelease.certification)
? usRelease.certification
: !string.IsNullOrEmpty(minimunRelease.certification)
? minimunRelease.iso_3166_1 + "-" + minimunRelease.certification
: null;
if (!movie.LockedFields.Contains(MetadataFields.OfficialRating))
{
var ratingPrefix = ConfigurationManager.Configuration.MetadataCountryCode.Equals("us", StringComparison.OrdinalIgnoreCase) ? "" : ConfigurationManager.Configuration.MetadataCountryCode + "-";
movie.OfficialRating = !string.IsNullOrEmpty(ourRelease.certification)
? ratingPrefix + ourRelease.certification
: !string.IsNullOrEmpty(usRelease.certification)
? usRelease.certification
: !string.IsNullOrEmpty(minimunRelease.certification)
? minimunRelease.iso_3166_1 + "-" + minimunRelease.certification
: null;
}
if (ourRelease.release_date != default(DateTime))
{
@ -632,7 +636,7 @@ namespace MediaBrowser.Providers.Movies
}
//if that didn't find a rating and we are a boxset, use the one from our first child
if (movie.OfficialRating == null && movie is BoxSet)
if (movie.OfficialRating == null && movie is BoxSet && !movie.LockedFields.Contains(MetadataFields.OfficialRating))
{
var boxset = movie as BoxSet;
Logger.Info("MovieDbProvider - Using rating of first child of boxset...");

View File

@ -153,6 +153,15 @@ namespace MediaBrowser.Providers.TV
}
}
public override bool EnforceDontFetchMetadata
{
get
{
// Other providers depend on the xml downloaded here
return false;
}
}
protected override DateTime CompareDate(BaseItem item)
{
var seriesId = item.GetProviderId(MetadataProviders.Tvdb);
@ -440,7 +449,10 @@ namespace MediaBrowser.Providers.TV
if (!string.IsNullOrWhiteSpace(val))
{
item.OfficialRating = val;
if (!item.LockedFields.Contains(MetadataFields.OfficialRating))
{
item.OfficialRating = val;
}
}
break;
}

View File

@ -128,7 +128,7 @@ namespace MediaBrowser.Server.Implementations.Providers
// Put this check below the await because the needs refresh of the next tier of providers may depend on the previous ones running
// This is the case for the fan art provider which depends on the movie and tv providers having run before them
if (provider.RequiresInternet && item.DontFetchMeta)
if (provider.RequiresInternet && item.DontFetchMeta && provider.EnforceDontFetchMetadata)
{
continue;
}