fixes #553 - Support locking OfficialRating field
This commit is contained in:
parent
831c412ecf
commit
b54240f679
|
@ -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>
|
||||
|
|
|
@ -37,6 +37,10 @@ namespace MediaBrowser.Model.Entities
|
|||
/// <summary>
|
||||
/// The runtime
|
||||
/// </summary>
|
||||
Runtime
|
||||
Runtime,
|
||||
/// <summary>
|
||||
/// The official rating
|
||||
/// </summary>
|
||||
OfficialRating
|
||||
}
|
||||
}
|
||||
|
|
|
@ -384,7 +384,10 @@ namespace MediaBrowser.Providers.MediaInfo
|
|||
|
||||
if (!string.IsNullOrWhiteSpace(officialRating))
|
||||
{
|
||||
video.OfficialRating = officialRating;
|
||||
if (!video.LockedFields.Contains(MetadataFields.OfficialRating))
|
||||
{
|
||||
video.OfficialRating = officialRating;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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...");
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user