mirror of https://github.com/lidarr/Lidarr
Only process cue-originated audio files if there is any.
(cherry picked from commit 4afaf5f058c682d7f2e1d7a9b51588dcd588b873)
This commit is contained in:
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 =>
|
||||
{
|
||||
if (cueSheetInfo.IsForMediaFile(item.Item.Path))
|
||||
{
|
||||
item.Item.CueSheetPath = cueSheetInfo.CueSheet.Path;
|
||||
}
|
||||
});
|
||||
audioFilesForCues.AddRange(cueSheetInfo.MusicFiles);
|
||||
}
|
||||
|
||||
mediaFileList.RemoveAll(x => cueSheetInfo.MusicFiles.Contains(x));
|
||||
decisions.AddRange(_importDecisionMaker.GetImportDecisions(audioFilesForCues, cueSheetInfoGroup.First().IdOverrides, itemInfo, config, cueSheetInfos));
|
||||
|
||||
foreach (var cueSheetInfo in cueSheetInfos)
|
||||
{
|
||||
if (cueSheetInfo.CueSheet != null)
|
||||
{
|
||||
decisions.ForEach(item =>
|
||||
{
|
||||
if (cueSheetInfo.IsForMediaFile(item.Item.Path))
|
||||
{
|
||||
item.Item.CueSheetPath = cueSheetInfo.CueSheet.Path;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
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…
Reference in New Issue