aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-09-23 10:02:56 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-09-23 10:02:56 -0400
commitb54240f6798d463d30b1465e376cea748f2d8655 (patch)
tree075443bacda8e85da4bef805888564b5c12133c6
parent831c412ecf8ad5e259f1293ed4655b3a1b2997db (diff)
fixes #553 - Support locking OfficialRating field
-rw-r--r--MediaBrowser.Controller/Providers/BaseMetadataProvider.cs12
-rw-r--r--MediaBrowser.Model/Entities/MetadataFields.cs6
-rw-r--r--MediaBrowser.Providers/MediaInfo/FFProbeVideoInfoProvider.cs5
-rw-r--r--MediaBrowser.Providers/Movies/MovieDbProvider.cs26
-rw-r--r--MediaBrowser.Providers/TV/RemoteSeriesProvider.cs14
-rw-r--r--MediaBrowser.Server.Implementations/Providers/ProviderManager.cs2
6 files changed, 50 insertions, 15 deletions
diff --git a/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs b/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs
index 39c999e82..a8dc8788f 100644
--- a/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs
+++ b/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs
@@ -203,6 +203,18 @@ namespace MediaBrowser.Controller.Providers
}
/// <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>
/// <param name="item">The item.</param>
diff --git a/MediaBrowser.Model/Entities/MetadataFields.cs b/MediaBrowser.Model/Entities/MetadataFields.cs
index a432e1124..85f2da31e 100644
--- a/MediaBrowser.Model/Entities/MetadataFields.cs
+++ b/MediaBrowser.Model/Entities/MetadataFields.cs
@@ -37,6 +37,10 @@ namespace MediaBrowser.Model.Entities
/// <summary>
/// The runtime
/// </summary>
- Runtime
+ Runtime,
+ /// <summary>
+ /// The official rating
+ /// </summary>
+ OfficialRating
}
}
diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfoProvider.cs b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfoProvider.cs
index 59c3d75e5..690c9b3ff 100644
--- a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfoProvider.cs
+++ b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfoProvider.cs
@@ -384,7 +384,10 @@ namespace MediaBrowser.Providers.MediaInfo
if (!string.IsNullOrWhiteSpace(officialRating))
{
- video.OfficialRating = officialRating;
+ if (!video.LockedFields.Contains(MetadataFields.OfficialRating))
+ {
+ video.OfficialRating = officialRating;
+ }
}
}
diff --git a/MediaBrowser.Providers/Movies/MovieDbProvider.cs b/MediaBrowser.Providers/Movies/MovieDbProvider.cs
index 751712c71..474100855 100644
--- a/MediaBrowser.Providers/Movies/MovieDbProvider.cs
+++ b/MediaBrowser.Providers/Movies/MovieDbProvider.cs
@@ -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...");
diff --git a/MediaBrowser.Providers/TV/RemoteSeriesProvider.cs b/MediaBrowser.Providers/TV/RemoteSeriesProvider.cs
index 99e160c05..a250c9060 100644
--- a/MediaBrowser.Providers/TV/RemoteSeriesProvider.cs
+++ b/MediaBrowser.Providers/TV/RemoteSeriesProvider.cs
@@ -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;
}
diff --git a/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs b/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs
index 927631144..7d5a581d5 100644
--- a/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs
+++ b/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs
@@ -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;
}