public static Boolean Savev1tag(Track mytrack) { if (!File.Exists(mytrack.Filename)) { MessageBox.Show("File Does not exist " + mytrack.Filename); return(false); } try { var trackxml = new XMLutils(appPath + "\\trackxml.xml"); removeID3v1(mytrack.Filename); var id3 = new ID3v1Tag(mytrack.Filename); if (!String.IsNullOrEmpty(mytrack.Filename) && File.Exists(mytrack.Filename)) { id3.Album = mytrack.Album; id3.Artist = mytrack.Artist; id3.Title = mytrack.Title; if (mytrack.Trackno.Contains("/")) { id3.TrackNumber = Convert.ToInt16(mytrack.Trackno.Substring(0, mytrack.Trackno.IndexOf("/"))); } else { id3.TrackNumber = Convert.ToInt16(mytrack.Trackno); } id3.Year = mytrack.Year; id3.GenreIndex = GenreHelper.GetGenreIndex(mytrack.Genre); // id3.Comment = comment; id3.Save(mytrack.Filename); trackxml.ModifyRecord(mytrack); } if (ID3v1Tag.DoesTagExist(mytrack.Filename)) { trackxml.Updaterecord(mytrack.Filename); return(true); } else { return(false); } } catch (Exception ex) { MessageBox.Show(ex.Message); return(false); } }
/// <summary>Saves the tag to the specified path.</summary> /// <param name="path">The full path of the file.</param> private void Save(string path) { if (string.IsNullOrEmpty(path)) { throw new ArgumentNullException("path"); } if (VorbisComment.VorbisComment.IsFlac(path)) { VorbisComment.VorbisComment vc = new VorbisComment.VorbisComment(path); vc.Title = Title; vc.Artist = Artist; vc.Album = Album; vc.Year = Year; vc.Genre = Genre; vc.TrackNumber = TrackNumber; vc.Comment = Comment; vc.Save(path); ID3v2Tag.RemoveTag(path); ID3v1Tag.RemoveTag(path); } else { ID3v2Tag id3v2 = new ID3v2Tag(path); id3v2.Title = Title; id3v2.Artist = Artist; id3v2.Album = Album; id3v2.Year = Year; id3v2.Genre = Genre; id3v2.TrackNumber = TrackNumber; if (id3v2.CommentsList.Count > 0) { id3v2.CommentsList[0].Description = Comment; } else { if (!string.IsNullOrEmpty(Comment)) { id3v2.CommentsList.AddNew().Description = Comment; } } ID3v1Tag id3v1 = new ID3v1Tag(path); id3v1.Title = Title; id3v1.Artist = Artist; id3v1.Album = Album; id3v1.Year = Year; id3v1.GenreIndex = GenreHelper.GetGenreIndex(Genre); id3v1.Comment = Comment; int trackNumber; if (int.TryParse(TrackNumber, out trackNumber)) { id3v1.TrackNumber = trackNumber; } else { // Handle ##/## format if (TrackNumber.Contains("/")) { if (int.TryParse(TrackNumber.Split('/')[0], out trackNumber)) { id3v1.TrackNumber = trackNumber; } else { id3v1.TrackNumber = 0; } } else { id3v1.TrackNumber = 0; } } id3v2.Save(path); id3v1.Save(path); } Read(path); }
private void CopyAndSplitMP3s(bool p_bIsReSpliting = false) { // Get the Split size in bytes (from megabytes) Int64 iSplitSize = ((Convert.ToInt64(numSplitSize.Value /* Megabytes */) * 1024 /* Kilobytes */) * 1024 /* Bytes */); if (!p_bIsReSpliting) { if (chkSplitRandomly.Checked) { if (!bCopyCompletedOnce) { iaRandOrder = new int[finalTrackList.Count]; for (int i = 0; i < iaRandOrder.Length; i++) { iaRandOrder[i] = i; } Shuffle(iaRandOrder); } orderedTrackList = new List <Track>(); foreach (int iIndx in iaRandOrder) { orderedTrackList.Add(finalTrackList[iIndx]); } iaRandOrder = null; } else { orderedTrackList = finalTrackList; } } // Split the MP3s into Size folders Int64 iCurrentTotalSize = 0; int iSplitCount = 1; int iTrackCount = 0; foreach (Track rwTrack in orderedTrackList) { if (chkSplitSize.Checked && (iCurrentTotalSize + rwTrack.FileSize) > iSplitSize) { iCurrentTotalSize = 0; iSplitCount++; } // Copy MP3s into Folder FileInfo oFile = new FileInfo(rwTrack.FileName); string sDestFolder = Path.Combine(txtDestFolder.Text, (chkSplitSize.Checked ? "Disc_" + iSplitCount.ToString("D2") : "")); if (!Directory.Exists(sDestFolder)) { Directory.CreateDirectory(sDestFolder); } string sDestPath = Path.Combine(sDestFolder, rwTrack.DestFileName); if (!File.Exists(sDestPath)) { oFile.CopyTo(sDestPath); // Now that we have a copy of the MP3 file we should re-tag it to match the tags retrieved from Rainwave. // The Rainwave tags are much better than the OCRemix tags!! IID3v1Tag id3v1 = new ID3v1Tag(sDestPath); id3v1.Album = rwTrack.Album; id3v1.Artist = rwTrack.Artist; id3v1.Title = rwTrack.Title; id3v1.Save(sDestPath); IID3v2Tag id3v2 = new ID3v2Tag(sDestPath); id3v2.Album = rwTrack.Album; id3v2.Artist = rwTrack.Artist; id3v2.Title = rwTrack.Title; id3v2.Save(sDestPath); if (chkSplitSize.Checked) { iCurrentTotalSize += rwTrack.FileSize; } iTrackCount++; UpdateFolderProgress(iTrackCount, orderedTrackList.Count); } } bCopyCompletedOnce = true; }