diff --git a/Emby.Server.Implementations/FileOrganization/TvFolderOrganizer.cs b/Emby.Server.Implementations/FileOrganization/TvFolderOrganizer.cs index 807f1694cc..c885f03ac4 100644 --- a/Emby.Server.Implementations/FileOrganization/TvFolderOrganizer.cs +++ b/Emby.Server.Implementations/FileOrganization/TvFolderOrganizer.cs @@ -53,9 +53,29 @@ namespace Emby.Server.Implementations.FileOrganization return false; } + private bool IsValidWatchLocation(string path, List libraryFolderPaths) + { + if (IsPathAlreadyInMediaLibrary(path, libraryFolderPaths)) + { + _logger.Info("Folder {0} is not eligible for auto-organize because it is also part of an Emby library", path); + return false; + } + + return true; + } + + private bool IsPathAlreadyInMediaLibrary(string path, List libraryFolderPaths) + { + return libraryFolderPaths.Any(i => string.Equals(i, path, StringComparison.Ordinal) || _fileSystem.ContainsSubPath(i, path)); + } + public async Task Organize(AutoOrganizeOptions options, CancellationToken cancellationToken, IProgress progress) { - var watchLocations = options.TvOptions.WatchLocations.ToList(); + var libraryFolderPaths = _libraryManager.GetVirtualFolders().SelectMany(i => i.Locations).ToList(); + + var watchLocations = options.TvOptions.WatchLocations + .Where(i => IsValidWatchLocation(i, libraryFolderPaths)) + .ToList(); var eligibleFiles = watchLocations.SelectMany(GetFilesToOrganize) .OrderBy(_fileSystem.GetCreationTimeUtc)