diff options
Diffstat (limited to 'MediaBrowser.Server.Implementations/FileOrganization/FileOrganizationService.cs')
| -rw-r--r-- | MediaBrowser.Server.Implementations/FileOrganization/FileOrganizationService.cs | 62 |
1 files changed, 28 insertions, 34 deletions
diff --git a/MediaBrowser.Server.Implementations/FileOrganization/FileOrganizationService.cs b/MediaBrowser.Server.Implementations/FileOrganization/FileOrganizationService.cs index 277b26415..bbd0f74e5 100644 --- a/MediaBrowser.Server.Implementations/FileOrganization/FileOrganizationService.cs +++ b/MediaBrowser.Server.Implementations/FileOrganization/FileOrganizationService.cs @@ -1,5 +1,7 @@ using MediaBrowser.Common.Extensions; +using MediaBrowser.Common.IO; using MediaBrowser.Common.ScheduledTasks; +using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.FileOrganization; using MediaBrowser.Controller.IO; using MediaBrowser.Controller.Library; @@ -21,14 +23,18 @@ namespace MediaBrowser.Server.Implementations.FileOrganization private readonly ILogger _logger; private readonly IDirectoryWatchers _directoryWatchers; private readonly ILibraryManager _libraryManager; + private readonly IServerConfigurationManager _config; + private readonly IFileSystem _fileSystem; - public FileOrganizationService(ITaskManager taskManager, IFileOrganizationRepository repo, ILogger logger, IDirectoryWatchers directoryWatchers, ILibraryManager libraryManager) + public FileOrganizationService(ITaskManager taskManager, IFileOrganizationRepository repo, ILogger logger, IDirectoryWatchers directoryWatchers, ILibraryManager libraryManager, IServerConfigurationManager config, IFileSystem fileSystem) { _taskManager = taskManager; _repo = repo; _logger = logger; _directoryWatchers = directoryWatchers; _libraryManager = libraryManager; + _config = config; + _fileSystem = fileSystem; } public void BeginProcessNewFiles() @@ -53,6 +59,11 @@ namespace MediaBrowser.Server.Implementations.FileOrganization return _repo.GetResults(query); } + public FileOrganizationResult GetResult(string id) + { + return _repo.GetResult(id); + } + public Task DeleteOriginalFile(string resultId) { var result = _repo.GetResult(resultId); @@ -79,44 +90,27 @@ namespace MediaBrowser.Server.Implementations.FileOrganization throw new ArgumentException("No target path available."); } - _logger.Info("Moving {0} to {1}", result.OriginalPath, result.TargetPath); + var organizer = new EpisodeFileOrganizer(this, _config, _fileSystem, _logger, _libraryManager, + _directoryWatchers); - _directoryWatchers.TemporarilyIgnore(result.TargetPath); - - var copy = File.Exists(result.TargetPath); + await organizer.OrganizeEpisodeFile(result.OriginalPath, _config.Configuration.TvFileOrganizationOptions, true) + .ConfigureAwait(false); - try - { - if (copy) - { - File.Copy(result.OriginalPath, result.TargetPath, true); - } - else - { - File.Move(result.OriginalPath, result.TargetPath); - } - } - finally - { - _directoryWatchers.RemoveTempIgnore(result.TargetPath); - } + await _libraryManager.ValidateMediaLibrary(new Progress<double>(), CancellationToken.None) + .ConfigureAwait(false); + } - if (copy) - { - try - { - File.Delete(result.OriginalPath); - } - catch (Exception ex) - { - _logger.ErrorException("Error deleting {0}", ex, result.OriginalPath); - } - } + public Task ClearLog() + { + return _repo.DeleteAll(); + } - result.Status = FileSortingStatus.Success; - result.StatusMessage = string.Empty; + public async Task PerformEpisodeOrganization(EpisodeFileOrganizationRequest request) + { + var organizer = new EpisodeFileOrganizer(this, _config, _fileSystem, _logger, _libraryManager, + _directoryWatchers); - await SaveResult(result, CancellationToken.None).ConfigureAwait(false); + await organizer.OrganizeWithCorrection(request, _config.Configuration.TvFileOrganizationOptions).ConfigureAwait(false); await _libraryManager.ValidateMediaLibrary(new Progress<double>(), CancellationToken.None) .ConfigureAwait(false); |
