From 56371421006c72356fe4b04d50f5f57b05102b94 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 30 Sep 2015 01:15:25 -0400 Subject: [PATCH] #1189 - Auto-Organize: Fix PathTooLongException due to long EpisodeTitle --- .../FileOrganization/EpisodeFileOrganizer.cs | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/MediaBrowser.Server.Implementations/FileOrganization/EpisodeFileOrganizer.cs b/MediaBrowser.Server.Implementations/FileOrganization/EpisodeFileOrganizer.cs index aa5a525121..cdac598fda 100644 --- a/MediaBrowser.Server.Implementations/FileOrganization/EpisodeFileOrganizer.cs +++ b/MediaBrowser.Server.Implementations/FileOrganization/EpisodeFileOrganizer.cs @@ -182,7 +182,7 @@ namespace MediaBrowser.Server.Implementations.FileOrganization _logger.Info("Sorting file {0} to new path {1}", sourcePath, newPath); result.TargetPath = newPath; - var fileExists = _fileSystem.FileExists(result.TargetPath); + var fileExists = _fileSystem.FileExists(result.TargetPath); var otherDuplicatePaths = GetOtherDuplicatePaths(result.TargetPath, series, seasonNumber, episodeNumber, endingEpiosdeNumber); if (!overwriteExisting) @@ -272,7 +272,7 @@ namespace MediaBrowser.Server.Implementations.FileOrganization var destination = Path.Combine(directory, filename); - _fileSystem.MoveFile(file, destination); + _fileSystem.MoveFile(file, destination); } } } @@ -332,19 +332,19 @@ namespace MediaBrowser.Server.Implementations.FileOrganization { _libraryMonitor.ReportFileSystemChangeBeginning(result.TargetPath); - _fileSystem.CreateDirectory(Path.GetDirectoryName(result.TargetPath)); + _fileSystem.CreateDirectory(Path.GetDirectoryName(result.TargetPath)); - var targetAlreadyExists = _fileSystem.FileExists(result.TargetPath); + var targetAlreadyExists = _fileSystem.FileExists(result.TargetPath); try { if (targetAlreadyExists || options.CopyOriginalFile) { - _fileSystem.CopyFile(result.OriginalPath, result.TargetPath, true); + _fileSystem.CopyFile(result.OriginalPath, result.TargetPath, true); } else { - _fileSystem.MoveFile(result.OriginalPath, result.TargetPath); + _fileSystem.MoveFile(result.OriginalPath, result.TargetPath); } result.Status = FileSortingStatus.Success; @@ -439,6 +439,17 @@ namespace MediaBrowser.Server.Implementations.FileOrganization newPath = Path.Combine(newPath, episodeFileName); + // Try to account for windows limitations by removing the episode title + if (newPath.Length > 255) + { + var extension = Path.GetExtension(episodeFileName); + var fileName = Path.GetFileNameWithoutExtension(episodeFileName); + fileName = fileName.Replace(episode.Name, string.Empty, StringComparison.OrdinalIgnoreCase); + episodeFileName = Path.ChangeExtension(fileName, extension); + + newPath = Path.Combine(newPath, episodeFileName); + } + return newPath; }