Only process cue-originated audio files if there is any.

(cherry picked from commit 4afaf5f058c682d7f2e1d7a9b51588dcd588b873)
pull/4200/head
zhangdoa 7 months ago
parent 1f9adce15d
commit 14bf91360a

@ -99,39 +99,42 @@ namespace NzbDrone.Core.MediaFiles
var decisions = new List<ImportDecision<LocalTrack>>();
var cueFiles = mediaFileList.Where(x => x.Extension.Equals(".cue")).ToList();
mediaFileList.RemoveAll(l => cueFiles.Contains(l));
var cueSheetInfos = new List<CueSheetInfo>();
foreach (var cueFile in cueFiles)
if (cueFiles.Count > 0)
{
var cueSheetInfo = _importDecisionMaker.GetCueSheetInfo(cueFile, mediaFileList);
cueSheetInfos.Add(cueSheetInfo);
}
var cueSheetInfosGroupedByDiscId = cueSheetInfos.GroupBy(x => x.CueSheet.DiscID).ToList();
foreach (var cueSheetInfoGroup in cueSheetInfosGroupedByDiscId)
{
var audioFilesForCues = new List<IFileInfo>();
foreach (var cueSheetInfo in cueSheetInfoGroup)
mediaFileList.RemoveAll(l => cueFiles.Contains(l));
var cueSheetInfos = new List<CueSheetInfo>();
foreach (var cueFile in cueFiles)
{
audioFilesForCues.AddRange(cueSheetInfo.MusicFiles);
var cueSheetInfo = _importDecisionMaker.GetCueSheetInfo(cueFile, mediaFileList);
cueSheetInfos.Add(cueSheetInfo);
}
decisions.AddRange(_importDecisionMaker.GetImportDecisions(audioFilesForCues, cueSheetInfoGroup.First().IdOverrides, itemInfo, config, cueSheetInfos));
foreach (var cueSheetInfo in cueSheetInfos)
var cueSheetInfosGroupedByDiscId = cueSheetInfos.GroupBy(x => x.CueSheet.DiscID).ToList();
foreach (var cueSheetInfoGroup in cueSheetInfosGroupedByDiscId)
{
if (cueSheetInfo.CueSheet != null)
var audioFilesForCues = new List<IFileInfo>();
foreach (var cueSheetInfo in cueSheetInfoGroup)
{
decisions.ForEach(item =>
audioFilesForCues.AddRange(cueSheetInfo.MusicFiles);
}
decisions.AddRange(_importDecisionMaker.GetImportDecisions(audioFilesForCues, cueSheetInfoGroup.First().IdOverrides, itemInfo, config, cueSheetInfos));
foreach (var cueSheetInfo in cueSheetInfos)
{
if (cueSheetInfo.CueSheet != null)
{
if (cueSheetInfo.IsForMediaFile(item.Item.Path))
decisions.ForEach(item =>
{
item.Item.CueSheetPath = cueSheetInfo.CueSheet.Path;
}
});
if (cueSheetInfo.IsForMediaFile(item.Item.Path))
{
item.Item.CueSheetPath = cueSheetInfo.CueSheet.Path;
}
});
}
mediaFileList.RemoveAll(x => cueSheetInfo.MusicFiles.Contains(x));
}
mediaFileList.RemoveAll(x => cueSheetInfo.MusicFiles.Contains(x));
}
}

@ -155,21 +155,24 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Manual
// Split cue and non-cue files
var cueFiles = audioFiles.Where(x => x.Extension.Equals(".cue")).ToList();
audioFiles.RemoveAll(l => cueFiles.Contains(l));
var cueSheetInfos = new List<CueSheetInfo>();
foreach (var cueFile in cueFiles)
if (cueFiles.Count > 0)
{
var cueSheetInfo = _importDecisionMaker.GetCueSheetInfo(cueFile, audioFiles);
cueSheetInfos.Add(cueSheetInfo);
}
audioFiles.RemoveAll(l => cueFiles.Contains(l));
var cueSheetInfos = new List<CueSheetInfo>();
foreach (var cueFile in cueFiles)
{
var cueSheetInfo = _importDecisionMaker.GetCueSheetInfo(cueFile, audioFiles);
cueSheetInfos.Add(cueSheetInfo);
}
var cueSheetInfosGroupedByDiscId = cueSheetInfos.GroupBy(x => x.CueSheet.DiscID).ToList();
foreach (var cueSheetInfoGroup in cueSheetInfosGroupedByDiscId)
{
var manualImportItems = ProcessFolder(downloadId, filter, replaceExistingFiles, downloadClientItem, cueSheetInfoGroup.ToList());
results.AddRange(manualImportItems);
var cueSheetInfosGroupedByDiscId = cueSheetInfos.GroupBy(x => x.CueSheet.DiscID).ToList();
foreach (var cueSheetInfoGroup in cueSheetInfosGroupedByDiscId)
{
var manualImportItems = ProcessFolder(downloadId, filter, replaceExistingFiles, downloadClientItem, cueSheetInfoGroup.ToList());
results.AddRange(manualImportItems);
RemoveProcessedAudioFiles(audioFiles, cueSheetInfos, manualImportItems);
RemoveProcessedAudioFiles(audioFiles, cueSheetInfos, manualImportItems);
}
}
var idOverrides = new IdentificationOverrides
@ -293,11 +296,15 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Manual
}
}
var singleFileReleaseDecisions = _importDecisionMaker.GetImportDecisions(audioFilesForCues, cueSheetInfos[0].IdOverrides, itemInfo, config, cueSheetInfos);
var manualImportItems = UpdateItems(group, singleFileReleaseDecisions, replaceExistingFiles, disableReleaseSwitching);
result.AddRange(manualImportItems);
if (audioFilesForCues.Count > 0)
{
var idOverrides = cueSheetInfos.Count > 0 ? cueSheetInfos[0].IdOverrides : null;
var singleFileReleaseDecisions = _importDecisionMaker.GetImportDecisions(audioFilesForCues, idOverrides, itemInfo, config, cueSheetInfos);
var manualImportItems = UpdateItems(group, singleFileReleaseDecisions, replaceExistingFiles, disableReleaseSwitching);
result.AddRange(manualImportItems);
RemoveProcessedAudioFiles(audioFiles, cueSheetInfos, manualImportItems);
RemoveProcessedAudioFiles(audioFiles, cueSheetInfos, manualImportItems);
}
var idOverride = new IdentificationOverrides
{

Loading…
Cancel
Save