don't save metadata when video content type is unset
This commit is contained in:
parent
36295aa833
commit
e27040f61b
|
@ -1577,6 +1577,11 @@ namespace MediaBrowser.Controller.Entities
|
||||||
|
|
||||||
foreach (var newImage in images)
|
foreach (var newImage in images)
|
||||||
{
|
{
|
||||||
|
if (newImage == null)
|
||||||
|
{
|
||||||
|
throw new ArgumentException("null image found in list");
|
||||||
|
}
|
||||||
|
|
||||||
var existing = existingImages
|
var existing = existingImages
|
||||||
.FirstOrDefault(i => string.Equals(i.Path, newImage.FullName, StringComparison.OrdinalIgnoreCase));
|
.FirstOrDefault(i => string.Equals(i.Path, newImage.FullName, StringComparison.OrdinalIgnoreCase));
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
using MediaBrowser.Controller.Providers;
|
using MediaBrowser.Controller.Providers;
|
||||||
using MediaBrowser.Model.Configuration;
|
using MediaBrowser.Model.Configuration;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
|
using MediaBrowser.Model.Users;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
@ -8,7 +9,6 @@ using System.Linq;
|
||||||
using System.Runtime.Serialization;
|
using System.Runtime.Serialization;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using MediaBrowser.Model.Users;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities.Movies
|
namespace MediaBrowser.Controller.Entities.Movies
|
||||||
{
|
{
|
||||||
|
|
|
@ -19,11 +19,13 @@ namespace MediaBrowser.LocalMetadata.Savers
|
||||||
{
|
{
|
||||||
private readonly IItemRepository _itemRepository;
|
private readonly IItemRepository _itemRepository;
|
||||||
private readonly IServerConfigurationManager _config;
|
private readonly IServerConfigurationManager _config;
|
||||||
|
private readonly ILibraryManager _libraryManager;
|
||||||
|
|
||||||
public MovieXmlSaver(IItemRepository itemRepository, IServerConfigurationManager config)
|
public MovieXmlSaver(IItemRepository itemRepository, IServerConfigurationManager config, ILibraryManager libraryManager)
|
||||||
{
|
{
|
||||||
_itemRepository = itemRepository;
|
_itemRepository = itemRepository;
|
||||||
_config = config;
|
_config = config;
|
||||||
|
_libraryManager = libraryManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Name
|
public string Name
|
||||||
|
@ -52,6 +54,15 @@ namespace MediaBrowser.LocalMetadata.Savers
|
||||||
// Check parent for null to avoid running this against things like video backdrops
|
// Check parent for null to avoid running this against things like video backdrops
|
||||||
if (video != null && !(item is Episode) && !video.IsOwnedItem)
|
if (video != null && !(item is Episode) && !video.IsOwnedItem)
|
||||||
{
|
{
|
||||||
|
// If it's a plain video, skip if content type is unset (unless editing)
|
||||||
|
if (video.GetType() == typeof(Video))
|
||||||
|
{
|
||||||
|
if (updateType < ItemUpdateType.MetadataEdit && string.IsNullOrEmpty(_libraryManager.GetContentType(video)))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return updateType >= ItemUpdateType.MetadataDownload;
|
return updateType >= ItemUpdateType.MetadataDownload;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,12 @@ namespace MediaBrowser.Model.Configuration
|
||||||
/// <value><c>true</c> if [enable internet providers]; otherwise, <c>false</c>.</value>
|
/// <value><c>true</c> if [enable internet providers]; otherwise, <c>false</c>.</value>
|
||||||
public bool EnableInternetProviders { get; set; }
|
public bool EnableInternetProviders { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets a value indicating whether this instance is port authorized.
|
||||||
|
/// </summary>
|
||||||
|
/// <value><c>true</c> if this instance is port authorized; otherwise, <c>false</c>.</value>
|
||||||
|
public bool IsPortAuthorized { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the item by name path.
|
/// Gets or sets the item by name path.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
using System.Net;
|
using MediaBrowser.Common.Extensions;
|
||||||
using System.Text;
|
|
||||||
using MediaBrowser.Common.Extensions;
|
|
||||||
using MediaBrowser.Common.IO;
|
using MediaBrowser.Common.IO;
|
||||||
using MediaBrowser.Common.Net;
|
using MediaBrowser.Common.Net;
|
||||||
using MediaBrowser.Controller.Channels;
|
using MediaBrowser.Controller.Channels;
|
||||||
|
@ -10,7 +8,6 @@ using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Controller.Library;
|
using MediaBrowser.Controller.Library;
|
||||||
using MediaBrowser.Controller.Localization;
|
using MediaBrowser.Controller.Localization;
|
||||||
using MediaBrowser.Controller.Providers;
|
using MediaBrowser.Controller.Providers;
|
||||||
using MediaBrowser.Controller.Resolvers;
|
|
||||||
using MediaBrowser.Model.Channels;
|
using MediaBrowser.Model.Channels;
|
||||||
using MediaBrowser.Model.Dto;
|
using MediaBrowser.Model.Dto;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
|
@ -24,9 +21,10 @@ using System.Collections.Concurrent;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Net;
|
||||||
|
using System.Text;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using MediaBrowser.Server.Implementations.Library;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Server.Implementations.Channels
|
namespace MediaBrowser.Server.Implementations.Channels
|
||||||
{
|
{
|
||||||
|
@ -1293,16 +1291,16 @@ namespace MediaBrowser.Server.Implementations.Channels
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task RefreshIfNeeded(BaseItem program, CancellationToken cancellationToken)
|
private readonly Task _cachedTask = Task.FromResult(true);
|
||||||
|
private Task RefreshIfNeeded(BaseItem program, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
if (_refreshedItems.ContainsKey(program.Id))
|
if (!_refreshedItems.ContainsKey(program.Id))
|
||||||
{
|
{
|
||||||
return;
|
_refreshedItems.TryAdd(program.Id, true);
|
||||||
|
return program.RefreshMetadata(cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
await program.RefreshMetadata(cancellationToken).ConfigureAwait(false);
|
return _cachedTask;
|
||||||
|
|
||||||
_refreshedItems.TryAdd(program.Id, true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal IChannel GetChannelProvider(Channel channel)
|
internal IChannel GetChannelProvider(Channel channel)
|
||||||
|
|
|
@ -309,16 +309,16 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||||
return Task.FromResult(true);
|
return Task.FromResult(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task RefreshIfNeeded(LiveTvProgram program, CancellationToken cancellationToken)
|
private readonly Task _cachedTask = Task.FromResult(true);
|
||||||
|
private Task RefreshIfNeeded(LiveTvProgram program, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
if (_refreshedPrograms.ContainsKey(program.Id))
|
if (!_refreshedPrograms.ContainsKey(program.Id))
|
||||||
{
|
{
|
||||||
return;
|
_refreshedPrograms.TryAdd(program.Id, true);
|
||||||
|
return program.RefreshMetadata(cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
_refreshedPrograms.TryAdd(program.Id, true);
|
return _cachedTask;
|
||||||
|
|
||||||
await program.RefreshMetadata(cancellationToken).ConfigureAwait(false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<ILiveTvRecording> GetInternalRecording(string id, CancellationToken cancellationToken)
|
public async Task<ILiveTvRecording> GetInternalRecording(string id, CancellationToken cancellationToken)
|
||||||
|
|
|
@ -294,7 +294,7 @@
|
||||||
"LabelNewProgram": "NEW",
|
"LabelNewProgram": "NEW",
|
||||||
"LabelPremiereProgram": "PREMIERE",
|
"LabelPremiereProgram": "PREMIERE",
|
||||||
"LabelHDProgram": "HD",
|
"LabelHDProgram": "HD",
|
||||||
"HeaderChangeFolderType": "Change Folder Type",
|
"HeaderChangeFolderType": "Change Content Type",
|
||||||
"HeaderChangeFolderTypeHelp": "To change the type, please remove and rebuild the folder with the new type.",
|
"HeaderChangeFolderTypeHelp": "To change the type, please remove and rebuild the folder with the new type.",
|
||||||
"HeaderAlert": "Alert",
|
"HeaderAlert": "Alert",
|
||||||
"MessagePleaseRestart": "Please restart to finish updating.",
|
"MessagePleaseRestart": "Please restart to finish updating.",
|
||||||
|
@ -627,7 +627,7 @@
|
||||||
"MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
|
"MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
|
||||||
"MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
|
"MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
|
||||||
"HeaderConnectionFailure": "Connection Failure",
|
"HeaderConnectionFailure": "Connection Failure",
|
||||||
"MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please try again later.",
|
"MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.",
|
||||||
"ButtonSelectServer": "Select server",
|
"ButtonSelectServer": "Select server",
|
||||||
"MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.",
|
"MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.",
|
||||||
"MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",
|
"MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",
|
||||||
|
|
|
@ -241,10 +241,12 @@
|
||||||
"VisitMediaBrowserWebsite": "Visit the Media Browser Web Site",
|
"VisitMediaBrowserWebsite": "Visit the Media Browser Web Site",
|
||||||
"VisitMediaBrowserWebsiteLong": "Visit the Media Browser Web site to catch the latest news and keep up with the developer blog.",
|
"VisitMediaBrowserWebsiteLong": "Visit the Media Browser Web site to catch the latest news and keep up with the developer blog.",
|
||||||
"OptionHideUser": "Hide this user from login screens",
|
"OptionHideUser": "Hide this user from login screens",
|
||||||
|
"OptionHideUserFromLoginHelp": "Useful for private or hidden administrator accounts. The user will need to sign in manually by entering their username and password.",
|
||||||
"OptionDisableUser": "Disable this user",
|
"OptionDisableUser": "Disable this user",
|
||||||
"OptionDisableUserHelp": "If disabled the server will not allow any connections from this user. Existing connections will be abruptly terminated.",
|
"OptionDisableUserHelp": "If disabled the server will not allow any connections from this user. Existing connections will be abruptly terminated.",
|
||||||
"HeaderAdvancedControl": "Advanced Control",
|
"HeaderAdvancedControl": "Advanced Control",
|
||||||
"LabelName": "Name:",
|
"LabelName": "Name:",
|
||||||
|
"ButtonHelp": "Help",
|
||||||
"OptionAllowUserToManageServer": "Allow this user to manage the server",
|
"OptionAllowUserToManageServer": "Allow this user to manage the server",
|
||||||
"HeaderFeatureAccess": "Feature Access",
|
"HeaderFeatureAccess": "Feature Access",
|
||||||
"OptionAllowMediaPlayback": "Allow media playback",
|
"OptionAllowMediaPlayback": "Allow media playback",
|
||||||
|
|
|
@ -750,7 +750,14 @@ namespace MediaBrowser.Server.Startup.Common
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected override void FindParts()
|
protected override void FindParts()
|
||||||
{
|
{
|
||||||
if (IsFirstRun)
|
// TODO: Remove after next release
|
||||||
|
if (!IsFirstRun && !ServerConfigurationManager.Configuration.IsPortAuthorized)
|
||||||
|
{
|
||||||
|
ServerConfigurationManager.Configuration.IsPortAuthorized = true;
|
||||||
|
ConfigurationManager.SaveConfiguration();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ServerConfigurationManager.Configuration.IsPortAuthorized)
|
||||||
{
|
{
|
||||||
RegisterServerWithAdministratorAccess();
|
RegisterServerWithAdministratorAccess();
|
||||||
}
|
}
|
||||||
|
@ -824,6 +831,9 @@ namespace MediaBrowser.Server.Startup.Common
|
||||||
|
|
||||||
if (!HttpServer.UrlPrefixes.SequenceEqual(HttpServerUrlPrefixes, StringComparer.OrdinalIgnoreCase))
|
if (!HttpServer.UrlPrefixes.SequenceEqual(HttpServerUrlPrefixes, StringComparer.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
|
ServerConfigurationManager.Configuration.IsPortAuthorized = false;
|
||||||
|
ServerConfigurationManager.SaveConfiguration();
|
||||||
|
|
||||||
NotifyPendingRestart();
|
NotifyPendingRestart();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,7 +36,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return item is MusicAlbum && updateType >= ItemUpdateType.ImageUpdate;
|
return item is MusicAlbum && updateType >= MinimumUpdateType;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void WriteCustomElements(IHasMetadata item, XmlWriter writer)
|
protected override void WriteCustomElements(IHasMetadata item, XmlWriter writer)
|
||||||
|
|
|
@ -36,7 +36,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return item is MusicArtist && updateType >= ItemUpdateType.ImageUpdate;
|
return item is MusicArtist && updateType >= MinimumUpdateType;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void WriteCustomElements(IHasMetadata item, XmlWriter writer)
|
protected override void WriteCustomElements(IHasMetadata item, XmlWriter writer)
|
||||||
|
|
|
@ -119,6 +119,19 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||||
protected IUserDataManager UserDataManager { get; private set; }
|
protected IUserDataManager UserDataManager { get; private set; }
|
||||||
protected ILogger Logger { get; private set; }
|
protected ILogger Logger { get; private set; }
|
||||||
|
|
||||||
|
protected ItemUpdateType MinimumUpdateType
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (ConfigurationManager.GetNfoConfiguration().SaveImagePathsInNfo)
|
||||||
|
{
|
||||||
|
return ItemUpdateType.ImageUpdate;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ItemUpdateType.MetadataDownload;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public string Name
|
public string Name
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
|
|
@ -35,7 +35,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return item is Episode && updateType >= ItemUpdateType.ImageUpdate;
|
return item is Episode && updateType >= MinimumUpdateType;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void WriteCustomElements(IHasMetadata item, XmlWriter writer)
|
protected override void WriteCustomElements(IHasMetadata item, XmlWriter writer)
|
||||||
|
|
|
@ -55,7 +55,15 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||||
// Check parent for null to avoid running this against things like video backdrops
|
// Check parent for null to avoid running this against things like video backdrops
|
||||||
if (video != null && !(item is Episode) && !video.IsOwnedItem)
|
if (video != null && !(item is Episode) && !video.IsOwnedItem)
|
||||||
{
|
{
|
||||||
return updateType >= ItemUpdateType.ImageUpdate;
|
// If it's a plain video, skip if content type is unset (unless editing)
|
||||||
|
if (video.GetType() == typeof (Video))
|
||||||
|
{
|
||||||
|
if (updateType < ItemUpdateType.MetadataEdit && string.IsNullOrEmpty(LibraryManager.GetContentType(video)))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return updateType >= MinimumUpdateType;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -95,8 +103,6 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static readonly CultureInfo UsCulture = new CultureInfo("en-US");
|
|
||||||
|
|
||||||
protected override List<string> GetTagsUsed()
|
protected override List<string> GetTagsUsed()
|
||||||
{
|
{
|
||||||
var list = new List<string>
|
var list = new List<string>
|
||||||
|
|
|
@ -39,7 +39,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return updateType >= ItemUpdateType.ImageUpdate || (updateType >= ItemUpdateType.MetadataImport && File.Exists(GetSavePath(item)));
|
return updateType >= MinimumUpdateType || (updateType >= ItemUpdateType.MetadataImport && File.Exists(GetSavePath(item)));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void WriteCustomElements(IHasMetadata item, XmlWriter writer)
|
protected override void WriteCustomElements(IHasMetadata item, XmlWriter writer)
|
||||||
|
|
|
@ -35,7 +35,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return item is Series && updateType >= ItemUpdateType.ImageUpdate;
|
return item is Series && updateType >= MinimumUpdateType;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void WriteCustomElements(IHasMetadata item, XmlWriter writer)
|
protected override void WriteCustomElements(IHasMetadata item, XmlWriter writer)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user