public virtual void Cleanup() { if (String.IsNullOrWhiteSpace(_configProvider.RecycleBin)) { logger.Info("Recycle Bin has not been configured, cannot cleanup."); return; } logger.Info("Removing items older than 7 days from the recycling bin"); foreach (var folder in _diskProvider.GetDirectories(_configProvider.RecycleBin)) { if (_diskProvider.GetLastDirectoryWrite(folder).AddDays(7) > DateTime.UtcNow) { logger.Trace("Folder hasn't expired yet, skipping: {0}", folder); continue; } _diskProvider.DeleteFolder(folder, true); } foreach (var file in _diskProvider.GetFiles(_configProvider.RecycleBin, SearchOption.TopDirectoryOnly)) { if (_diskProvider.GetLastFileWrite(file).AddDays(7) > DateTime.UtcNow) { logger.Trace("File hasn't expired yet, skipping: {0}", file); continue; } _diskProvider.DeleteFile(file); } logger.Trace("Recycling Bin has been cleaned up."); }
public virtual void ProcessVideoFile(string videoFile) { if (_diskProvider.GetLastFileWrite(videoFile).AddMinutes(2) > DateTime.UtcNow) { Logger.Trace("[{0}] is too fresh. skipping", videoFile); return; } if (_diskProvider.IsFileLocked(new FileInfo(videoFile))) { Logger.Trace("[{0}] is currently locked by another process, skipping", videoFile); return; } var seriesName = Parser.ParseSeriesName(Path.GetFileNameWithoutExtension(videoFile)); var series = _seriesProvider.FindSeries(seriesName); if (series == null) { Logger.Trace("Unknown Series on Import: {0}", videoFile); return; } if (!_diskProvider.FolderExists(series.Path)) { Logger.Warn("Series Folder doesn't exist: {0}", series.Path); return; } var size = _diskProvider.GetSize(videoFile); var freeSpace = _diskProvider.FreeDiskSpace(new DirectoryInfo(series.Path)); if (Convert.ToUInt64(size) > freeSpace) { Logger.Error("Not enough free disk space for series: {0}, {1}", series.Title, series.Path); return; } var episodeFile = _diskScanProvider.ImportFile(series, videoFile); if (episodeFile != null) { _diskScanProvider.MoveEpisodeFile(episodeFile, true); _metadataProvider.CreateForEpisodeFile(episodeFile); } }