protected (CatalogueStatus status, IEnumerable <Track> tracks) CatalogueTracks(Artist artist, Work album) { Debug.Assert(MusicDb != null); var tracks = new List <Track>(); var result = CatalogueStatus.Success; if (!generated || MusicOptions.AllowOutOfDateGeneratedFiles || album.LastModified < FirstFile.FileLastWriteTimeUtc) { var filesByPart = MusicFiles.GroupBy(x => x.PartNumber); int count = 0; foreach (var group in filesByPart.OrderBy(x => x.Key)) { var files = group.Select(x => x).ToArray(); //foreach(var mf in files) for (int i = 0; i < files.Count(); ++i) { var mf = files[i]; var track = GetTrack(artist, album, mf, i, count); tracks.Add(track); } count += files.Count(); } //foreach (var mf in MusicFiles) //{ // var track = GetTrack(artist, album, mf); // tracks.Add(track); //} } else { // generated files are older than the album record // and may be out of date var path = Path.Combine(FirstFile.DiskRoot, FirstFile.StylePath, FirstFile.OpusPath); log.Warning($"{MusicFiles.Count()} files in {path} are generated and possibly out-of-date - files not catalogued"); result = CatalogueStatus.GeneratedFilesOutOfDate; if (album.Tracks.Count() == 0) { artist.Works.Remove(album); if (artist.Works.Count() == 0) { MusicDb.Artists.Remove(artist); } } } return(result, tracks); }
public override string ToString() { return($"{this.GetType().Name}::{ComposerName}::{CompositionName}::{MusicFiles.Count()} files"); }
public override string ToString() { return($"{this.GetType().Name}::{ArtistName}::{AlbumName}::{MusicFiles.Count()} files"); }