Wired-up drop folder move

This commit is contained in:
kay.one 2011-06-20 22:44:01 -07:00
commit 63adb6b566
10 changed files with 429 additions and 304 deletions

View file

@ -13,7 +13,7 @@ namespace NzbDrone.Core.Providers
public class DiskScanProvider
{
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
private static readonly string[] MediaExtentions = new[] {".mkv", ".avi", ".wmv", ".mp4"};
private static readonly string[] MediaExtentions = new[] { ".mkv", ".avi", ".wmv", ".mp4" };
private readonly IDatabase _database;
private readonly DiskProvider _diskProvider;
private readonly EpisodeProvider _episodeProvider;
@ -60,19 +60,19 @@ namespace NzbDrone.Core.Providers
}
var mediaFileList = GetVideoFiles(path);
var fileList = new List<EpisodeFile>();
var importedFiles = new List<EpisodeFile>();
foreach (var filePath in mediaFileList)
{
var file = ImportFile(series, filePath);
if (file != null)
fileList.Add(file);
importedFiles.Add(file);
}
series.LastDiskSync = DateTime.Now;
_seriesProvider.UpdateSeries(series);
return fileList;
return importedFiles;
}
@ -88,7 +88,7 @@ namespace NzbDrone.Core.Providers
long size = _diskProvider.GetSize(filePath);
//If Size is less than 50MB and contains sample. Check for Size to ensure its not an episode with sample in the title
//If Size is less than 40MB and contains sample. Check for Size to ensure its not an episode with sample in the title
if (size < 40000000 && filePath.ToLower().Contains("sample"))
{
Logger.Trace("[{0}] appears to be a sample. skipping.", filePath);
@ -141,6 +141,13 @@ namespace NzbDrone.Core.Providers
if (episodes.Count <= 0)
return null;
if (episodes.Any(e => e.EpisodeFile != null && e.EpisodeFile.QualityWrapper > parseResult.Quality))
{
Logger.Info("File with better quality is already attached. skipping {0}", filePath);
return null;
}
var episodeFile = new EpisodeFile();
episodeFile.DateAdded = DateTime.Now;
episodeFile.SeriesId = series.SeriesId;
@ -172,20 +179,18 @@ namespace NzbDrone.Core.Providers
throw new ArgumentNullException("episodeFile");
var series = _seriesProvider.GetSeries(episodeFile.SeriesId);
string ext = _diskProvider.GetExtension(episodeFile.Path);
var episodes = _episodeProvider.GetEpisodesByFileId(episodeFile.EpisodeFileId);
string newFileName = _mediaFileProvider.GetNewFilename(episodes, series.Title, episodeFile.Quality);
var newFile = _mediaFileProvider.CalculateFilePath(series, episodes.First().SeasonNumber, newFileName, ext);
var newFile = _mediaFileProvider.CalculateFilePath(series, episodes.First().SeasonNumber, newFileName, Path.GetExtension(episodeFile.Path));
//Do the rename
Logger.Trace("Attempting to rename {0} to {1}", episodeFile.Path, newFile.FullName);
_diskProvider.RenameFile(episodeFile.Path, newFile.FullName);
//Update the filename in the DB
episodeFile.Path = newFile.FullName;
_mediaFileProvider.Update(episodeFile);
return true;
}