public List <LocalEdition> GetLocalBookReleases(List <LocalBook> localTracks, bool singleRelease) { var watch = System.Diagnostics.Stopwatch.StartNew(); List <LocalEdition> releases; if (singleRelease) { releases = new List <LocalEdition> { new LocalEdition(localTracks) }; } else { releases = _trackGroupingService.GroupTracks(localTracks); } _logger.Debug($"Sorted {localTracks.Count} tracks into {releases.Count} releases in {watch.ElapsedMilliseconds}ms"); foreach (var localRelease in releases) { try { _augmentingService.Augment(localRelease); } catch (AugmentingFailedException) { _logger.Warn($"Augmentation failed for {localRelease}"); } } return(releases); }
public List <LocalAlbumRelease> Identify(List <LocalTrack> localTracks, Artist artist, Album album, AlbumRelease release, bool newDownload, bool singleRelease, bool includeExisting) { // 1 group localTracks so that we think they represent a single release // 2 get candidates given specified artist, album and release. Candidates can include extra files already on disk. // 3 find best candidate // 4 If best candidate worse than threshold, try fingerprinting var watch = System.Diagnostics.Stopwatch.StartNew(); _logger.Debug("Starting track identification"); LogTestCaseOutput(localTracks, artist, album, release, newDownload, singleRelease); List <LocalAlbumRelease> releases = null; if (singleRelease) { releases = new List <LocalAlbumRelease> { new LocalAlbumRelease(localTracks) }; } else { releases = _trackGroupingService.GroupTracks(localTracks); } _logger.Debug($"Sorted {localTracks.Count} tracks into {releases.Count} releases in {watch.ElapsedMilliseconds}ms"); foreach (var localRelease in releases) { try { _augmentingService.Augment(localRelease); } catch (AugmentingFailedException) { _logger.Warn($"Augmentation failed for {localRelease}"); } IdentifyRelease(localRelease, artist, album, release, newDownload, includeExisting); } watch.Stop(); _logger.Debug($"Track identification for {localTracks.Count} tracks took {watch.ElapsedMilliseconds}ms"); return(releases); }