New: Add path mapping for partial library updates in Plex Server Notifications
(cherry picked from commit 24206ad0a3095c4bf5c860af516d8543bd6525d6)
This commit is contained in:
parent
ef0b91b45b
commit
de08d37267
|
@ -6,6 +6,7 @@ using System.Text.RegularExpressions;
|
||||||
using FluentValidation.Results;
|
using FluentValidation.Results;
|
||||||
using NLog;
|
using NLog;
|
||||||
using NzbDrone.Common.Cache;
|
using NzbDrone.Common.Cache;
|
||||||
|
using NzbDrone.Common.Disk;
|
||||||
using NzbDrone.Common.Extensions;
|
using NzbDrone.Common.Extensions;
|
||||||
using NzbDrone.Core.RootFolders;
|
using NzbDrone.Core.RootFolders;
|
||||||
using NzbDrone.Core.Tv;
|
using NzbDrone.Core.Tv;
|
||||||
|
@ -101,7 +102,17 @@ namespace NzbDrone.Core.Notifications.Plex.Server
|
||||||
{
|
{
|
||||||
foreach (var location in section.Locations)
|
foreach (var location in section.Locations)
|
||||||
{
|
{
|
||||||
if (location.Path.PathEquals(rootFolderPath))
|
var rootFolder = new OsPath(rootFolderPath);
|
||||||
|
var mappedPath = rootFolder;
|
||||||
|
|
||||||
|
if (settings.MapTo.IsNotNullOrWhiteSpace())
|
||||||
|
{
|
||||||
|
mappedPath = new OsPath(settings.MapTo) + (rootFolder - new OsPath(settings.MapFrom));
|
||||||
|
|
||||||
|
_logger.Trace("Mapping Path from {0} to {1} for partial scan", rootFolder, mappedPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (location.Path.PathEquals(mappedPath.FullPath))
|
||||||
{
|
{
|
||||||
_logger.Debug("Updating matching section location, {0}", location.Path);
|
_logger.Debug("Updating matching section location, {0}", location.Path);
|
||||||
UpdateSectionPath(seriesRelativePath, section, location, settings);
|
UpdateSectionPath(seriesRelativePath, section, location, settings);
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
using FluentValidation;
|
using FluentValidation;
|
||||||
|
using NzbDrone.Common.Extensions;
|
||||||
using NzbDrone.Core.Annotations;
|
using NzbDrone.Core.Annotations;
|
||||||
using NzbDrone.Core.ThingiProvider;
|
using NzbDrone.Core.ThingiProvider;
|
||||||
using NzbDrone.Core.Validation;
|
using NzbDrone.Core.Validation;
|
||||||
|
@ -11,6 +12,8 @@ namespace NzbDrone.Core.Notifications.Plex.Server
|
||||||
{
|
{
|
||||||
RuleFor(c => c.Host).ValidHost();
|
RuleFor(c => c.Host).ValidHost();
|
||||||
RuleFor(c => c.Port).InclusiveBetween(1, 65535);
|
RuleFor(c => c.Port).InclusiveBetween(1, 65535);
|
||||||
|
RuleFor(c => c.MapFrom).NotEmpty().Unless(c => c.MapTo.IsNullOrWhiteSpace());
|
||||||
|
RuleFor(c => c.MapTo).NotEmpty().Unless(c => c.MapFrom.IsNullOrWhiteSpace());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,6 +46,12 @@ namespace NzbDrone.Core.Notifications.Plex.Server
|
||||||
[FieldDefinition(5, Label = "Update Library", Type = FieldType.Checkbox)]
|
[FieldDefinition(5, Label = "Update Library", Type = FieldType.Checkbox)]
|
||||||
public bool UpdateLibrary { get; set; }
|
public bool UpdateLibrary { get; set; }
|
||||||
|
|
||||||
|
[FieldDefinition(6, Label = "Map Paths From", Type = FieldType.Textbox, Advanced = true, HelpText = "Sonarr path, used to modify series paths when Plex sees library path location differently from Sonarr")]
|
||||||
|
public string MapFrom { get; set; }
|
||||||
|
|
||||||
|
[FieldDefinition(7, Label = "Map Paths To", Type = FieldType.Textbox, Advanced = true, HelpText = "Plex path, used to modify series paths when Plex sees library path location differently from Sonarr")]
|
||||||
|
public string MapTo { get; set; }
|
||||||
|
|
||||||
public bool IsValid => !string.IsNullOrWhiteSpace(Host);
|
public bool IsValid => !string.IsNullOrWhiteSpace(Host);
|
||||||
|
|
||||||
public NzbDroneValidationResult Validate()
|
public NzbDroneValidationResult Validate()
|
||||||
|
|
Loading…
Reference in New Issue