@ -232,52 +232,67 @@ namespace NzbDrone.Core.Providers
foreach ( var file in files )
{
//Parse the filename
var parseResult = Parser . ParseEpisodeInfo ( Path . GetFileName ( file ) ) ;
parseResult . Series = series ;
parseResult . Episodes = _episodeProvider . GetEpisodes ( parseResult ) ;
if ( parseResult . Episodes . Count = = 0 )
try
{
Logger . Error ( "File '{0}' contains invalid episode information, skipping import" , file ) ;
continue ;
}
var ext = _diskProvider . GetExtension ( file ) ;
var filename = GetNewFilename ( parseResult . Episodes , series . Title , parseResult . Quality . QualityType ) + ext ;
var folder = series . Path + Path . DirectorySeparatorChar ;
if ( _configProvider . UseSeasonFolder )
folder + = _configProvider . SeasonFolderFormat
. Replace ( "%0s" , parseResult . SeasonNumber . ToString ( "00" ) )
. Replace ( "%s" , parseResult . SeasonNumber . ToString ( ) )
+ Path . DirectorySeparatorChar ;
_diskProvider . CreateDirectory ( folder ) ;
//Parse the filename
var parseResult = Parser . ParseEpisodeInfo ( Path . GetFileName ( file ) ) ;
parseResult . Series = series ;
parseResult . Episodes = _episodeProvider . GetEpisodes ( parseResult ) ;
if ( parseResult . Episodes . Count = = 0 )
{
Logger . Error ( "File '{0}' contains invalid episode information, skipping import" , file ) ;
continue ;
}
//Get a list of episodeFiles that we need to delete and cleanup
var episodeFilesToClean = new List < EpisodeFile > ( ) ;
var ext = _diskProvider . GetExtension ( file ) ;
var filename = GetNewFilename ( parseResult . Episodes , series . Title , parseResult . Quality . QualityType ) + ext ;
var folder = series . Path + Path . DirectorySeparatorChar ;
if ( _configProvider . UseSeasonFolder )
folder + = _configProvider . SeasonFolderFormat
. Replace ( "%0s" , parseResult . SeasonNumber . ToString ( "00" ) )
. Replace ( "%s" , parseResult . SeasonNumber . ToString ( ) )
+ Path . DirectorySeparatorChar ;
foreach ( var episode in parseResult . Episodes )
{
if ( episode . EpisodeFileId > 0 )
episodeFilesToClean . Add ( episode . EpisodeFile ) ;
_diskProvider . CreateDirectory ( folder ) ;
//Get a list of episodeFiles that we need to delete and cleanup
var episodeFilesToClean = new List < EpisodeFile > ( ) ;
foreach ( var episode in parseResult . Episodes )
{
if ( episode . EpisodeFileId > 0 )
episodeFilesToClean . Add ( episode . EpisodeFile ) ;
}
if ( episodeFilesToClean . Count ! = episodeFilesToClean . Where ( e = > parseResult . Quality . QualityType > = e . Quality ) . Count ( ) )
{
Logger . Debug ( "Episode isn't an upgrade for all episodes in file: [{0}]. Skipping." , file ) ;
continue ;
}
//Delete the files and then cleanup!
foreach ( var e in episodeFilesToClean )
{
if ( _diskProvider . FileExists ( e . Path ) )
_diskProvider . DeleteFile ( e . Path ) ;
}
CleanUp ( episodeFilesToClean ) ;
//Move the file
_diskProvider . RenameFile ( file , folder + filename ) ;
//Import into DB
result . Add ( ImportFile ( series , folder + filename ) ) ;
}
if ( episodeFilesToClean . Count ! = episodeFilesToClean . Where ( e = > parseResult . Quality . QualityType > = e . Quality ) . Count ( ) )
catch ( Exception ex )
{
Logger . Debug ( "Episode isn't an upgrade for all episodes in file: [{0}]. Skipping." , file ) ;
continue ;
Logger . WarnException ( "Error importing new download: " + file , ex ) ;
}
//Delete the files and then cleanup!
episodeFilesToClean . ForEach ( e = > _diskProvider . DeleteFile ( e . Path ) ) ;
CleanUp ( episodeFilesToClean ) ;
//Move the file
_diskProvider . RenameFile ( file , folder + filename ) ;
//Import into DB
result . Add ( ImportFile ( series , folder + filename ) ) ;
}
//If we have imported all the non-sample files, delete the folder, requires a minimum of 1 file to be imported.