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); } }