|
@@ -171,14 +171,27 @@ namespace MediaBrowser.Server.Implementations.FileOrganization
|
|
|
var fileExists = File.Exists(result.TargetPath);
|
|
|
var otherDuplicatePaths = GetOtherDuplicatePaths(result.TargetPath, series, seasonNumber, episodeNumber, endingEpiosdeNumber);
|
|
|
|
|
|
- if (!overwriteExisting && (fileExists || otherDuplicatePaths.Count > 0))
|
|
|
+ if (!overwriteExisting)
|
|
|
{
|
|
|
- result.Status = FileSortingStatus.SkippedExisting;
|
|
|
- result.StatusMessage = string.Empty;
|
|
|
- result.DuplicatePaths = otherDuplicatePaths;
|
|
|
- return;
|
|
|
+ if (fileExists || otherDuplicatePaths.Count > 0)
|
|
|
+ {
|
|
|
+ result.Status = FileSortingStatus.SkippedExisting;
|
|
|
+ result.StatusMessage = string.Empty;
|
|
|
+ result.DuplicatePaths = otherDuplicatePaths;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (options.CopyOriginalFile && fileExists && IsSameEpisode(sourcePath, newPath))
|
|
|
+ {
|
|
|
+ _logger.Info("File {0} already copied to new path {1}, stopping organization", sourcePath, newPath);
|
|
|
+ result.Status = FileSortingStatus.SkippedExisting;
|
|
|
+ result.StatusMessage = string.Empty;
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
PerformFileSorting(options, result);
|
|
|
|
|
|
if (overwriteExisting)
|
|
@@ -266,7 +279,7 @@ namespace MediaBrowser.Server.Implementations.FileOrganization
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- if (copy)
|
|
|
+ if (copy || options.CopyOriginalFile)
|
|
|
{
|
|
|
File.Copy(result.OriginalPath, result.TargetPath, true);
|
|
|
}
|
|
@@ -293,7 +306,7 @@ namespace MediaBrowser.Server.Implementations.FileOrganization
|
|
|
_libraryMonitor.ReportFileSystemChangeComplete(result.TargetPath, true);
|
|
|
}
|
|
|
|
|
|
- if (copy)
|
|
|
+ if (copy && !options.CopyOriginalFile)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
@@ -439,5 +452,27 @@ namespace MediaBrowser.Server.Implementations.FileOrganization
|
|
|
.Replace("%0e", episodeNumber.ToString("00", _usCulture))
|
|
|
.Replace("%00e", episodeNumber.ToString("000", _usCulture));
|
|
|
}
|
|
|
+
|
|
|
+ private bool IsSameEpisode(string sourcePath, string newPath)
|
|
|
+ {
|
|
|
+
|
|
|
+ FileInfo sourceFileInfo = new FileInfo(sourcePath);
|
|
|
+ FileInfo destinationFileInfo = new FileInfo(newPath);
|
|
|
+
|
|
|
+ try
|
|
|
+ {
|
|
|
+ if (sourceFileInfo.Length == destinationFileInfo.Length)
|
|
|
+ {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (FileNotFoundException)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ return false;
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
}
|