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

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

@ -99,39 +99,42 @@ namespace NzbDrone.Core.MediaFiles
var decisions = new List<ImportDecision<LocalTrack>>(); var decisions = new List<ImportDecision<LocalTrack>>();
var cueFiles = mediaFileList.Where(x => x.Extension.Equals(".cue")).ToList(); var cueFiles = mediaFileList.Where(x => x.Extension.Equals(".cue")).ToList();
mediaFileList.RemoveAll(l => cueFiles.Contains(l)); if (cueFiles.Count > 0)
var cueSheetInfos = new List<CueSheetInfo>();
foreach (var cueFile in cueFiles)
{ {
var cueSheetInfo = _importDecisionMaker.GetCueSheetInfo(cueFile, mediaFileList); mediaFileList.RemoveAll(l => cueFiles.Contains(l));
cueSheetInfos.Add(cueSheetInfo); var cueSheetInfos = new List<CueSheetInfo>();
} foreach (var cueFile in cueFiles)
var cueSheetInfosGroupedByDiscId = cueSheetInfos.GroupBy(x => x.CueSheet.DiscID).ToList();
foreach (var cueSheetInfoGroup in cueSheetInfosGroupedByDiscId)
{
var audioFilesForCues = new List<IFileInfo>();
foreach (var cueSheetInfo in cueSheetInfoGroup)
{ {
audioFilesForCues.AddRange(cueSheetInfo.MusicFiles); var cueSheetInfo = _importDecisionMaker.GetCueSheetInfo(cueFile, mediaFileList);
cueSheetInfos.Add(cueSheetInfo);
} }
decisions.AddRange(_importDecisionMaker.GetImportDecisions(audioFilesForCues, cueSheetInfoGroup.First().IdOverrides, itemInfo, config, cueSheetInfos)); var cueSheetInfosGroupedByDiscId = cueSheetInfos.GroupBy(x => x.CueSheet.DiscID).ToList();
foreach (var cueSheetInfoGroup in cueSheetInfosGroupedByDiscId)
foreach (var cueSheetInfo in cueSheetInfos)
{ {
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 // Split cue and non-cue files
var cueFiles = audioFiles.Where(x => x.Extension.Equals(".cue")).ToList(); var cueFiles = audioFiles.Where(x => x.Extension.Equals(".cue")).ToList();
audioFiles.RemoveAll(l => cueFiles.Contains(l)); if (cueFiles.Count > 0)
var cueSheetInfos = new List<CueSheetInfo>();
foreach (var cueFile in cueFiles)
{ {
var cueSheetInfo = _importDecisionMaker.GetCueSheetInfo(cueFile, audioFiles); audioFiles.RemoveAll(l => cueFiles.Contains(l));
cueSheetInfos.Add(cueSheetInfo); 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(); var cueSheetInfosGroupedByDiscId = cueSheetInfos.GroupBy(x => x.CueSheet.DiscID).ToList();
foreach (var cueSheetInfoGroup in cueSheetInfosGroupedByDiscId) foreach (var cueSheetInfoGroup in cueSheetInfosGroupedByDiscId)
{ {
var manualImportItems = ProcessFolder(downloadId, filter, replaceExistingFiles, downloadClientItem, cueSheetInfoGroup.ToList()); var manualImportItems = ProcessFolder(downloadId, filter, replaceExistingFiles, downloadClientItem, cueSheetInfoGroup.ToList());
results.AddRange(manualImportItems); results.AddRange(manualImportItems);
RemoveProcessedAudioFiles(audioFiles, cueSheetInfos, manualImportItems); RemoveProcessedAudioFiles(audioFiles, cueSheetInfos, manualImportItems);
}
} }
var idOverrides = new IdentificationOverrides 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); if (audioFilesForCues.Count > 0)
var manualImportItems = UpdateItems(group, singleFileReleaseDecisions, replaceExistingFiles, disableReleaseSwitching); {
result.AddRange(manualImportItems); 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 var idOverride = new IdentificationOverrides
{ {

Loading…
Cancel
Save