public Dictionary <string, Album> create(string[] files) { Dictionary <string, Album> dict = new Dictionary <string, Album>(); int i = 1; foreach (string file in files) { progressListener.notifyProgress(files.Length, i++); try { using (MusicTag tagFile = MusicTagFactory.create(file)) { if (tagFile.Disc == 0 || tagFile.DiscCount == 0 || tagFile.Track == 0 || tagFile.TrackCount == 0) { continue; } Album al; if (!dict.ContainsKey(tagFile.AlbumTitle)) { dict[tagFile.AlbumTitle] = new Album(tagFile.AlbumTitle, tagFile.DiscCount); } al = dict[tagFile.AlbumTitle]; al.addTrack(tagFile.Disc, tagFile.Track, tagFile.TrackCount, tagFile.Title, file, tagFile.Artist); } } catch (Exception) { continue; } } return(dict); }
/// <summary> /// トラック番号を再採番する。 /// 第1ソートキーをディスク番号、第2ソートキーをトラック番号として1から順に再採番する。 /// </summary> /// <param name="album">再採番するアルバム</param> public void reset(Album album) { uint newTrack = 1; for (uint i = 1; album != null && i <= album.DiscCount; ++i) { Disc disc = album.getDisc(i); for (uint j = 1; disc != null && j <= disc.TrackCount; ++j) { Track track = disc.getTrack(j); if (track == null) { continue; } using (MusicTag tagFile = MusicTagFactory.create(track.FilePath)) { tagFile.Track = newTrack++; tagFile.TrackCount = album.AllTrackCount; tagFile.save(); } } } }