#1189 - Auto-Organize: Fix PathTooLongException due to long EpisodeTitle

This commit is contained in:
Luke Pulverenti 2015-09-30 01:15:25 -04:00
parent 1cf65f1a2e
commit 5637142100

View File

@ -182,7 +182,7 @@ namespace MediaBrowser.Server.Implementations.FileOrganization
_logger.Info("Sorting file {0} to new path {1}", sourcePath, newPath); _logger.Info("Sorting file {0} to new path {1}", sourcePath, newPath);
result.TargetPath = 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); var otherDuplicatePaths = GetOtherDuplicatePaths(result.TargetPath, series, seasonNumber, episodeNumber, endingEpiosdeNumber);
if (!overwriteExisting) if (!overwriteExisting)
@ -272,7 +272,7 @@ namespace MediaBrowser.Server.Implementations.FileOrganization
var destination = Path.Combine(directory, filename); 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); _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 try
{ {
if (targetAlreadyExists || options.CopyOriginalFile) if (targetAlreadyExists || options.CopyOriginalFile)
{ {
_fileSystem.CopyFile(result.OriginalPath, result.TargetPath, true); _fileSystem.CopyFile(result.OriginalPath, result.TargetPath, true);
} }
else else
{ {
_fileSystem.MoveFile(result.OriginalPath, result.TargetPath); _fileSystem.MoveFile(result.OriginalPath, result.TargetPath);
} }
result.Status = FileSortingStatus.Success; result.Status = FileSortingStatus.Success;
@ -439,6 +439,17 @@ namespace MediaBrowser.Server.Implementations.FileOrganization
newPath = Path.Combine(newPath, episodeFileName); 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; return newPath;
} }